PluginProbe
Packeta / 2.1
Packeta v2.1
2.3.2 2.3.1 trunk 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3.0 1.3.1 1.3.2 1.4 1.4.1 1.4.2 1.4.3 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 All 56 releases
← All changes | src/Packetery/Module/QueryProcessor.php +65 -28 1.5.22.1 View file →
@@ -6,12 +6,11 @@
6 6 */
7 7
8 8 declare( strict_types=1 );
9 9
10 -
11 10 namespace Packetery\Module;
12 11
13 -use PacketeryNette\Http\Request;
12 +use Packetery\Nette\Http\Request;
14 13
15 14 /**
16 15 * Class QueryProcessor
17 16 */
@@ -31,16 +30,25 @@
31 30 */
32 31 private $orderRepository;
33 32
34 33 /**
34 + * Context resolver.
35 + *
36 + * @var ContextResolver
37 + */
38 + private $contextResolver;
39 +
40 + /**
35 41 * Constructor.
36 42 *
37 43 * @param Request $httpRequest HTTP request.
38 44 * @param Order\Repository $orderRepository Order repository.
45 + * @param ContextResolver $contextResolver Context resolver.
39 46 */
40 - public function __construct( Request $httpRequest, Order\Repository $orderRepository ) {
47 + public function __construct( Request $httpRequest, Order\Repository $orderRepository, ContextResolver $contextResolver ) {
41 48 $this->httpRequest = $httpRequest;
42 49 $this->orderRepository = $orderRepository;
50 + $this->contextResolver = $contextResolver;
43 51 }
44 52
45 53 /**
46 54 * Registers service.
@@ -47,9 +55,10 @@
47 55 *
48 56 * @return void
49 57 */
50 58 public function register(): void {
51 - add_filter( 'posts_clauses', [ $this, 'processPostClauses' ], 10, 2 );
59 + add_filter( 'posts_clauses', [ $this, 'processClauses' ], 10, 2 );
60 + add_filter( 'woocommerce_orders_table_query_clauses', [ $this, 'processHposClauses' ] );
52 61 }
53 62
54 63 /**
55 64 * Extends WP_Query to include custom table.
@@ -55,44 +64,72 @@
55 64 * Extends WP_Query to include custom table.
56 65 *
57 66 * @link https://wordpress.stackexchange.com/questions/50305/how-to-extend-wp-query-to-include-custom-table-in-query
58 67 *
59 - * @param array $clauses Clauses.
60 - * @param \WP_Query $queryObject WP_Query.
68 + * @param array<string, string> $clauses Clauses.
69 + * @param \WP_Query $queryObject WP_Query.
61 70 *
62 - * @return array
71 + * @return array<string, string>
63 72 */
64 - public function processPostClauses( array $clauses, \WP_Query $queryObject ): array {
65 - $paramValues = [
66 - 'packetery_carrier_id' => null,
67 - 'packetery_to_submit' => null,
68 - 'packetery_to_print' => null,
69 - 'packetery_order_type' => null,
70 - ];
73 + public function processClauses( array $clauses, \WP_Query $queryObject ): array {
74 + if ( $this->contextResolver->isOrderGridPage() === false ) {
75 + return $clauses;
76 + }
71 77
72 - foreach ( $paramValues as $key => $value ) {
73 - $paramValues[ $key ] = $this->getParamValue( $queryObject, $key );
78 + $isOrderPostQueryCall =
79 + isset( $queryObject->query['post_type'] ) &&
80 + (
81 + $queryObject->query['post_type'] === 'shop_order' ||
82 + ( is_array( $queryObject->query['post_type'] ) && in_array( 'shop_order', $queryObject->query['post_type'], true ) )
83 + );
84 + if ( $isOrderPostQueryCall === false ) {
85 + return $clauses;
74 86 }
75 87
76 - return $this->orderRepository->processPostClauses( $clauses, $queryObject, $paramValues );
88 + return $this->orderRepository->processClauses(
89 + $clauses,
90 + $queryObject,
91 + $this->getParamValues()
92 + );
77 93 }
78 94
79 95 /**
80 - * Gets parameter value from GET data or WP_Query.
96 + * Extends High-Performance order storage grid filters.
81 97 *
82 - * @param \WP_Query $queryObject WP_Query.
83 - * @param string $key Key.
98 + * @param array<string, string> $clauses Clauses.
84 99 *
85 - * @return mixed|null
100 + * @return array<string, string>
86 101 */
87 - private function getParamValue( \WP_Query $queryObject, string $key ) {
88 - $get = $this->httpRequest->getQuery();
89 - if ( isset( $get[ $key ] ) && '' !== (string) $get[ $key ] ) {
90 - return $get[ $key ];
102 + public function processHposClauses( array $clauses ): array {
103 + if ( $this->contextResolver->isOrderGridPage() === false ) {
104 + return $clauses;
91 105 }
92 - if ( isset( $queryObject->query[ $key ] ) && '' !== (string) $queryObject->query[ $key ] ) {
93 - return $queryObject->query[ $key ];
106 +
107 + return $this->orderRepository->processClauses(
108 + $clauses,
109 + null,
110 + $this->getParamValues()
111 + );
112 + }
113 +
114 + /**
115 + * Gets param values.
116 + *
117 + * @return array<string,null>
118 + */
119 + private function getParamValues(): array {
120 + $paramValues = [
121 + 'packetery_carrier_id' => null,
122 + 'packetery_to_submit' => null,
123 + 'packetery_to_print' => null,
124 + 'packetery_order_type' => null,
125 + 'orderby' => null,
126 + 'order' => null,
127 + ];
128 +
129 + foreach ( $paramValues as $key => $value ) {
130 + $paramValues[ $key ] = $this->httpRequest->getQuery( $key );
94 131 }
95 132
96 - return null;
133 + return $paramValues;
97 134 }
98 135 }