PluginProbe
Packeta / 2.0.9
Packeta v2.0.9
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
packeta / src / Packetery / Module / QueryProcessor.php

QueryProcessor.php in Packeta 2.0.9, at src/Packetery/Module/QueryProcessor.php

136 lines 3.0 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Class QueryProcessor
4 *
5 * @package Packetery
6 */
7
8 declare( strict_types=1 );
9
10 namespace Packetery\Module;
11
12 use Packetery\Nette\Http\Request;
13
14 /**
15 * Class QueryProcessor
16 */
17 class QueryProcessor {
18
19 /**
20 * HTTP request.
21 *
22 * @var Request
23 */
24 private $httpRequest;
25
26 /**
27 * Order repository.
28 *
29 * @var \Packetery\Module\Order\Repository
30 */
31 private $orderRepository;
32
33 /**
34 * Context resolver.
35 *
36 * @var ContextResolver
37 */
38 private $contextResolver;
39
40 /**
41 * Constructor.
42 *
43 * @param Request $httpRequest HTTP request.
44 * @param Order\Repository $orderRepository Order repository.
45 * @param ContextResolver $contextResolver Context resolver.
46 */
47 public function __construct( Request $httpRequest, Order\Repository $orderRepository, ContextResolver $contextResolver ) {
48 $this->httpRequest = $httpRequest;
49 $this->orderRepository = $orderRepository;
50 $this->contextResolver = $contextResolver;
51 }
52
53 /**
54 * Registers service.
55 *
56 * @return void
57 */
58 public function register(): void {
59 add_filter( 'posts_clauses', [ $this, 'processClauses' ], 10, 2 );
60 add_filter( 'woocommerce_orders_table_query_clauses', [ $this, 'processHposClauses' ] );
61 }
62
63 /**
64 * Extends WP_Query to include custom table.
65 *
66 * @link https://wordpress.stackexchange.com/questions/50305/how-to-extend-wp-query-to-include-custom-table-in-query
67 *
68 * @param array<string, string> $clauses Clauses.
69 * @param \WP_Query $queryObject WP_Query.
70 *
71 * @return array<string, string>
72 */
73 public function processClauses( array $clauses, \WP_Query $queryObject ): array {
74 if ( $this->contextResolver->isOrderGridPage() === false ) {
75 return $clauses;
76 }
77
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;
86 }
87
88 return $this->orderRepository->processClauses(
89 $clauses,
90 $queryObject,
91 $this->getParamValues()
92 );
93 }
94
95 /**
96 * Extends High-Performance order storage grid filters.
97 *
98 * @param array<string, string> $clauses Clauses.
99 *
100 * @return array<string, string>
101 */
102 public function processHposClauses( array $clauses ): array {
103 if ( $this->contextResolver->isOrderGridPage() === false ) {
104 return $clauses;
105 }
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 );
131 }
132
133 return $paramValues;
134 }
135 }
136