Add a scheduled task for WooCommerce sync [MAILPOET-1723]

This commit is contained in:
wxa
2019-01-30 16:27:49 +03:00
committed by M. Shull
parent 3f1e690d90
commit eb860c487b
3 changed files with 59 additions and 2 deletions

View File

@@ -27,6 +27,7 @@ class Daemon {
$this->executeSendingServiceKeyCheckWorker(); $this->executeSendingServiceKeyCheckWorker();
$this->executePremiumKeyCheckWorker(); $this->executePremiumKeyCheckWorker();
$this->executeBounceWorker(); $this->executeBounceWorker();
//$this->executeWooCommerceSyncWorker();
} catch(\Exception $e) { } catch(\Exception $e) {
CronHelper::saveDaemonLastError($e->getMessage()); CronHelper::saveDaemonLastError($e->getMessage());
} }
@@ -64,6 +65,11 @@ class Daemon {
return $bounce->process(); return $bounce->process();
} }
function executeWooCommerceSyncWorker() {
$worker = $this->workers_factory->createWooCommerceSyncWorker($this->timer);
return $worker->process();
}
function executeMigrationWorker() { function executeMigrationWorker() {
$migration = $this->workers_factory->createMigrationWorker($this->timer); $migration = $this->workers_factory->createMigrationWorker($this->timer);
return $migration->process(); return $migration->process();

View File

@@ -0,0 +1,39 @@
<?php
namespace MailPoet\Cron\Workers;
use MailPoet\Cron\CronHelper;
use MailPoet\Models\ScheduledTask;
use MailPoet\Segments\WooCommerce as WooCommerceSegment;
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
if(!defined('ABSPATH')) exit;
class WooCommerceSync extends SimpleWorker {
const TASK_TYPE = 'woocommerce_sync';
/** @var WooCommerceSegment */
private $woocommerce_segment;
/** @var WooCommerceHelper */
private $woocommerce_helper;
function __construct(WooCommerceSegment $woocommerce_segment, WooCommerceHelper $woocommerce_helper, $timer = false) {
$this->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;
}
}

View File

@@ -11,7 +11,9 @@ use MailPoet\Cron\Workers\StatsNotifications\Worker as StatsNotificationsWorker;
use MailPoet\Cron\Workers\Bounce as BounceWorker; use MailPoet\Cron\Workers\Bounce as BounceWorker;
use MailPoet\Cron\Workers\KeyCheck\PremiumKeyCheck as PremiumKeyCheckWorker; use MailPoet\Cron\Workers\KeyCheck\PremiumKeyCheck as PremiumKeyCheckWorker;
use MailPoet\Cron\Workers\KeyCheck\SendingServiceKeyCheck as SendingServiceKeyCheckWorker; use MailPoet\Cron\Workers\KeyCheck\SendingServiceKeyCheck as SendingServiceKeyCheckWorker;
use MailPoet\Cron\Workers\WooCommerceSync as WooCommerceSyncWorker;
use MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler; use MailPoet\Cron\Workers\SendingQueue\SendingErrorHandler;
use MailPoet\Segments\WooCommerce as WooCommerceSegment;
use MailPoet\Mailer\Mailer; use MailPoet\Mailer\Mailer;
use MailPoet\Settings\SettingsController; use MailPoet\Settings\SettingsController;
@@ -29,6 +31,9 @@ class WorkersFactory {
/** @var SettingsController */ /** @var SettingsController */
private $settings; private $settings;
/** @var WooCommerceSegment */
private $woocommerce_segment;
/** /**
* @var Renderer * @var Renderer
*/ */
@@ -39,13 +44,15 @@ class WorkersFactory {
StatsNotificationScheduler $scheduler, StatsNotificationScheduler $scheduler,
Mailer $mailer, Mailer $mailer,
Renderer $renderer, Renderer $renderer,
SettingsController $settings SettingsController $settings,
) { WooCommerceSegment $woocommerce_segment
) {
$this->sending_error_handler = $sending_error_handler; $this->sending_error_handler = $sending_error_handler;
$this->scheduler = $scheduler; $this->scheduler = $scheduler;
$this->mailer = $mailer; $this->mailer = $mailer;
$this->renderer = $renderer; $this->renderer = $renderer;
$this->settings = $settings; $this->settings = $settings;
$this->woocommerce_segment = $woocommerce_segment;
} }
/** @return SchedulerWorker */ /** @return SchedulerWorker */
@@ -82,4 +89,9 @@ class WorkersFactory {
return new MigrationWorker($timer); return new MigrationWorker($timer);
} }
/** @return WooCommerceSyncWorker */
function createWooCommerceSyncWorker($timer) {
return new WooCommerceSyncWorker($this->woocommerce_segment, $timer);
}
} }