PluginProbe
seQura / 4.1.0
seQura v4.1.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/class-plugin.php +27 -15 3.0.64.1.0 View file →
@@ -14,8 +14,9 @@
14 14 use SeQura\WC\Controllers\Hooks\Payment\Interface_Payment_Controller;
15 15 use SeQura\WC\Controllers\Hooks\Process\Interface_Async_Process_Controller;
16 16 use SeQura\WC\Controllers\Hooks\Settings\Interface_Settings_Controller;
17 17 use SeQura\WC\Controllers\Rest\REST_Controller;
18 +use SeQura\WC\Services\Constants\Interface_Constants;
18 19 use SeQura\WC\Services\Migration\Interface_Migration_Manager;
19 20
20 21 /**
21 22 * The core plugin class.
@@ -64,18 +65,15 @@
64 65 */
65 66 private $migration_manager;
66 67
67 68 private const HOOK_DELIVERY_REPORT = 'sequra_delivery_report';
69 + private const HOOK_CLEANUP_ORDERS = 'sequra_cleanup_orders';
68 70
69 71 /**
70 72 * Construct the plugin and bind hooks with controllers.
71 73 */
72 74 public function __construct(
73 - array $data,
74 - string $wp_version,
75 - string $wc_version,
76 - string $file_path,
77 - string $base_name,
75 + Interface_Constants $constants,
78 76 Interface_Migration_Manager $migration_manager,
79 77 Interface_I18n_Controller $i18n_controller,
80 78 Interface_Assets_Controller $assets_controller,
81 79 Interface_Settings_Controller $settings_controller,
@@ -87,13 +85,13 @@
87 85 Interface_Product_Controller $product_controller,
88 86 Interface_Async_Process_Controller $async_process_controller,
89 87 Interface_Order_Controller $order_controller
90 88 ) {
91 - $this->data = $data;
92 - $this->wp_version = $wp_version;
93 - $this->wc_version = $wc_version;
94 - $this->file_path = $file_path;
95 - $this->base_name = $base_name;
89 + $this->data = $constants->get_plugin_data();
90 + $this->wp_version = $constants->get_environment_data()['wp_version'] ?? '';
91 + $this->wc_version = $constants->get_woocommerce_data()['Version'] ?? '';
92 + $this->file_path = $constants->get_plugin_file_path();
93 + $this->base_name = $constants->get_plugin_basename();
96 94 $this->migration_manager = $migration_manager;
97 95
98 96 \add_action( 'plugins_loaded', array( $this, 'install' ) );
99 97
@@ -105,9 +103,9 @@
105 103 \add_action( 'wp_enqueue_scripts', array( $assets_controller, 'enqueue_front' ) );
106 104
107 105 // Settings hooks.
108 106 \add_action( 'admin_menu', array( $settings_controller, 'register_page' ) );
109 - \add_filter( "plugin_action_links_{$base_name}", array( $settings_controller, 'add_action_link' ), 10, 4 );
107 + \add_filter( "plugin_action_links_{$this->base_name}", array( $settings_controller, 'add_action_link' ), 10, 4 );
110 108 \add_filter( 'sequra_settings_page_url', array( $settings_controller, 'get_settings_page_url' ) );
111 109 \add_filter( 'admin_footer_text', array( $settings_controller, 'remove_footer_admin' ) );
112 110 \add_filter( 'plugin_row_meta', array( $settings_controller, 'add_plugin_row_meta' ), 10, 2 );
113 111
@@ -141,8 +139,10 @@
141 139
142 140 // Order Update.
143 141 \add_action( 'woocommerce_order_status_changed', array( $order_controller, 'handle_order_status_changed' ), 10, 4 );
144 142 \add_action( 'woocommerce_admin_order_data_after_order_details', array( $order_controller, 'show_link_to_sequra_back_office' ) );
143 + \add_action( self::HOOK_CLEANUP_ORDERS, array( $order_controller, 'cleanup_orders' ) );
144 + \add_action( $constants->get_hook_add_order_indexes(), array( $order_controller, 'migrate_orders_to_use_indexes' ) );
145 145
146 146 // WooCommerce Compat.
147 147 \add_action( 'before_woocommerce_init', array( $this, 'declare_woocommerce_compatibility' ) );
148 148 }
@@ -171,19 +171,31 @@
171 171 * Handle deactivation of the plugin.
172 172 */
173 173 public function deactivate(): void {
174 174 \wp_clear_scheduled_hook( self::HOOK_DELIVERY_REPORT );
175 + \wp_clear_scheduled_hook( self::HOOK_CLEANUP_ORDERS );
175 176 }
176 177
177 178 /**
179 + * Get a random time between 2AM and 8AM.
180 + *
181 + * @return int
182 + */
183 + private function get_random_midnight_time() {
184 + $random_offset = \wp_rand( 0, 25200 ); // 60*60*7 seconds from 2AM to 8AM.
185 + $tomorrow = gmdate( 'Y-m-d 02:00', strtotime( 'tomorrow' ) );
186 + return $random_offset + strtotime( $tomorrow );
187 + }
188 +
189 + /**
178 190 * Execute the installation process if needed.
179 191 */
180 192 public function install(): void {
181 193 if ( ! \wp_next_scheduled( self::HOOK_DELIVERY_REPORT ) ) {
182 - $random_offset = \wp_rand( 0, 25200 ); // 60*60*7 seconds from 2AM to 8AM.
183 - $tomorrow = gmdate( 'Y-m-d 02:00', strtotime( 'tomorrow' ) );
184 - $time = $random_offset + strtotime( $tomorrow );
185 - \wp_schedule_event( $time, 'daily', self::HOOK_DELIVERY_REPORT );
194 + \wp_schedule_event( $this->get_random_midnight_time(), 'daily', self::HOOK_DELIVERY_REPORT );
195 + }
196 + if ( ! \wp_next_scheduled( self::HOOK_CLEANUP_ORDERS ) ) {
197 + \wp_schedule_event( $this->get_random_midnight_time(), 'daily', self::HOOK_CLEANUP_ORDERS );
186 198 }
187 199 $this->migration_manager->run_install_migrations();
188 200 }
189 201