Refactor ScheduledTasks::rescheduleProgressively() to use Doctrine

[MAILPOET-3844]
This commit is contained in:
Rodrigo Primo
2021-09-22 12:20:01 -03:00
committed by Veljko V
parent 82d4b8cb23
commit 2c78db9e04
14 changed files with 139 additions and 99 deletions

View File

@@ -3,7 +3,9 @@
namespace MailPoet\Cron\Workers;
use MailPoet\Cron\CronHelper;
use MailPoet\Cron\CronWorkerScheduler;
use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Logging\LoggerFactory;
use MailPoet\Models\Newsletter;
use MailPoet\Models\ScheduledTask;
@@ -13,6 +15,7 @@ use MailPoet\Models\SubscriberSegment;
use MailPoet\Newsletter\Scheduler\PostNotificationScheduler;
use MailPoet\Newsletter\Scheduler\Scheduler as NewsletterScheduler;
use MailPoet\Newsletter\Scheduler\WelcomeScheduler;
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
use MailPoet\Segments\SubscribersFinder;
use MailPoet\Tasks\Sending as SendingTask;
@@ -28,14 +31,24 @@ class Scheduler {
/** @var CronHelper */
private $cronHelper;
/** @var CronWorkerScheduler */
private $cronWorkerScheduler;
/** @var ScheduledTasksRepository */
private $scheduledTasksRepository;
public function __construct(
SubscribersFinder $subscribersFinder,
LoggerFactory $loggerFactory,
CronHelper $cronHelper
CronHelper $cronHelper,
CronWorkerScheduler $cronWorkerScheduler,
ScheduledTasksRepository $scheduledTasksRepository
) {
$this->cronHelper = $cronHelper;
$this->subscribersFinder = $subscribersFinder;
$this->loggerFactory = $loggerFactory;
$this->cronWorkerScheduler = $cronWorkerScheduler;
$this->scheduledTasksRepository = $scheduledTasksRepository;
}
public function process($timer = false) {
@@ -219,7 +232,12 @@ class Scheduler {
public function verifySubscriber($subscriber, $queue) {
if ($subscriber->status === Subscriber::STATUS_UNCONFIRMED) {
// reschedule delivery
$queue->rescheduleProgressively();
$task = $this->scheduledTasksRepository->findOneById($queue->task()->id);
if ($task instanceof ScheduledTaskEntity) {
$this->cronWorkerScheduler->rescheduleProgressively($task);
}
return false;
} else if ($subscriber->status === Subscriber::STATUS_UNSUBSCRIBED) {
$queue->delete();