Set even 30 days old newsletters as scheduled when reactivating an email

[MAILPOET-2709]
This commit is contained in:
Rostislav Wolny
2020-03-30 14:04:06 +02:00
committed by Veljko V
parent 78dc682763
commit dc55fb64cd
3 changed files with 13 additions and 3 deletions

View File

@ -79,7 +79,7 @@ class ScheduledTask extends Model {
'WHERE ' . 'WHERE ' .
'q.`newsletter_id` = ' . $newsletter->id() . 'q.`newsletter_id` = ' . $newsletter->id() .
' AND t.`status` = "' . self::STATUS_PAUSED . '" ' . ' AND t.`status` = "' . self::STATUS_PAUSED . '" ' .
' AND t.`scheduled_at` > NOW()' ' AND t.`scheduled_at` > CURDATE() - INTERVAL 30 DAY'
); );
} }

View File

@ -617,7 +617,7 @@ parameters:
- -
message: "#^Cannot access property \\$status on MailPoet\\\\Models\\\\ScheduledTask\\|false\\.$#" message: "#^Cannot access property \\$status on MailPoet\\\\Models\\\\ScheduledTask\\|false\\.$#"
count: 5 count: 6
path: ../../tests/integration/Models/ScheduledTaskTest.php path: ../../tests/integration/Models/ScheduledTaskTest.php
- -

View File

@ -48,6 +48,10 @@ class ScheduledTaskTest extends \MailPoetTest {
'status' => ScheduledTask::STATUS_PAUSED, 'status' => ScheduledTask::STATUS_PAUSED,
'scheduled_at' => Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp'))->subDays(10)->format('Y-m-d H:i:s'), 'scheduled_at' => Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp'))->subDays(10)->format('Y-m-d H:i:s'),
]); ]);
$outdatedTask = ScheduledTask::createOrUpdate([
'status' => ScheduledTask::STATUS_PAUSED,
'scheduled_at' => Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp'))->subDays(31)->format('Y-m-d H:i:s'),
]);
SendingQueue::createOrUpdate([ SendingQueue::createOrUpdate([
'newsletter_id' => $newsletter->id(), 'newsletter_id' => $newsletter->id(),
'task_id' => $task1->id(), 'task_id' => $task1->id(),
@ -60,13 +64,19 @@ class ScheduledTaskTest extends \MailPoetTest {
'newsletter_id' => $newsletter->id(), 'newsletter_id' => $newsletter->id(),
'task_id' => $task3->id(), 'task_id' => $task3->id(),
]); ]);
SendingQueue::createOrUpdate([
'newsletter_id' => $newsletter->id(),
'task_id' => $outdatedTask->id(),
]);
ScheduledTask::setScheduledAllByNewsletter($newsletter); ScheduledTask::setScheduledAllByNewsletter($newsletter);
$task1Found = ScheduledTask::findOne($task1->id()); $task1Found = ScheduledTask::findOne($task1->id());
expect($task1Found->status)->equals(ScheduledTask::STATUS_SCHEDULED); expect($task1Found->status)->equals(ScheduledTask::STATUS_SCHEDULED);
$task2Found = ScheduledTask::findOne($task2->id()); $task2Found = ScheduledTask::findOne($task2->id());
expect($task2Found->status)->equals(ScheduledTask::STATUS_COMPLETED); expect($task2Found->status)->equals(ScheduledTask::STATUS_COMPLETED);
$task3Found = ScheduledTask::findOne($task3->id()); $task3Found = ScheduledTask::findOne($task3->id());
expect($task3Found->status)->equals(ScheduledTask::STATUS_PAUSED); expect($task3Found->status)->equals(ScheduledTask::STATUS_SCHEDULED);
$outdatedTaskFound = ScheduledTask::findOne($outdatedTask->id());
expect($outdatedTaskFound->status)->equals(ScheduledTask::STATUS_PAUSED);
} }
public function testItPauseAllByNewsletters() { public function testItPauseAllByNewsletters() {