forked from MichaelYick/mailpoet
Use Doctrine to re-check authorized emails on save
[MAILPOET-2900]
This commit is contained in:
parent
57b5d0c3c0
commit
8fe3870608
@ -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]];
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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),
|
||||
]);
|
||||
|
Loading…
x
Reference in New Issue
Block a user