diff --git a/lib/Newsletter/NewslettersRepository.php b/lib/Newsletter/NewslettersRepository.php index 7c7dce82c5..3b88d3af89 100644 --- a/lib/Newsletter/NewslettersRepository.php +++ b/lib/Newsletter/NewslettersRepository.php @@ -173,26 +173,17 @@ class NewslettersRepository extends Repository { ->setParameter('ids', $ids) ->getQuery()->execute(); - // Restore scheduled tasks + // Restore scheduled tasks and pause running ones $scheduledTasksTable = $this->entityManager->getClassMetadata(ScheduledTaskEntity::class)->getTableName(); $sendingQueueTable = $this->entityManager->getClassMetadata(SendingQueueEntity::class)->getTableName(); $this->entityManager->getConnection()->executeUpdate(" UPDATE $scheduledTasksTable t JOIN $sendingQueueTable q ON t.`id` = q.`task_id` - SET t.`deleted_at` = null + SET t.`deleted_at` = null, t.`status` = IFNULL(t.status, :pausedStatus) WHERE q.`newsletter_id` IN (:ids) - ", ['ids' => $ids], ['ids' => Connection::PARAM_INT_ARRAY]); - - // Pause restored running scheduled tasks - $this->entityManager->getConnection()->executeUpdate(" - UPDATE $scheduledTasksTable t - JOIN $sendingQueueTable q ON t.`id` = q.`task_id` - SET t.`status` = :status - WHERE q.`newsletter_id` IN (:ids) - AND t.`status` IS NULL ", [ 'ids' => $ids, - 'status' => ScheduledTaskEntity::STATUS_PAUSED, + 'pausedStatus' => ScheduledTaskEntity::STATUS_PAUSED, ], [ 'ids' => Connection::PARAM_INT_ARRAY, ]); diff --git a/tests/integration/Newsletter/NewsletterRepositoryTest.php b/tests/integration/Newsletter/NewsletterRepositoryTest.php index 36edb224cc..978d7a36ab 100644 --- a/tests/integration/Newsletter/NewsletterRepositoryTest.php +++ b/tests/integration/Newsletter/NewsletterRepositoryTest.php @@ -115,6 +115,7 @@ class NewsletterRepositoryTest extends \MailPoetTest { assert($scheduledTask instanceof ScheduledTaskEntity); $this->entityManager->refresh($scheduledTask); expect($scheduledTask->getDeletedAt())->null(); + expect($scheduledTask->getStatus())->equals(ScheduledTaskEntity::STATUS_SCHEDULED); } public function testItBulkDeleteNewslettersAndChildren() {