FileMaster
Search
Toggle Dark Mode
Home
/
.
/
wp-content
/
plugins
/
woocommerce
/
src
/
RestApi
/
Routes
/
V4
/
OrderNotes
Edit File: CollectionQuery.php
<?php /** * CollectionQuery class. * * @package WooCommerce\RestApi * @internal This file is for internal use only and should not be used by external code. */ declare( strict_types=1 ); namespace Automattic\WooCommerce\RestApi\Routes\V4\OrderNotes; defined( 'ABSPATH' ) || exit; use Automattic\WooCommerce\RestApi\Routes\V4\AbstractCollectionQuery; use WP_REST_Request; use WC_Order; /** * CollectionQuery class. * * @internal This class is for internal use only and should not be used by external code. */ final class CollectionQuery extends AbstractCollectionQuery { /** * Get query schema. * * @return array */ public function get_query_schema(): array { return array( 'note_type' => array( 'default' => 'all', 'description' => __( 'Limit result to customer notes or private notes.', 'woocommerce' ), 'type' => 'string', 'enum' => array( 'all', 'customer', 'private' ), 'sanitize_callback' => 'sanitize_key', 'validate_callback' => 'rest_validate_request_arg', ), ); } /** * Prepares query args. * * @param WP_REST_Request $request The request object. * @return array */ public function get_query_args( WP_REST_Request $request ): array { $args = array( 'post_id' => $request['order_id'] ?? 0, 'status' => 'approve', 'type' => 'order_note', ); // Allow filter by order note type. if ( 'customer' === $request['note_type'] ) { $args['meta_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query array( 'key' => 'is_customer_note', 'value' => 1, 'compare' => '=', ), ); } elseif ( 'private' === $request['note_type'] ) { $args['meta_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query array( 'key' => 'is_customer_note', 'compare' => 'NOT EXISTS', ), ); } return $args; } /** * Get results of the query. * * @param array $query_args The query arguments. * @param WP_REST_Request $request The request object. * @return array */ public function get_query_results( array $query_args, WP_REST_Request $request ): array { remove_filter( 'comments_clauses', array( 'WC_Comments', 'exclude_order_comments' ), 10, 1 ); $results = get_comments( $query_args ); add_filter( 'comments_clauses', array( 'WC_Comments', 'exclude_order_comments' ), 10, 1 ); return (array) $results; } }
Save
Back