Files
piratepoet/lib/Cron/Workers/WooCommerceSync.php
2021-12-06 14:52:34 +01:00

47 lines
1.4 KiB
PHP

<?php
namespace MailPoet\Cron\Workers;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Segments\WooCommerce;
use MailPoet\Segments\WooCommerce as WooCommerceSegment;
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
class WooCommerceSync extends SimpleWorker {
const TASK_TYPE = 'woocommerce_sync';
const SUPPORT_MULTIPLE_INSTANCES = false;
const AUTOMATIC_SCHEDULING = false;
/** @var WooCommerceSegment */
private $woocommerceSegment;
/** @var WooCommerceHelper */
private $woocommerceHelper;
public function __construct(
WooCommerceSegment $woocommerceSegment,
WooCommerceHelper $woocommerceHelper
) {
$this->woocommerceSegment = $woocommerceSegment;
$this->woocommerceHelper = $woocommerceHelper;
parent::__construct();
}
public function checkProcessingRequirements() {
return $this->woocommerceHelper->isWooCommerceActive();
}
public function processTaskStrategy(ScheduledTaskEntity $task, $timer) {
$countOfSynchronized = $task->getMeta()['count_of_synchronized'] ?? 0;
$count = $this->woocommerceSegment->synchronizeCustomers($countOfSynchronized);
$countOfSynchronized += $count;
$task->setMeta(['count_of_synchronized' => $countOfSynchronized]);
$this->scheduledTasksRepository->flush();
if ($count === WooCommerce::BATCH_SIZE) {
return false;
}
return true;
}
}