From 1b3f29eaf12ec663ada31951e5b3e37d06ec48ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ja=CC=81n=20Mikla=CC=81s=CC=8C?= Date: Tue, 21 May 2019 15:03:03 +0200 Subject: [PATCH] Run WooCommerce Customers list sync on settings change [MAILPOET-2079] --- lib/API/JSON/v1/Settings.php | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/API/JSON/v1/Settings.php b/lib/API/JSON/v1/Settings.php index bded03c221..0285ddbfc7 100644 --- a/lib/API/JSON/v1/Settings.php +++ b/lib/API/JSON/v1/Settings.php @@ -7,6 +7,7 @@ use MailPoet\API\JSON\Endpoint as APIEndpoint; use MailPoet\API\JSON\Error as APIError; use MailPoet\Config\AccessControl; use MailPoet\Cron\Workers\InactiveSubscribers; +use MailPoet\Cron\Workers\WooCommerceSync; use MailPoet\Models\ScheduledTask; use MailPoet\Services\Bridge; use MailPoet\Settings\SettingsController; @@ -66,6 +67,31 @@ class Settings extends APIEndpoint { if ($old_inactivation_interval !== $new_inactivation_interval) { $this->onInactiveSubscribersIntervalChange(); } + + // Sync WooCommerce Customers list + $old_subscribe_old_woocommerce_customers = isset($old_settings['mailpoet_subscribe_old_woocommerce_customers']['enabled']) + ? $old_settings['mailpoet_subscribe_old_woocommerce_customers']['enabled'] + : '0'; + $new_subscribe_old_woocommerce_customers = isset($new_settings['mailpoet_subscribe_old_woocommerce_customers']['enabled']) + ? $new_settings['mailpoet_subscribe_old_woocommerce_customers']['enabled'] + : '0'; + if ($old_subscribe_old_woocommerce_customers !== $new_subscribe_old_woocommerce_customers) { + $this->onSubscribeOldWoocommerceCustomersChange(); + } + } + + private function onSubscribeOldWoocommerceCustomersChange() { + $task = ScheduledTask::where('type', WooCommerceSync::TASK_TYPE) + ->whereRaw('status = ?', [ScheduledTask::STATUS_SCHEDULED]) + ->findOne(); + if (!$task) { + $task = ScheduledTask::create(); + $task->type = WooCommerceSync::TASK_TYPE; + $task->status = ScheduledTask::STATUS_SCHEDULED; + } + $datetime = Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp')); + $task->scheduled_at = $datetime->subMinute(); + $task->save(); } private function onInactiveSubscribersIntervalChange() {