<?php namespace MailPoet\Cron\Workers; if (!defined('ABSPATH')) exit; use MailPoet\Models\Newsletter; use MailPoet\Models\ScheduledTask; use MailPoet\Models\Subscriber; use MailPoet\Util\Security; use MailPoetVendor\Carbon\Carbon; class UnsubscribeTokens extends SimpleWorker { const TASK_TYPE = 'unsubscribe_tokens'; const BATCH_SIZE = 1000; const AUTOMATIC_SCHEDULING = false; public function processTaskStrategy(ScheduledTask $task, $timer) { $meta = $task->getMeta(); do { $this->cronHelper->enforceExecutionLimit($timer); $subscribersCount = $this->addTokens(Subscriber::class, $meta['last_subscriber_id']); $task->meta = $meta; $task->save(); } while ($subscribersCount === self::BATCH_SIZE); do { $this->cronHelper->enforceExecutionLimit($timer); $newslettersCount = $this->addTokens(Newsletter::class, $meta['last_newsletter_id']); $task->meta = $meta; $task->save(); } while ($newslettersCount === self::BATCH_SIZE); if ($subscribersCount > 0 || $newslettersCount > 0) { return false; } return true; } private function addTokens($model, &$lastProcessedId = 0) { $instances = $model::whereNull('unsubscribe_token') ->whereGt('id', (int)$lastProcessedId) ->orderByAsc('id') ->limit(self::BATCH_SIZE) ->findMany(); foreach ($instances as $instance) { $lastProcessedId = $instance->id; $instance->set('unsubscribe_token', Security::generateUnsubscribeToken($model)); $instance->save(); } return count($instances); } public function getNextRunDate() { return Carbon::createFromTimestamp($this->wp->currentTime('timestamp')); } }
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
KeyCheck | Folder | 0755 |
|
|
SendingQueue | Folder | 0755 |
|
|
StatsNotifications | Folder | 0755 |
|
|
AuthorizedSendingEmailsCheck.php | File | 888 B | 0644 |
|
Beamer.php | File | 1.61 KB | 0644 |
|
Bounce.php | File | 5.69 KB | 0644 |
|
ExportFilesCleanup.php | File | 863 B | 0644 |
|
InactiveSubscribers.php | File | 2.28 KB | 0644 |
|
Scheduler.php | File | 8.62 KB | 0644 |
|
SimpleWorker.php | File | 2.55 KB | 0644 |
|
SubscriberLinkTokens.php | File | 1.06 KB | 0644 |
|
SubscribersCountCacheRecalculation.php | File | 3.31 KB | 0644 |
|
SubscribersEngagementScore.php | File | 2.36 KB | 0644 |
|
SubscribersLastEngagement.php | File | 4.76 KB | 0644 |
|
UnsubscribeTokens.php | File | 1.67 KB | 0644 |
|
WooCommercePastOrders.php | File | 2.37 KB | 0644 |
|
WooCommerceSync.php | File | 1.01 KB | 0644 |
|
WorkersFactory.php | File | 3.96 KB | 0644 |
|
index.php | File | 0 B | 0644 |
|