Create a proxy method to get the processed date from within NewsletterEntity

[MAILPOET-3629]
This commit is contained in:
Rodrigo Primo
2021-09-15 10:53:16 -03:00
committed by Veljko V
parent 2e354173db
commit ffa91da869
3 changed files with 43 additions and 14 deletions

View File

@@ -3,7 +3,6 @@
namespace MailPoet\Config; namespace MailPoet\Config;
use MailPoet\Entities\NewsletterEntity; use MailPoet\Entities\NewsletterEntity;
use MailPoet\Entities\ScheduledTaskEntity;
use MailPoet\Entities\SendingQueueEntity; use MailPoet\Entities\SendingQueueEntity;
use MailPoet\Entities\SubscriberEntity; use MailPoet\Entities\SubscriberEntity;
use MailPoet\Form\Widget; use MailPoet\Form\Widget;
@@ -158,15 +157,9 @@ class Shortcodes {
foreach ($newsletters as $newsletter) { foreach ($newsletters as $newsletter) {
$queue = $newsletter->getLatestQueue(); $queue = $newsletter->getLatestQueue();
if ($queue instanceof SendingQueueEntity) {
$task = $queue->getTask();
} else {
$task = null;
}
$html .= '<li>' . $html .= '<li>' .
'<span class="mailpoet_archive_date">' . '<span class="mailpoet_archive_date">' .
$this->wp->applyFilters('mailpoet_archive_email_processed_date', $task) . $this->wp->applyFilters('mailpoet_archive_email_processed_date', $newsletter) .
'</span> '</span>
<span class="mailpoet_archive_subject">' . <span class="mailpoet_archive_subject">' .
$this->wp->applyFilters('mailpoet_archive_email_subject', $newsletter, $subscriber, $queue) . $this->wp->applyFilters('mailpoet_archive_email_subject', $newsletter, $subscriber, $queue) .
@@ -178,15 +171,13 @@ class Shortcodes {
return $html; return $html;
} }
public function renderArchiveDate($task) { public function renderArchiveDate(NewsletterEntity $newsletter) {
$timestamp = null; $timestamp = null;
$processedAt = $newsletter->getProcessedAt();
if ($task instanceof ScheduledTaskEntity) {
$processedAt = $task->getProcessedAt();
if (!is_null($processedAt)) { if (!is_null($processedAt)) {
$timestamp = $processedAt->getTimestamp(); $timestamp = $processedAt->getTimestamp();
} }
}
return $this->wp->dateI18n( return $this->wp->dateI18n(
$this->wp->getOption('date_format'), $this->wp->getOption('date_format'),

View File

@@ -470,4 +470,19 @@ class NewsletterEntity {
} }
return $body['globalStyles'][$category][$style] ?? null; 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;
}
} }

View File

@@ -158,6 +158,29 @@ class NewsletterEntityTest extends \MailPoetTest {
expect($task->getStatus())->equals(ScheduledTaskEntity::STATUS_PAUSED); 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() { public function _after() {
$this->cleanup(); $this->cleanup();
} }