<?php namespace MailPoet\Cron\Workers; if (!defined('ABSPATH')) exit; use MailPoet\Models\ScheduledTask; use MailPoet\Models\Subscriber; use MailPoet\Settings\SettingsController; use MailPoet\Subscribers\InactiveSubscribersController; class InactiveSubscribers extends SimpleWorker { const TASK_TYPE = 'inactive_subscribers'; const BATCH_SIZE = 1000; const SUPPORT_MULTIPLE_INSTANCES = false; /** @var InactiveSubscribersController */ private $inactiveSubscribersController; /** @var SettingsController */ private $settings; public function __construct( InactiveSubscribersController $inactiveSubscribersController, SettingsController $settings ) { $this->inactiveSubscribersController = $inactiveSubscribersController; $this->settings = $settings; parent::__construct(); } public function processTaskStrategy(ScheduledTask $task, $timer) { $trackingEnabled = (bool)$this->settings->get('tracking.enabled'); if (!$trackingEnabled) { $this->schedule(); return true; } $daysToInactive = (int)$this->settings->get('deactivate_subscriber_after_inactive_days'); // Activate all inactive subscribers in case the feature is turned off if ($daysToInactive === 0) { $this->inactiveSubscribersController->reactivateInactiveSubscribers(); $this->schedule(); return true; } // Handle activation/deactivation within interval $meta = $task->getMeta(); $lastSubscriberId = isset($meta['last_subscriber_id']) ? $meta['last_subscriber_id'] : 0; $maxSubscriberId = isset($meta['max_subscriber_id']) ? $meta['max_subscriber_id'] : (int)Subscriber::max('id'); while ($lastSubscriberId <= $maxSubscriberId) { $count = $this->inactiveSubscribersController->markInactiveSubscribers($daysToInactive, self::BATCH_SIZE, $lastSubscriberId); if ($count === false) { break; } $lastSubscriberId += self::BATCH_SIZE; $task->meta = ['last_subscriber_id' => $lastSubscriberId]; $task->save(); $this->cronHelper->enforceExecutionLimit($timer); }; while ($this->inactiveSubscribersController->markActiveSubscribers($daysToInactive, self::BATCH_SIZE) === self::BATCH_SIZE) { $this->cronHelper->enforceExecutionLimit($timer); }; $this->schedule(); return true; } }
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 |
|