From c76c8f2abbb48b771a5ff8c42738f4101bfc1c9e Mon Sep 17 00:00:00 2001 From: Oluwaseun Olorunsola Date: Thu, 21 Dec 2023 15:08:24 +0100 Subject: [PATCH] Save the correct datetime value for newsletter sentAt column We don't need to use the value from `processedAt` here since we can rightfully use the current datetime value Also, I found out `processedAt` is usually null here for standard newsletters which cause new Carbon to use the server datetime settings MAILPOET-5795 --- mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php | 4 ++-- mailpoet/lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php | 5 ++--- .../Cron/Workers/SendingQueue/Tasks/NewsletterTest.php | 6 +++--- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php b/mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php index 131bae3bc3..60bb83e431 100644 --- a/mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php +++ b/mailpoet/lib/Cron/Workers/SendingQueue/SendingQueue.php @@ -272,7 +272,7 @@ class SendingQueue { ); $queue->removeSubscribers($subscribersToRemove); if (!$queue->countToProcess) { - $this->newsletterTask->markNewsletterAsSent($newsletterEntity, $queue); + $this->newsletterTask->markNewsletterAsSent($newsletterEntity); continue; } // if there aren't any subscribers to process in batch (e.g. all unsubscribed or were deleted) continue with next batch @@ -312,7 +312,7 @@ class SendingQueue { 'completed newsletter sending', ['newsletter_id' => $newsletter->id, 'task_id' => $queue->taskId] ); - $this->newsletterTask->markNewsletterAsSent($newsletterEntity, $queue); + $this->newsletterTask->markNewsletterAsSent($newsletterEntity); $this->statsNotificationsScheduler->schedule($newsletterEntity); } $this->enforceSendingAndExecutionLimits($timer); diff --git a/mailpoet/lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php b/mailpoet/lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php index 77c9ac5520..7c6ae5b8af 100644 --- a/mailpoet/lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php +++ b/mailpoet/lib/Cron/Workers/SendingQueue/Tasks/Newsletter.php @@ -281,15 +281,14 @@ class Newsletter { ]; } - public function markNewsletterAsSent(NewsletterEntity $newsletter, Sending $sendingTask) { + public function markNewsletterAsSent(NewsletterEntity $newsletter) { // if it's a standard or notification history newsletter, update its status if ( $newsletter->getType() === NewsletterEntity::TYPE_STANDARD || $newsletter->getType() === NewsletterEntity::TYPE_NOTIFICATION_HISTORY ) { - $scheduledTask = $sendingTask->task(); $newsletter->setStatus(NewsletterEntity::STATUS_SENT); - $newsletter->setSentAt(new Carbon($scheduledTask->processedAt)); + $newsletter->setSentAt(Carbon::createFromTimestamp(WPFunctions::get()->currentTime('timestamp'))); $this->newslettersRepository->persist($newsletter); $this->newslettersRepository->flush(); } diff --git a/mailpoet/tests/integration/Cron/Workers/SendingQueue/Tasks/NewsletterTest.php b/mailpoet/tests/integration/Cron/Workers/SendingQueue/Tasks/NewsletterTest.php index d8c7a7fa02..55ddb8b8d4 100644 --- a/mailpoet/tests/integration/Cron/Workers/SendingQueue/Tasks/NewsletterTest.php +++ b/mailpoet/tests/integration/Cron/Workers/SendingQueue/Tasks/NewsletterTest.php @@ -265,7 +265,7 @@ class NewsletterTest extends \MailPoetTest { $newsletter->setStatus('not_sent'); $this->newslettersRepository->persist($newsletter); $this->newslettersRepository->flush(); - $this->newsletterTask->markNewsletterAsSent($newsletter, $this->sendingTask); + $this->newsletterTask->markNewsletterAsSent($newsletter); $updatedNewsletter = $this->newslettersRepository->findOneById($newsletter->getId()); $this->assertInstanceOf(NewsletterEntity::class, $updatedNewsletter); verify($updatedNewsletter->getStatus())->equals(NewsletterEntity::STATUS_SENT); @@ -278,7 +278,7 @@ class NewsletterTest extends \MailPoetTest { $newsletter->setStatus('not_sent'); $this->newslettersRepository->persist($newsletter); $this->newslettersRepository->flush(); - $this->newsletterTask->markNewsletterAsSent($newsletter, $this->sendingTask); + $this->newsletterTask->markNewsletterAsSent($newsletter); $updatedNewsletter = $this->newslettersRepository->findOneById($newsletter->getId()); $this->assertInstanceOf(NewsletterEntity::class, $updatedNewsletter); verify($updatedNewsletter->getStatus())->equals(NewsletterEntity::STATUS_SENT); @@ -291,7 +291,7 @@ class NewsletterTest extends \MailPoetTest { $newsletter->setStatus('not_sent'); $this->newslettersRepository->persist($newsletter); $this->newslettersRepository->flush(); - $this->newsletterTask->markNewsletterAsSent($newsletter, $this->sendingTask); + $this->newsletterTask->markNewsletterAsSent($newsletter); $updatedNewsletter = $this->newslettersRepository->findOneById($newsletter->getId()); $this->assertInstanceOf(NewsletterEntity::class, $updatedNewsletter); verify($updatedNewsletter->getStatus())->notEquals(NewsletterEntity::STATUS_SENT);