diff --git a/lib/Config/Shortcodes.php b/lib/Config/Shortcodes.php index d30df3f998..a7fbaaadd4 100644 --- a/lib/Config/Shortcodes.php +++ b/lib/Config/Shortcodes.php @@ -3,7 +3,6 @@ namespace MailPoet\Config; use MailPoet\Entities\NewsletterEntity; -use MailPoet\Entities\ScheduledTaskEntity; use MailPoet\Entities\SendingQueueEntity; use MailPoet\Entities\SubscriberEntity; use MailPoet\Form\Widget; @@ -158,15 +157,9 @@ class Shortcodes { foreach ($newsletters as $newsletter) { $queue = $newsletter->getLatestQueue(); - if ($queue instanceof SendingQueueEntity) { - $task = $queue->getTask(); - } else { - $task = null; - } - $html .= '
  • ' . '' . - $this->wp->applyFilters('mailpoet_archive_email_processed_date', $task) . + $this->wp->applyFilters('mailpoet_archive_email_processed_date', $newsletter) . ' ' . $this->wp->applyFilters('mailpoet_archive_email_subject', $newsletter, $subscriber, $queue) . @@ -178,14 +171,12 @@ class Shortcodes { return $html; } - public function renderArchiveDate($task) { + public function renderArchiveDate(NewsletterEntity $newsletter) { $timestamp = null; + $processedAt = $newsletter->getProcessedAt(); - if ($task instanceof ScheduledTaskEntity) { - $processedAt = $task->getProcessedAt(); - if (!is_null($processedAt)) { - $timestamp = $processedAt->getTimestamp(); - } + if (!is_null($processedAt)) { + $timestamp = $processedAt->getTimestamp(); } return $this->wp->dateI18n( diff --git a/lib/Entities/NewsletterEntity.php b/lib/Entities/NewsletterEntity.php index afe1973a1c..ef71d7456f 100644 --- a/lib/Entities/NewsletterEntity.php +++ b/lib/Entities/NewsletterEntity.php @@ -470,4 +470,19 @@ class NewsletterEntity { } return $body['globalStyles'][$category][$style] ?? null; } + + public function getProcessedAt(): ?DateTimeInterface { + $processedAt = null; + $queue = $this->getLatestQueue(); + + if ($queue instanceof SendingQueueEntity) { + $task = $queue->getTask(); + + if ($task instanceof ScheduledTaskEntity) { + $processedAt = $task->getProcessedAt(); + } + } + + return $processedAt; + } } diff --git a/tests/integration/Entities/NewsletterEntityTest.php b/tests/integration/Entities/NewsletterEntityTest.php index d08751e266..7eff84fa44 100644 --- a/tests/integration/Entities/NewsletterEntityTest.php +++ b/tests/integration/Entities/NewsletterEntityTest.php @@ -158,6 +158,29 @@ class NewsletterEntityTest extends \MailPoetTest { expect($task->getStatus())->equals(ScheduledTaskEntity::STATUS_PAUSED); } + public function testItGetProcessedAtReturnsNullIfEmailHasNotBeingQueuedYet() { + $newsletter = $this->createNewsletter(); + $this->assertNull($newsletter->getProcessedAt()); + } + + public function testItGetProcessedReturnsValue() { + $processedAt = new \DateTimeImmutable('2012-01-02 12:32:34'); + $newsletter = $this->createNewsletter(); + $task = new ScheduledTaskEntity(); + $task->setProcessedAt($processedAt); + $this->entityManager->persist($task); + + $queue = new SendingQueueEntity(); + $queue->setNewsletter($newsletter); + $queue->setTask($task); + $this->entityManager->persist($queue); + + $newsletter->getQueues()->add($queue); + $this->entityManager->flush(); + + $this->assertSame($processedAt, $newsletter->getProcessedAt()); + } + public function _after() { $this->cleanup(); }