Add cron worker for inactive subscribers

[MAILPOET-1791]
This commit is contained in:
Rostislav Wolny
2019-04-16 15:07:08 +02:00
committed by M. Shull
parent 7b433a4273
commit 7eb0e23d22
2 changed files with 132 additions and 0 deletions

View File

@ -0,0 +1,47 @@
<?php
namespace MailPoet\Cron\Workers;
use MailPoet\Cron\CronHelper;
use MailPoet\Models\ScheduledTask;
use MailPoet\Settings\SettingsController;
use MailPoet\Subscribers\InactiveSubscribersController;
if (!defined('ABSPATH')) exit;
class InactiveSubscribers extends SimpleWorker {
const TASK_TYPE = 'inactive_subscribers';
const BATCH_SIZE = 1000;
/** @var InactiveSubscribersController */
private $inactive_subscribers_controller;
/** @var SettingsController */
private $settings;
function __construct(
InactiveSubscribersController $inactive_subscribers_controller,
SettingsController $settings,
$timer = false
) {
$this->inactive_subscribers_controller = $inactive_subscribers_controller;
$this->settings = $settings;
parent::__construct($timer);
}
function processTaskStrategy(ScheduledTask $task) {
$days_to_inactive = (int)$this->settings->get('deactivate_subscriber_after_inactive_days');
if ($days_to_inactive === 0) {
self::schedule();
return true;
}
while ($this->inactive_subscribers_controller->markInactiveSubscribers($days_to_inactive, self::BATCH_SIZE) === self::BATCH_SIZE) {
CronHelper::enforceExecutionLimit($this->timer);
};
while ($this->inactive_subscribers_controller->markActiveSubscribers($days_to_inactive, self::BATCH_SIZE) === self::BATCH_SIZE) {
CronHelper::enforceExecutionLimit($this->timer);
};
self::schedule();
return true;
}
}