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;
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 .= '<li>' .
'<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 class="mailpoet_archive_subject">' .
$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(

View File

@ -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;
}
}

View File

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