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();
}