Update call Newsletter::preProcessNewsletter()

Newsletter::preProcessNewsletter() was refactored in a previous commit
to use Doctrine instead of Paris. As a result, the signature of this
method was changed, but one call was left using the old signature and
passing a Paris model instead of a Doctrine entity. This commit fixes
this issue.

[MAILPOET-5682]
This commit is contained in:
Rodrigo Primo
2023-11-21 22:51:19 -03:00
committed by Jan Jakeš
parent 0604d97212
commit b2c2be4fb6
2 changed files with 16 additions and 8 deletions

View File

@@ -156,7 +156,7 @@ class NewsletterSaveController {
} }
$this->rescheduleIfNeeded($newsletter, $newsletterModel); $this->rescheduleIfNeeded($newsletter, $newsletterModel);
$this->updateQueue($newsletter, $newsletterModel, $data['options'] ?? []); $this->updateQueue($newsletter, $data['options'] ?? []);
$this->authorizedEmailsController->onNewsletterSenderAddressUpdate($newsletter, $oldSenderAddress); $this->authorizedEmailsController->onNewsletterSenderAddressUpdate($newsletter, $oldSenderAddress);
return $newsletter; return $newsletter;
} }
@@ -410,7 +410,7 @@ class NewsletterSaveController {
} }
} }
private function updateQueue(NewsletterEntity $newsletter, Newsletter $newsletterModel, array $options) { private function updateQueue(NewsletterEntity $newsletter, array $options) {
if ($newsletter->getType() !== NewsletterEntity::TYPE_STANDARD) { if ($newsletter->getType() !== NewsletterEntity::TYPE_STANDARD) {
return; return;
} }
@@ -425,15 +425,18 @@ class NewsletterSaveController {
$this->entityManager->remove($queue); $this->entityManager->remove($queue);
$newsletter->setStatus(NewsletterEntity::STATUS_DRAFT); $newsletter->setStatus(NewsletterEntity::STATUS_DRAFT);
} else { } else {
$queueModel = $newsletterModel->getQueue(); $queue->setNewsletterRenderedSubject(null);
$queueModel->newsletterRenderedSubject = null; $queue->setNewsletterRenderedBody(null);
$queueModel->newsletterRenderedBody = null; $this->entityManager->persist($queue);
$newsletterQueueTask = new NewsletterQueueTask(); $newsletterQueueTask = new NewsletterQueueTask();
$newsletterQueueTask->preProcessNewsletter($newsletter, $queueModel); $task = $queue->getTask();
// 'preProcessNewsletter' modifies queue by old model - let's reload it if (!$task instanceof ScheduledTaskEntity) {
$this->entityManager->refresh($queue); throw new InvalidStateException();
}
$newsletterQueueTask->preProcessNewsletter($newsletter, $task);
} }
$this->entityManager->flush(); $this->entityManager->flush();
} }

View File

@@ -407,6 +407,11 @@ class NewsletterSaveControllerTest extends \MailPoetTest {
$newsletter->getQueues()->add($queue); $newsletter->getQueues()->add($queue);
$this->entityManager->flush(); $this->entityManager->flush();
// I'm not sure why this is needed, but without it a test fails as $task->getSendingQueue() returns
// null in \MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter::preProcessNewsletter()
$this->entityManager->refresh($task);
return $queue; return $queue;
} }