PluginProbe
Packeta / 1.6.3
Packeta v1.6.3
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 1.6.3, at src/Packetery/Module/QueryProcessor.php

135 lines 2.8 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
11 namespace Packetery\Module;
12
13 use Packetery\Nette\Http\Request;
14
15 /**
16 * Class QueryProcessor
17 */
18 class QueryProcessor {
19
20 /**
21 * HTTP request.
22 *
23 * @var Request
24 */
25 private $httpRequest;
26
27 /**
28 * Order repository.
29 *
30 * @var \Packetery\Module\Order\Repository
31 */
32 private $orderRepository;
33
34 /**
35 * Context resolver.
36 *
37 * @var ContextResolver
38 */
39 private $contextResolver;
40
41 /**
42 * Constructor.
43 *
44 * @param Request $httpRequest HTTP request.
45 * @param Order\Repository $orderRepository Order repository.
46 * @param ContextResolver $contextResolver Context resolver.
47 */
48 public function __construct( Request $httpRequest, Order\Repository $orderRepository, ContextResolver $contextResolver ) {
49 $this->httpRequest = $httpRequest;
50 $this->orderRepository = $orderRepository;
51 $this->contextResolver = $contextResolver;
52 }
53
54 /**
55 * Registers service.
56 *
57 * @return void
58 */
59 public function register(): void {
60 add_filter( 'posts_clauses', [ $this, 'processClauses' ], 10, 2 );
61 add_filter( 'woocommerce_orders_table_query_clauses', [ $this, 'processHposClauses' ] );
62 }
63
64 /**
65 * Extends WP_Query to include custom table.
66 *
67 * @link https://wordpress.stackexchange.com/questions/50305/how-to-extend-wp-query-to-include-custom-table-in-query
68 *
69 * @param array $clauses Clauses.
70 * @param \WP_Query $queryObject WP_Query.
71 *
72 * @return array
73 */
74 public function processClauses( array $clauses, \WP_Query $queryObject ): array {
75 if ( false === $this->contextResolver->isOrderGridPage() ) {
76 return $clauses;
77 }
78
79 $isOrderPostQueryCall =
80 isset( $queryObject->query['post_type'] ) &&
81 (
82 'shop_order' === $queryObject->query['post_type'] ||
83 ( is_array( $queryObject->query['post_type'] ) && in_array( 'shop_order', $queryObject->query['post_type'], true ) )
84 );
85 if ( false === $isOrderPostQueryCall ) {
86 return $clauses;
87 }
88
89 return $this->orderRepository->processClauses(
90 $clauses,
91 $queryObject,
92 $this->getParamValues()
93 );
94 }
95
96 /**
97 * Extends High-Performance order storage grid filters.
98 *
99 * @param array $clauses Clauses.
100 *
101 * @return array
102 */
103 public function processHposClauses( array $clauses ): array {
104 if ( false === $this->contextResolver->isOrderGridPage() ) {
105 return $clauses;
106 }
107
108 return $this->orderRepository->processClauses(
109 $clauses,
110 null,
111 $this->getParamValues()
112 );
113 }
114
115 /**
116 * Gets param values.
117 *
118 * @return null[]
119 */
120 private function getParamValues(): array {
121 $paramValues = [
122 'packetery_carrier_id' => null,
123 'packetery_to_submit' => null,
124 'packetery_to_print' => null,
125 'packetery_order_type' => null,
126 ];
127
128 foreach ( $paramValues as $key => $value ) {
129 $paramValues[ $key ] = $this->httpRequest->getQuery( $key );
130 }
131
132 return $paramValues;
133 }
134 }
135