Add cron worker for inactive subscribers
[MAILPOET-1791]
This commit is contained in:
committed by
M. Shull
parent
7b433a4273
commit
7eb0e23d22
47
lib/Cron/Workers/InactiveSubscribers.php
Normal file
47
lib/Cron/Workers/InactiveSubscribers.php
Normal 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;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user