Server IP : 104.21.14.103 / Your IP : 18.191.103.117 Web Server : LiteSpeed System : Linux business53.web-hosting.com 4.18.0-553.lve.el8.x86_64 #1 SMP Mon May 27 15:27:34 UTC 2024 x86_64 User : giankuin ( 1871) PHP Version : 7.4.33 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /proc/self/root/home/giankuin/thietke365.net/wp-content/plugins/mailpoet/lib/Cron/Workers/ |
Upload File : |
<?php // phpcs:ignore SlevomatCodingStandard.TypeHints.DeclareStrictTypes.DeclareStrictTypesMissing namespace MailPoet\Cron\Workers; if (!defined('ABSPATH')) exit; use MailPoet\Entities\ScheduledTaskEntity; use MailPoet\Models\Newsletter; 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(ScheduledTaskEntity $task, $timer) { $meta = $task->getMeta(); if (!isset($meta['last_subscriber_id'])) { $meta['last_subscriber_id'] = 0; } do { $this->cronHelper->enforceExecutionLimit($timer); $subscribersCount = $this->addTokens(Subscriber::class, $meta['last_subscriber_id']); $task->setMeta($meta); $this->scheduledTasksRepository->persist($task); $this->scheduledTasksRepository->flush(); } while ($subscribersCount === self::BATCH_SIZE); do { $this->cronHelper->enforceExecutionLimit($timer); $newslettersCount = $this->addTokens(Newsletter::class, $meta['last_newsletter_id']); $task->setMeta($meta); $this->scheduledTasksRepository->persist($task); $this->scheduledTasksRepository->flush(); } 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')); } }