Files
piratepoet/lib/Cron/Workers/SubscriberLinkTokens.php
Amine Ben hammou 459dc8bff8 Schedule the task only when needed
[MAILPOET-2313]
2019-09-12 17:32:05 +02:00

41 lines
1.1 KiB
PHP

<?php
namespace MailPoet\Cron\Workers;
use MailPoet\Cron\CronHelper;
use MailPoet\Models\Subscriber;
use MailPoet\Models\ScheduledTask;
if (!defined('ABSPATH')) exit;
class SubscriberLinkTokens extends SimpleWorker {
const TASK_TYPE = 'subscriber_link_tokens';
const BATCH_SIZE = 1000;
const AUTOMATIC_SCHEDULING = false;
function processTaskStrategy(ScheduledTask $task) {
$count = $this->addTokens();
while ($count === self::BATCH_SIZE) {
CronHelper::enforceExecutionLimit($this->timer);
$count = $this->addTokens();
};
if ($count > 0) {
self::schedule();
}
return true;
}
private function addTokens() {
$instances = Subscriber::whereNull('link_token')->limit(self::BATCH_SIZE)->findMany();
foreach ($instances as $instance) {
$instance->set('link_token', Subscriber::generateToken($instance->email));
$instance->save();
}
return count($instances);
}
static function getNextRunDate() {
$wp = new WPFunctions();
return Carbon::createFromTimestamp($wp->currentTime('timestamp'));
}
}