{$key}; break; } if ( $this->show_notices ) { _doing_it_wrong( 'get_post_meta()', 'All log postmeta has been deprecated since Easy Digital Downloads 3.0! Use edd_get_api_request_log() instead.', 'EDD 3.0' ); if ( $this->show_backtrace ) { $backtrace = debug_backtrace(); trigger_error( print_r( $backtrace, 1 ) ); } } return $value; } /** * Listen for calls to update_post_meta for API request logs and see if we need to filter them. * * This is here for backwards compatibility purposes with the migration to custom tables in EDD 3.0. * * @since 3.0 * * @param mixed $check Comes in 'null' but if returned not null, WordPress Core will not interact with the * postmeta table. * @param int $object_id The object ID post meta was requested for. * @param string $meta_key The meta key requested. * @param mixed $meta_value The value get_post_meta would return if we don't filter. * @param mixed $prev_value The previous value of the meta. * @return mixed Returns 'null' if no action should be taken and WordPress core can continue, or non-null to avoid postmeta. */ public function api_request_log_update_post_meta( $check, $object_id, $meta_key, $meta_value, $prev_value ) { $meta_keys = array( '_edd_log_request_ip', '_edd_log_user', '_edd_log_key', '_edd_log_token', '_edd_log_time', '_edd_log_version', ); if ( ! in_array( $meta_key, $meta_keys, true ) ) { return $check; } $api_request_log = edd_get_api_request_log( $object_id ); if ( ! $api_request_log ) { return $check; } switch ( $meta_key ) { case '_edd_log_request_ip': case '_edd_log_user': case '_edd_log_key': case '_edd_log_token': case '_edd_log_time': case '_edd_log_version': $key = str_replace( '_edd_log_', '', $meta_key ); switch ( $key ) { case 'request_ip': $key = 'ip'; break; case 'key': $key = 'api_key'; break; case 'user': $key = 'user_id'; break; } $check = edd_update_api_request_log( $object_id, array( $key => $meta_value, ) ); break; } if ( $this->show_notices ) { _doing_it_wrong( 'add_post_meta()/update_post_meta()', 'All log postmeta has been deprecated since Easy Digital Downloads 3.0! Use edd_add_order_meta()/edd_update_order_meta()() instead.', 'EDD 3.0' ); if ( $this->show_backtrace ) { $backtrace = debug_backtrace(); trigger_error( print_r( $backtrace, 1 ) ); } } return $check; } /** * Backwards compatibility filters for get_post_meta() calls on file download logs. * * @since 3.0 * * @param mixed $value The value get_post_meta would return if we don't filter. * @param int $object_id The object ID post meta was requested for. * @param string $meta_key The meta key requested. * @param bool $single If a single value or an array of the value is requested. * * @return mixed The value to return. */ public function file_download_log_get_post_meta( $value, $object_id, $meta_key, $single ) { if ( 'get_post_metadata' !== current_filter() ) { $message = __( 'This function is not meant to be called directly. It is only here for backwards compatibility purposes.', 'easy-digital-downloads' ); _doing_it_wrong( __FUNCTION__, $message, 'EDD 3.0' ); } $meta_keys = array( '_edd_log_user_info', '_edd_log_user_id', '_edd_log_file_id', '_edd_log_ip', '_edd_log_payment_id', '_edd_log_price_id', '_edd_log_customer_id', ); if ( ! in_array( $meta_key, $meta_keys, true ) ) { return $value; } $file_download_log = edd_get_file_download_log( $object_id ); if ( ! $file_download_log ) { return $value; } switch ( $meta_key ) { case '_edd_log_user_id': case '_edd_log_file_id': case '_edd_log_ip': case '_edd_log_payment_id': case '_edd_log_price_id': case '_edd_log_customer_id': $key = str_replace( '_edd_log_', '', $meta_key ); switch ( $key ) { case 'request_ip': $key = 'ip'; break; case 'key': $key = 'api_key'; break; case 'user': $key = 'user_id'; break; case 'payment_id': $key = 'order_id'; break; } if ( isset( $file_download_log->{$key} ) ) { $value = $file_download_log->{$key}; } if ( 'user_id' === $key ) { $customer = new \EDD_Customer( $file_download_log->customer_id ); $value = ! empty( $customer->user_id ) ? $customer->user_id : 0; } break; } if ( $this->show_notices ) { _doing_it_wrong( 'get_post_meta()', __( 'All log postmeta has been deprecated since Easy Digital Downloads 3.0! Use edd_get_api_request_log() instead.', 'easy-digital-downloads' ), 'EDD 3.0' ); if ( $this->show_backtrace ) { $backtrace = debug_backtrace(); trigger_error( print_r( $backtrace, 1 ) ); } } return $value; } /** * Listen for calls to update_post_meta for file download logs and see if we need to filter them. * * This is here for backwards compatibility purposes with the migration to custom tables in EDD 3.0. * * @since 3.0 * * @param mixed $check Comes in 'null' but if returned not null, WordPress Core will not interact with * the postmeta table. * @param int $object_id The object ID post meta was requested for. * @param string $meta_key The meta key requested. * @param mixed $meta_value The value get_post_meta would return if we don't filter. * @param mixed $prev_value The previous value of the meta * * @return mixed Returns 'null' if no action should be taken and WordPress core can continue, or non-null to avoid postmeta */ public function file_download_log_update_post_meta( $check, $object_id, $meta_key, $meta_value, $prev_value ) { $meta_keys = array( '_edd_log_user_info', '_edd_log_user_id', '_edd_log_file_id', '_edd_log_ip', '_edd_log_payment_id', '_edd_log_price_id', '_edd_log_customer_id', ); if ( ! in_array( $meta_key, $meta_keys, true ) ) { return $check; } $file_download_log = edd_get_file_download_log( $object_id ); if ( ! $file_download_log ) { return $check; } switch ( $meta_key ) { case '_edd_log_user_id': case '_edd_log_file_id': case '_edd_key_ip': case '_edd_log_payment_id': case '_edd_log_price_id': case '_edd_log_customer_id': $key = str_replace( '_edd_log_', '', $meta_key ); if ( 'payment_id' === $key ) { $key = 'order_id'; } $check = edd_update_file_download_log( $object_id, array( $key => $meta_value, ) ); break; } return $check; } }