Use Doctrine to re-check authorized emails on save
[MAILPOET-2900]
This commit is contained in:
@ -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'])) {
|
if (!empty($data['body'])) {
|
||||||
$data['body'] = $this->emoji->encodeForUTF8Column(MP_NEWSLETTERS_TABLE, 'body', $data['body']);
|
$data['body'] = $this->emoji->encodeForUTF8Column(MP_NEWSLETTERS_TABLE, 'body', $data['body']);
|
||||||
}
|
}
|
||||||
|
|
||||||
$newsletter = $this->getNewsletter($data);
|
$newsletter = $this->getNewsletter($data);
|
||||||
|
$oldSenderAddress = $newsletter->getSenderAddress();
|
||||||
|
|
||||||
$this->updateNewsletter($newsletter, $data);
|
$this->updateNewsletter($newsletter, $data);
|
||||||
$this->updateSegments($newsletter, $data['segments'] ?? []);
|
$this->updateSegments($newsletter, $data['segments'] ?? []);
|
||||||
$this->updateOptions($newsletter, $data['options'] ?? []);
|
$this->updateOptions($newsletter, $data['options'] ?? []);
|
||||||
@ -135,7 +131,7 @@ class NewsletterSaveController {
|
|||||||
$this->updateQueue($newsletter, $newsletterModel, $data['options'] ?? []);
|
$this->updateQueue($newsletter, $newsletterModel, $data['options'] ?? []);
|
||||||
|
|
||||||
$this->wp->doAction('mailpoet_api_newsletters_save_after', $newsletterModel);
|
$this->wp->doAction('mailpoet_api_newsletters_save_after', $newsletterModel);
|
||||||
$this->authorizedEmailsController->onNewsletterUpdate($newsletterModel, $oldNewsletterModel);
|
$this->authorizedEmailsController->onNewsletterSenderAddressUpdate($newsletter, $oldSenderAddress);
|
||||||
|
|
||||||
$previewUrl = NewsletterUrl::getViewInBrowserUrl($newsletterModel);
|
$previewUrl = NewsletterUrl::getViewInBrowserUrl($newsletterModel);
|
||||||
return [$newsletterModel->asArray(), ['preview_url' => $previewUrl]];
|
return [$newsletterModel->asArray(), ['preview_url' => $previewUrl]];
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
namespace MailPoet\Services;
|
namespace MailPoet\Services;
|
||||||
|
|
||||||
|
use MailPoet\Entities\NewsletterEntity;
|
||||||
use MailPoet\Mailer\Mailer;
|
use MailPoet\Mailer\Mailer;
|
||||||
use MailPoet\Mailer\MailerError;
|
use MailPoet\Mailer\MailerError;
|
||||||
use MailPoet\Mailer\MailerLog;
|
use MailPoet\Mailer\MailerLog;
|
||||||
@ -86,14 +87,14 @@ class AuthorizedEmailsController {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function onNewsletterUpdate(Newsletter $newsletter, Newsletter $oldNewsletter = null) {
|
public function onNewsletterSenderAddressUpdate(NewsletterEntity $newsletter, string $oldSenderAddress = null) {
|
||||||
if ($oldNewsletter === null || $newsletter->senderAddress === $oldNewsletter->senderAddress) {
|
if ($newsletter->getSenderAddress() === $oldSenderAddress) {
|
||||||
return;
|
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();
|
$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();
|
$this->checkAuthorizedEmailAddresses();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -197,7 +197,7 @@ class NewslettersTest extends \MailPoetTest {
|
|||||||
$this->endpoint = $this->createNewslettersEndpointWithMocks([
|
$this->endpoint = $this->createNewslettersEndpointWithMocks([
|
||||||
'wp' => $wp,
|
'wp' => $wp,
|
||||||
'cronHelper' => $this->cronHelper,
|
'cronHelper' => $this->cronHelper,
|
||||||
'authorizedEmailsController' => $this->make(AuthorizedEmailsController::class, ['onNewsletterUpdate' => Expected::once()]),
|
'authorizedEmailsController' => $this->make(AuthorizedEmailsController::class, ['onNewsletterSenderAddressUpdate' => Expected::once()]),
|
||||||
'emoji' => $emoji,
|
'emoji' => $emoji,
|
||||||
'subscribersFeature' => Stub::make(SubscribersFeature::class),
|
'subscribersFeature' => Stub::make(SubscribersFeature::class),
|
||||||
]);
|
]);
|
||||||
|
Reference in New Issue
Block a user