Add a scheduled task for WooCommerce sync [MAILPOET-1723]
This commit is contained in:
@@ -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();
|
||||||
|
39
lib/Cron/Workers/WooCommerceSync.php
Normal file
39
lib/Cron/Workers/WooCommerceSync.php
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
@@ -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);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user