Improve NewsletterSaveController::save to support new editor
The method is used in API for creating a new newsletter. To be able to use the API for the new editor, we also need to make sure that a WP Post is created. For now, we can signal that the email is intended for a new editor by adding a flag to the initial data. [MAILPOET-5810]
This commit is contained in:
committed by
Aschepikov
parent
d5ecfc58e0
commit
ee9ee7c491
@@ -3,6 +3,7 @@
|
||||
namespace MailPoet\Newsletter;
|
||||
|
||||
use MailPoet\Cron\Workers\SendingQueue\Tasks\Newsletter as NewsletterQueueTask;
|
||||
use MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor;
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Entities\NewsletterOptionEntity;
|
||||
use MailPoet\Entities\NewsletterOptionFieldEntity;
|
||||
@@ -151,6 +152,9 @@ class NewsletterSaveController {
|
||||
$this->rescheduleIfNeeded($newsletter);
|
||||
$this->updateQueue($newsletter, $data['options'] ?? []);
|
||||
$this->authorizedEmailsController->onNewsletterSenderAddressUpdate($newsletter, $oldSenderAddress);
|
||||
if (isset($data['new_editor']) && $data['new_editor']) {
|
||||
$this->ensureWpPost($newsletter);
|
||||
}
|
||||
return $newsletter;
|
||||
}
|
||||
|
||||
@@ -433,4 +437,20 @@ class NewsletterSaveController {
|
||||
}
|
||||
$this->entityManager->flush();
|
||||
}
|
||||
|
||||
private function ensureWpPost(NewsletterEntity $newsletter): void {
|
||||
if ($newsletter->getWpPostId()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$newPostId = $this->wp->wpInsertPost([
|
||||
'post_content' => '',
|
||||
'post_type' => EmailEditor::MAILPOET_EMAIL_POST_TYPE,
|
||||
'post_status' => 'draft',
|
||||
'post_author' => $this->wp->getCurrentUserId(),
|
||||
'post_title' => __('New Email', 'mailpoet'),
|
||||
]);
|
||||
$newsletter->setWpPost($this->entityManager->getReference(WpPostEntity::class, $newPostId));
|
||||
$this->entityManager->flush();
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user