diff --git a/lib/Cron/Daemon.php b/lib/Cron/Daemon.php index a2ee283efe..c1662c2625 100644 --- a/lib/Cron/Daemon.php +++ b/lib/Cron/Daemon.php @@ -27,6 +27,7 @@ class Daemon { $this->executeSendingServiceKeyCheckWorker(); $this->executePremiumKeyCheckWorker(); $this->executeBounceWorker(); + //$this->executeWooCommerceSyncWorker(); } catch(\Exception $e) { CronHelper::saveDaemonLastError($e->getMessage()); } @@ -64,6 +65,11 @@ class Daemon { return $bounce->process(); } + function executeWooCommerceSyncWorker() { + $worker = $this->workers_factory->createWooCommerceSyncWorker($this->timer); + return $worker->process(); + } + function executeMigrationWorker() { $migration = $this->workers_factory->createMigrationWorker($this->timer); return $migration->process(); diff --git a/lib/Cron/Workers/WooCommerceSync.php b/lib/Cron/Workers/WooCommerceSync.php new file mode 100644 index 0000000000..43e05af2b4 --- /dev/null +++ b/lib/Cron/Workers/WooCommerceSync.php @@ -0,0 +1,39 @@ +woocommerce_segment = $woocommerce_segment; + $this->woocommerce_helper = $woocommerce_helper; + parent::__construct($timer); + } + + function checkProcessingRequirements() { + return $this->woocommerce_helper->isWooCommerceActive(); + } + + function processTaskStrategy(ScheduledTask $task) { + + $this->woocommerce_segment->synchronizeCustomers(); + + // abort if execution limit is reached + CronHelper::enforceExecutionLimit($this->timer); + + return true; + } +} diff --git a/lib/Cron/Workers/WorkersFactory.php b/lib/Cron/Workers/WorkersFactory.php index de6d6ecd5b..58e9d9bf3e 100644 --- a/lib/Cron/Workers/WorkersFactory.php +++ b/lib/Cron/Workers/WorkersFactory.php @@ -11,7 +11,9 @@ use MailPoet\Cron\Workers\StatsNotifications\Worker as StatsNotificationsWorker; use MailPoet\Cron\Workers\Bounce as BounceWorker; use MailPoet\Cron\Workers\KeyCheck\PremiumKeyCheck as PremiumKeyCheckWorker; use MailPoet\Cron\Workers\KeyCheck\SendingServiceKeyCheck as SendingServiceKeyCheckWorker; +use MailPoet\Cron\Workers\WooCommerceSync as WooCommerceSyncWorker; use MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler; +use MailPoet\Segments\WooCommerce as WooCommerceSegment; use MailPoet\Mailer\Mailer; use MailPoet\Settings\SettingsController; @@ -29,6 +31,9 @@ class WorkersFactory { /** @var SettingsController */ private $settings; + /** @var WooCommerceSegment */ + private $woocommerce_segment; + /** * @var Renderer */ @@ -39,13 +44,15 @@ class WorkersFactory { StatsNotificationScheduler $scheduler, Mailer $mailer, Renderer $renderer, - SettingsController $settings - ) { + SettingsController $settings, + WooCommerceSegment $woocommerce_segment + ) { $this->sending_error_handler = $sending_error_handler; $this->scheduler = $scheduler; $this->mailer = $mailer; $this->renderer = $renderer; $this->settings = $settings; + $this->woocommerce_segment = $woocommerce_segment; } /** @return SchedulerWorker */ @@ -82,4 +89,9 @@ class WorkersFactory { return new MigrationWorker($timer); } + /** @return WooCommerceSyncWorker */ + function createWooCommerceSyncWorker($timer) { + return new WooCommerceSyncWorker($this->woocommerce_segment, $timer); + } + }