From d9a0bccd1d70eaf1ca58abda298ec5b9e9b55012 Mon Sep 17 00:00:00 2001 From: wxa Date: Tue, 6 Oct 2020 21:22:58 +0300 Subject: [PATCH] Fix items not updating when rescheduling abandoned cart email [MAILPOET-2979] --- lib/Newsletter/Scheduler/AutomaticEmailScheduler.php | 9 +++++---- lib/Tasks/Sending.php | 9 +++++++++ tests/integration/Tasks/SendingTest.php | 6 ++++++ 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lib/Newsletter/Scheduler/AutomaticEmailScheduler.php b/lib/Newsletter/Scheduler/AutomaticEmailScheduler.php index d78e5fdfca..e8b75757f3 100644 --- a/lib/Newsletter/Scheduler/AutomaticEmailScheduler.php +++ b/lib/Newsletter/Scheduler/AutomaticEmailScheduler.php @@ -96,12 +96,13 @@ class AutomaticEmailScheduler { return $sendingTask->save(); } - private function rescheduleAutomaticEmailSendingTask($newsletter, $task, $meta = false) { + private function rescheduleAutomaticEmailSendingTask($newsletter, ScheduledTask $task, $meta = false) { + $sendingTask = SendingTask::createFromScheduledTask($task); if ($meta) { - $task->__set('meta', $meta); + $sendingTask->__set('meta', $meta); } // compute new 'scheduled_at' from now - $task->scheduledAt = Scheduler::getScheduledTimeWithDelay($newsletter->afterTimeType, $newsletter->afterTimeNumber); - $task->save(); + $sendingTask->scheduledAt = Scheduler::getScheduledTimeWithDelay($newsletter->afterTimeType, $newsletter->afterTimeNumber); + $sendingTask->save(); } } diff --git a/lib/Tasks/Sending.php b/lib/Tasks/Sending.php index 49d3a5d4b8..bed381e7da 100644 --- a/lib/Tasks/Sending.php +++ b/lib/Tasks/Sending.php @@ -102,6 +102,15 @@ class Sending { return $result; } + public static function createFromScheduledTask(ScheduledTask $task) { + $queue = SendingQueue::where('task_id', $task->id)->findOne(); + if (!$queue) { + return false; + } + + return self::create($task, $queue); + } + public static function createFromQueue(SendingQueue $queue) { $task = $queue->task()->findOne(); if (!$task) { diff --git a/tests/integration/Tasks/SendingTest.php b/tests/integration/Tasks/SendingTest.php index 01e41f1098..f0c8f01b7e 100644 --- a/tests/integration/Tasks/SendingTest.php +++ b/tests/integration/Tasks/SendingTest.php @@ -58,6 +58,12 @@ class SendingTest extends \MailPoetTest { expect($queue->taskId)->equals($this->task->id); } + public function testItCanBeCreatedFromScheduledTask() { + $sending = SendingTask::createFromScheduledTask($this->task); + $queue = $sending->queue(); + expect($queue->taskId)->equals($this->task->id); + } + public function testItCanBeCreatedFromQueue() { $sending = SendingTask::createFromQueue($this->queue); $task = $sending->task();