Force Woo email settings filters for woo template editor

In order to load correct global styles even when the feature for using MailPoet's Woo template is off, we need to make sure we always apply filters before we load woo styles.
[MAILPOET-3645]
This commit is contained in:
Rostislav Wolny
2021-06-10 10:02:54 +02:00
committed by Veljko V
parent d5f6f63ebe
commit 59c8dfe0a7

View File

@ -12,6 +12,7 @@ use MailPoet\Settings\SettingsController;
use MailPoet\Settings\UserFlagsController;
use MailPoet\Subscribers\SubscribersRepository;
use MailPoet\WooCommerce\Helper as WooCommerceHelper;
use MailPoet\WooCommerce\TransactionalEmailHooks;
use MailPoet\WooCommerce\TransactionalEmails;
use MailPoet\WP\Functions as WPFunctions;
@ -45,6 +46,9 @@ class NewsletterEditor {
/** @var SubscribersRepository */
private $subscribersRepository;
/** @var TransactionalEmailHooks */
private $wooEmailHooks;
public function __construct(
PageRenderer $pageRenderer,
SettingsController $settings,
@ -54,7 +58,8 @@ class NewsletterEditor {
TransactionalEmails $wcTransactionalEmails,
ShortcodesHelper $shortcodesHelper,
ServicesChecker $servicesChecker,
SubscribersRepository $subscribersRepository
SubscribersRepository $subscribersRepository,
TransactionalEmailHooks $wooEmailHooks
) {
$this->pageRenderer = $pageRenderer;
$this->settings = $settings;
@ -65,6 +70,7 @@ class NewsletterEditor {
$this->servicesChecker = $servicesChecker;
$this->shortcodesHelper = $shortcodesHelper;
$this->subscribersRepository = $subscribersRepository;
$this->wooEmailHooks = $wooEmailHooks;
}
public function render() {
@ -88,6 +94,10 @@ class NewsletterEditor {
$subscriberData = $subscriber ? $this->formatSubscriber($subscriber) : [];
$woocommerceData = [];
if ($this->woocommerceHelper->isWooCommerceActive()) {
// Activate hooks for Woo emails styles so that we always load styles set in Woo email customizer
if ($newsletterId === (int)$this->settings->get(TransactionalEmails::SETTING_EMAIL_ID)) {
$this->wooEmailHooks->overrideStylesForWooEmails();
}
$wcEmailSettings = $this->wcTransactionalEmails->getWCEmailSettings();
$woocommerceData = [
'email_headings' => $this->wcTransactionalEmails->getEmailHeadings(),