From 8fe3870608ba41bc1c227579419fa438ecd3fe82 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jakes=CC=8C?= Date: Wed, 13 May 2020 13:35:44 +0200 Subject: [PATCH] Use Doctrine to re-check authorized emails on save [MAILPOET-2900] --- lib/Newsletter/NewsletterSaveController.php | 10 +++------- lib/Services/AuthorizedEmailsController.php | 9 +++++---- tests/integration/API/JSON/v1/NewslettersTest.php | 2 +- 3 files changed, 9 insertions(+), 12 deletions(-) diff --git a/lib/Newsletter/NewsletterSaveController.php b/lib/Newsletter/NewsletterSaveController.php index c5c093b9c2..8ef073b2e3 100644 --- a/lib/Newsletter/NewsletterSaveController.php +++ b/lib/Newsletter/NewsletterSaveController.php @@ -102,17 +102,13 @@ class NewsletterSaveController { } } - $oldNewsletterModel = null; - if (isset($data['id'])) { - $fetched = Newsletter::findOne(intval($data['id'])); - $oldNewsletterModel = $fetched instanceof Newsletter ? $fetched : null; - } - if (!empty($data['body'])) { $data['body'] = $this->emoji->encodeForUTF8Column(MP_NEWSLETTERS_TABLE, 'body', $data['body']); } $newsletter = $this->getNewsletter($data); + $oldSenderAddress = $newsletter->getSenderAddress(); + $this->updateNewsletter($newsletter, $data); $this->updateSegments($newsletter, $data['segments'] ?? []); $this->updateOptions($newsletter, $data['options'] ?? []); @@ -135,7 +131,7 @@ class NewsletterSaveController { $this->updateQueue($newsletter, $newsletterModel, $data['options'] ?? []); $this->wp->doAction('mailpoet_api_newsletters_save_after', $newsletterModel); - $this->authorizedEmailsController->onNewsletterUpdate($newsletterModel, $oldNewsletterModel); + $this->authorizedEmailsController->onNewsletterSenderAddressUpdate($newsletter, $oldSenderAddress); $previewUrl = NewsletterUrl::getViewInBrowserUrl($newsletterModel); return [$newsletterModel->asArray(), ['preview_url' => $previewUrl]]; diff --git a/lib/Services/AuthorizedEmailsController.php b/lib/Services/AuthorizedEmailsController.php index 9fc36b2fbb..7bc071e1e2 100644 --- a/lib/Services/AuthorizedEmailsController.php +++ b/lib/Services/AuthorizedEmailsController.php @@ -2,6 +2,7 @@ namespace MailPoet\Services; +use MailPoet\Entities\NewsletterEntity; use MailPoet\Mailer\Mailer; use MailPoet\Mailer\MailerError; use MailPoet\Mailer\MailerLog; @@ -86,14 +87,14 @@ class AuthorizedEmailsController { } } - public function onNewsletterUpdate(Newsletter $newsletter, Newsletter $oldNewsletter = null) { - if ($oldNewsletter === null || $newsletter->senderAddress === $oldNewsletter->senderAddress) { + public function onNewsletterSenderAddressUpdate(NewsletterEntity $newsletter, string $oldSenderAddress = null) { + if ($newsletter->getSenderAddress() === $oldSenderAddress) { return; } - if ($newsletter->type === Newsletter::TYPE_STANDARD && $newsletter->status === Newsletter::STATUS_SCHEDULED) { + if ($newsletter->getType() === NewsletterEntity::TYPE_STANDARD && $newsletter->getStatus() === NewsletterEntity::STATUS_SCHEDULED) { $this->checkAuthorizedEmailAddresses(); } - if (in_array($newsletter->type, $this->automaticEmailTypes, true) && $newsletter->status === Newsletter::STATUS_ACTIVE) { + if (in_array($newsletter->getType(), $this->automaticEmailTypes, true) && $newsletter->getStatus() === Newsletter::STATUS_ACTIVE) { $this->checkAuthorizedEmailAddresses(); } } diff --git a/tests/integration/API/JSON/v1/NewslettersTest.php b/tests/integration/API/JSON/v1/NewslettersTest.php index b2c94af6be..4757addaec 100644 --- a/tests/integration/API/JSON/v1/NewslettersTest.php +++ b/tests/integration/API/JSON/v1/NewslettersTest.php @@ -197,7 +197,7 @@ class NewslettersTest extends \MailPoetTest { $this->endpoint = $this->createNewslettersEndpointWithMocks([ 'wp' => $wp, 'cronHelper' => $this->cronHelper, - 'authorizedEmailsController' => $this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::once()]), + 'authorizedEmailsController' => $this->make(AuthorizedEmailsController::class, ['onNewsletterSenderAddressUpdate' => Expected::once()]), 'emoji' => $emoji, 'subscribersFeature' => Stub::make(SubscribersFeature::class), ]);