PluginProbe
seQura / 4.3.0
seQura v4.3.0
4.3.4 4.3.3 4.3.2 4.3.1 trunk 2.0.0 2.0.10 2.0.11 2.0.12 2.0.5 2.0.6 2.0.7 2.0.8 2.0.9 3.0.0 3.0.2 3.0.5 3.0.6 3.0.7 3.1.0 3.1.1 3.2.0 3.2.1 3.2.2 4.0.0 All 30 releases
← All changes | src/Controllers/Hooks/Order/class-order-controller.php +56 -10 3.0.54.3.0 View file →
@@ -9,9 +9,10 @@
9 9 namespace SeQura\WC\Controllers\Hooks\Order;
10 10
11 11 use SeQura\Core\Infrastructure\Logger\LogContextData;
12 12 use SeQura\WC\Controllers\Controller;
13 -use SeQura\WC\Services\Interface_Logger_Service;
13 +use SeQura\WC\Services\Cart\Interface_Cart_Service;
14 +use SeQura\WC\Services\Log\Interface_Logger_Service;
14 15 use SeQura\WC\Services\Order\Interface_Order_Service;
15 16 use Throwable;
16 17 use WC_Order;
17 18
@@ -27,19 +28,28 @@
27 28 */
28 29 private $order_service;
29 30
30 31 /**
32 + * Cart service
33 + *
34 + * @var Interface_Cart_Service
35 + */
36 + private $cart_service;
37 +
38 + /**
31 39 * Constructor
32 40 */
33 41 public function __construct(
34 42 Interface_Logger_Service $logger,
35 43 string $templates_path,
36 - Interface_Order_Service $order_service
44 + Interface_Order_Service $order_service,
45 + Interface_Cart_Service $cart_service
37 46 ) {
38 47 parent::__construct( $logger, $templates_path );
39 48 $this->order_service = $order_service;
49 + $this->cart_service = $cart_service;
40 50
41 - add_action( 'admin_notices', array( $this, 'display_notices' ) );
51 + \add_action( 'admin_notices', array( $this, 'display_notices' ) );
42 52 }
43 53
44 54 /**
45 55 * Add support to custom meta query vars for the order query
@@ -94,9 +104,9 @@
94 104 new LogContextData( 'new_status', $new_status ),
95 105 )
96 106 );
97 107
98 - set_transient(
108 + \set_transient(
99 109 $this->get_notices_transient( $order_id ),
100 110 array(
101 111 array(
102 112 'notice' => __( 'An error occurred while updating the order data in seQura.', 'sequra' ), // TODO: improve message with link to simba.
@@ -124,25 +134,25 @@
124 134 * @return void
125 135 */
126 136 public function display_notices() {
127 137 // phpcs:ignore WordPress.Security.NonceVerification
128 - if ( ! is_admin() || ! isset( $_GET['post'], $_GET['action'] ) || 'edit' !== $_GET['action'] ) {
138 + if ( ! \is_admin() || ! isset( $_GET['post'], $_GET['action'] ) || 'edit' !== $_GET['action'] ) {
129 139 return;
130 140 }
131 141
132 - $order = wc_get_order( absint( $_GET['post'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
142 + $order = wc_get_order( \absint( $_GET['post'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
133 143 if ( ! $order instanceof WC_Order ) {
134 144 return;
135 145 }
136 146
137 147 $transient_key = $this->get_notices_transient( $order->get_id() );
138 - $notices = (array) get_transient( $transient_key );
148 + $notices = (array) \get_transient( $transient_key );
139 149 if ( ! empty( $notices ) ) {
140 - delete_transient( $transient_key );
150 + \delete_transient( $transient_key );
141 151 }
142 152 foreach ( $notices as $notice ) {
143 153 ob_start();
144 - wc_get_template( 'admin/notice.php', $notice, '', $this->templates_path );
154 + \wc_get_template( 'admin/notice.php', $notice, '', $this->templates_path );
145 155 echo ob_get_clean(); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
146 156 }
147 157 }
148 158
@@ -155,7 +165,43 @@
155 165 public function show_link_to_sequra_back_office( $order ): void {
156 166 $args = array(
157 167 'sequra_link' => $this->order_service->get_link_to_sequra_back_office( $order ),
158 168 );
159 - wc_get_template( 'admin/order_details.php', $args, '', $this->templates_path );
169 + \wc_get_template( 'admin/order_details.php', $args, '', $this->templates_path );
170 + }
171 +
172 + /**
173 + * Cleanup orders
174 + *
175 + * @return void
176 + */
177 + public function cleanup_orders() {
178 + $this->logger->log_debug( 'Hook executed', __FUNCTION__, __CLASS__ );
179 + $this->order_service->cleanup_orders();
180 + }
181 +
182 + /**
183 + * Respond to the sequra_order_migration_add_indexes hook
184 + *
185 + * @param string $hook Hook name that triggered the action.
186 + */
187 + public function migrate_orders_to_use_indexes( $hook ) {
188 + $this->logger->log_debug( 'Hook executed', __FUNCTION__, __CLASS__ );
189 +
190 + if ( $this->order_service->is_migration_complete() ) {
191 + $this->logger->log_debug( 'Indexing process is done. Job will be unscheduled', __FUNCTION__, __CLASS__ );
192 + \wp_clear_scheduled_hook( $hook, array( $hook ) );
193 + return;
194 + }
195 +
196 + $this->order_service->migrate_data();
197 + }
198 +
199 + /**
200 + * Create the Cart Info object for the current session if it doesn't exist.
201 + *
202 + * @return void
203 + */
204 + public function ensure_cart_info_exists() {
205 + $this->cart_service->get_cart_info_from_session();
160 206 }
161 207 }