Return input & output filters back to API endpoint
[MAILPOET-2900]
This commit is contained in:
@ -143,9 +143,11 @@ class Newsletters extends APIEndpoint {
|
||||
}
|
||||
|
||||
public function save($data = []) {
|
||||
$data = $this->wp->applyFilters('mailpoet_api_newsletters_save_before', $data);
|
||||
$newsletter = $this->newsletterSaveController->save($data);
|
||||
$response = $this->newslettersResponseBuilder->build($newsletter);
|
||||
$previewUrl = $this->getViewInBrowserUrl($newsletter);
|
||||
$response = $this->wp->applyFilters('mailpoet_api_newsletters_save_after', $response);
|
||||
return $this->successResponse($response, ['preview_url' => $previewUrl]);
|
||||
}
|
||||
|
||||
|
@ -23,7 +23,6 @@ use MailPoet\Services\AuthorizedEmailsController;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\UnexpectedValueException;
|
||||
use MailPoet\WP\Emoji;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
use MailPoetVendor\Doctrine\ORM\EntityManager;
|
||||
|
||||
class NewsletterSaveController {
|
||||
@ -60,9 +59,6 @@ class NewsletterSaveController {
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
/** @var WPFunctions */
|
||||
private $wp;
|
||||
|
||||
public function __construct(
|
||||
AuthorizedEmailsController $authorizedEmailsController,
|
||||
Emoji $emoji,
|
||||
@ -74,8 +70,7 @@ class NewsletterSaveController {
|
||||
NewsletterTemplatesRepository $newsletterTemplatesRepository,
|
||||
PostNotificationScheduler $postNotificationScheduler,
|
||||
ScheduledTasksRepository $scheduledTasksRepository,
|
||||
SettingsController $settings,
|
||||
WPFunctions $wp
|
||||
SettingsController $settings
|
||||
) {
|
||||
$this->authorizedEmailsController = $authorizedEmailsController;
|
||||
$this->emoji = $emoji;
|
||||
@ -88,12 +83,9 @@ class NewsletterSaveController {
|
||||
$this->postNotificationScheduler = $postNotificationScheduler;
|
||||
$this->scheduledTasksRepository = $scheduledTasksRepository;
|
||||
$this->settings = $settings;
|
||||
$this->wp = $wp;
|
||||
}
|
||||
|
||||
public function save(array $data = []): NewsletterEntity {
|
||||
$data = $this->wp->applyFilters('mailpoet_api_newsletters_save_before', $data);
|
||||
|
||||
if (!empty($data['template_id'])) {
|
||||
$template = $this->newsletterTemplatesRepository->findOneById($data['template_id']);
|
||||
if ($template) {
|
||||
@ -128,8 +120,6 @@ class NewsletterSaveController {
|
||||
|
||||
$this->rescheduleIfNeeded($newsletter, $newsletterModel);
|
||||
$this->updateQueue($newsletter, $newsletterModel, $data['options'] ?? []);
|
||||
|
||||
$this->wp->doAction('mailpoet_api_newsletters_save_after', $newsletterModel);
|
||||
$this->authorizedEmailsController->onNewsletterSenderAddressUpdate($newsletter, $oldSenderAddress);
|
||||
return $newsletter;
|
||||
}
|
||||
|
@ -130,15 +130,15 @@ class TransactionalEmails {
|
||||
}
|
||||
|
||||
public function enableEmailSettingsSyncToWooCommerce() {
|
||||
$this->wp->addAction('mailpoet_api_newsletters_save_after', [$this, 'syncEmailSettingsToWooCommerce']);
|
||||
$this->wp->addFilter('mailpoet_api_newsletters_save_after', [$this, 'syncEmailSettingsToWooCommerce']);
|
||||
}
|
||||
|
||||
public function syncEmailSettingsToWooCommerce(Newsletter $newsletter) {
|
||||
if ($newsletter->type !== NewsletterEntity::TYPE_WC_TRANSACTIONAL_EMAIL) {
|
||||
return false;
|
||||
public function syncEmailSettingsToWooCommerce(array $newsletterData) {
|
||||
if ($newsletterData['type'] !== NewsletterEntity::TYPE_WC_TRANSACTIONAL_EMAIL) {
|
||||
return $newsletterData;
|
||||
}
|
||||
$newsletterArray = $newsletter->asArray();
|
||||
$styles = $newsletterArray['body']['globalStyles'];
|
||||
|
||||
$styles = $newsletterData['body']['globalStyles'];
|
||||
$optionsToSync = [
|
||||
'woocommerce_email_background_color' => $styles['body']['backgroundColor'],
|
||||
'woocommerce_email_base_color' => $styles['woocommerce']['brandingColor'],
|
||||
@ -148,6 +148,7 @@ class TransactionalEmails {
|
||||
foreach ($optionsToSync as $wcName => $value) {
|
||||
$this->wp->updateOption($wcName, $value);
|
||||
}
|
||||
return $newsletterData;
|
||||
}
|
||||
|
||||
public function getWCEmailSettings() {
|
||||
|
@ -3,6 +3,7 @@
|
||||
namespace MailPoet\WooCommerce;
|
||||
|
||||
use Codeception\Stub;
|
||||
use MailPoet\API\JSON\ResponseBuilders\NewslettersResponseBuilder;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Entities\NewsletterEntity;
|
||||
use MailPoet\Models\Newsletter;
|
||||
@ -160,8 +161,8 @@ class TransactionalEmailsTest extends \MailPoetTest {
|
||||
);
|
||||
$transactionalEmails->enableEmailSettingsSyncToWooCommerce();
|
||||
|
||||
$newsletter = Newsletter::findOne($newsletter->getId());
|
||||
$wp->doAction('mailpoet_api_newsletters_save_after', $newsletter);
|
||||
$newsletterData = $this->diContainer->get(NewslettersResponseBuilder::class)->build($newsletter);
|
||||
$wp->applyFilters('mailpoet_api_newsletters_save_after', $newsletterData);
|
||||
|
||||
expect($wp->getOption('woocommerce_email_background_color'))->equals('#777777');
|
||||
expect($wp->getOption('woocommerce_email_base_color'))->equals('#888888');
|
||||
|
Reference in New Issue
Block a user