diff --git a/mailpoet/lib/Config/Initializer.php b/mailpoet/lib/Config/Initializer.php index 08db6a96d5..cae917c93f 100644 --- a/mailpoet/lib/Config/Initializer.php +++ b/mailpoet/lib/Config/Initializer.php @@ -11,7 +11,8 @@ use MailPoet\Automation\Integrations\MailPoet\MailPoetIntegration; use MailPoet\Automation\Integrations\WooCommerce\WooCommerceIntegration; use MailPoet\Cron\CronTrigger; use MailPoet\Cron\DaemonActionSchedulerRunner; -use MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor; +use MailPoet\EmailEditor\Engine\EmailEditor; +use MailPoet\EmailEditor\Integrations\MailPoet\EmailEditor as MailpoetEmailEditorIntegration; use MailPoet\InvalidStateException; use MailPoet\Migrator\Cli as MigratorCli; use MailPoet\PostEditorBlocks\PostEditorBlock; @@ -122,6 +123,9 @@ class Initializer { /** @var EmailEditor */ private $emailEditor; + /** @var MailpoetEmailEditorIntegration */ + private $mailpoetEmailEditorIntegration; + /** @var Url */ private $urlHelper; @@ -160,6 +164,7 @@ class Initializer { PersonalDataExporters $personalDataExporters, DaemonActionSchedulerRunner $actionSchedulerRunner, EmailEditor $emailEditor, + MailpoetEmailEditorIntegration $mailpoetEmailEditorIntegration, Url $urlHelper ) { $this->rendererFactory = $rendererFactory; @@ -192,6 +197,7 @@ class Initializer { $this->personalDataExporters = $personalDataExporters; $this->actionSchedulerRunner = $actionSchedulerRunner; $this->emailEditor = $emailEditor; + $this->mailpoetEmailEditorIntegration = $mailpoetEmailEditorIntegration; $this->urlHelper = $urlHelper; } @@ -273,6 +279,11 @@ class Initializer { 'multisiteDropTables', ]); + $this->wpFunctions->addFilter('mailpoet_email_editor_initialized', [ + $this->mailpoetEmailEditorIntegration, + 'initialize', + ]); + WPFunctions::get()->addAction(AutomationHooks::INITIALIZE, [ $this->automationMailPoetIntegration, 'register', diff --git a/mailpoet/lib/EmailEditor/Engine/EmailEditor.php b/mailpoet/lib/EmailEditor/Engine/EmailEditor.php index 13e4cacf75..53f4341878 100644 --- a/mailpoet/lib/EmailEditor/Engine/EmailEditor.php +++ b/mailpoet/lib/EmailEditor/Engine/EmailEditor.php @@ -22,10 +22,11 @@ class EmailEditor { } public function initialize(): void { - $this->registerEmailPostTypes(); add_filter('allowed_block_types_all', [$this, 'setAllowedBlocksInEmails'], 100, 2); add_filter('enqueue_block_editor_assets', [$this, 'cleanupBlockEditorAssets'], ~PHP_INT_MAX); add_filter('block_editor_settings_all', [$this, 'updateBlockEditorSettings'], 100, 2); + do_action('mailpoet_email_editor_initialized'); + $this->registerEmailPostTypes(); } /** diff --git a/mailpoet/lib/EmailEditor/Integrations/MailPoet/EmailEditor.php b/mailpoet/lib/EmailEditor/Integrations/MailPoet/EmailEditor.php index b6e7abf0d0..b991662abc 100644 --- a/mailpoet/lib/EmailEditor/Integrations/MailPoet/EmailEditor.php +++ b/mailpoet/lib/EmailEditor/Integrations/MailPoet/EmailEditor.php @@ -3,7 +3,6 @@ namespace MailPoet\EmailEditor\Integrations\MailPoet; use MailPoet\Config\Env; -use MailPoet\EmailEditor\Engine\EmailEditor as CoreEmailEditor; use MailPoet\Entities\NewsletterEntity; use MailPoet\Features\FeaturesController; use MailPoet\Newsletter\NewslettersRepository; @@ -12,9 +11,6 @@ use MailPoet\WP\Functions as WPFunctions; class EmailEditor { const MAILPOET_EMAIL_POST_TYPE = 'mailpoet_email'; - /** @var \MailPoet\EmailEditor\Engine\EmailEditor */ - private $coreEmailEditor; - /** @var WPFunctions */ private $wp; @@ -28,13 +24,11 @@ class EmailEditor { private $emailApiController; public function __construct( - CoreEmailEditor $coreEmailEditor, WPFunctions $wp, FeaturesController $featuresController, NewslettersRepository $newsletterRepository, EmailApiController $emailApiController ) { - $this->coreEmailEditor = $coreEmailEditor; $this->wp = $wp; $this->featuresController = $featuresController; $this->newsletterRepository = $newsletterRepository; @@ -50,7 +44,6 @@ class EmailEditor { $this->wp->addFilter('save_post', [$this, 'onEmailSave'], 10, 2); $this->wp->addAction('enqueue_block_editor_assets', [$this, 'enqueueAssets']); $this->extendEmailPostApi(); - $this->coreEmailEditor->initialize(); } public function addEmailPostType(array $postTypes): array { diff --git a/mailpoet/tests/integration/EmailEditor/Integration/MailPoet/EmailEditorTest.php b/mailpoet/tests/integration/EmailEditor/Integration/MailPoet/EmailEditorTest.php index ddea417edf..b777222a11 100644 --- a/mailpoet/tests/integration/EmailEditor/Integration/MailPoet/EmailEditorTest.php +++ b/mailpoet/tests/integration/EmailEditor/Integration/MailPoet/EmailEditorTest.php @@ -27,6 +27,7 @@ class EmailEditorTest extends \MailPoetTest { public function testItRegistersMailPoetEmailPostType() { $this->emailEditor->initialize(); + $this->diContainer->get(\MailPoet\EmailEditor\Engine\EmailEditor::class)->initialize(); $postTypes = get_post_types(); $this->assertArrayHasKey('mailpoet_email', $postTypes); }