Remove FormRepository from SettingsController
[MAILPOET-3643]
This commit is contained in:
@ -10,6 +10,7 @@ use MailPoet\Cron\Workers\InactiveSubscribers;
|
||||
use MailPoet\Cron\Workers\SubscribersEngagementScore;
|
||||
use MailPoet\Cron\Workers\WooCommerceSync;
|
||||
use MailPoet\Entities\ScheduledTaskEntity;
|
||||
use MailPoet\Form\FormMessageController;
|
||||
use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Newsletter\Sending\ScheduledTasksRepository;
|
||||
use MailPoet\Services\AuthorizedEmailsController;
|
||||
@ -50,6 +51,9 @@ class Settings extends APIEndpoint {
|
||||
/** @var ScheduledTasksRepository */
|
||||
private $scheduledTasksRepository;
|
||||
|
||||
/** @var FormMessageController */
|
||||
private $messageController;
|
||||
|
||||
public $permissions = [
|
||||
'global' => AccessControl::PERMISSION_MANAGE_SETTINGS,
|
||||
];
|
||||
@ -63,6 +67,7 @@ class Settings extends APIEndpoint {
|
||||
EntityManager $entityManager,
|
||||
StatisticsOpensRepository $statisticsOpensRepository,
|
||||
ScheduledTasksRepository $scheduledTasksRepository,
|
||||
FormMessageController $messageController,
|
||||
ServicesChecker $servicesChecker
|
||||
) {
|
||||
$this->settings = $settings;
|
||||
@ -74,6 +79,7 @@ class Settings extends APIEndpoint {
|
||||
$this->entityManager = $entityManager;
|
||||
$this->statisticsOpensRepository = $statisticsOpensRepository;
|
||||
$this->scheduledTasksRepository = $scheduledTasksRepository;
|
||||
$this->messageController = $messageController;
|
||||
}
|
||||
|
||||
public function get() {
|
||||
@ -103,7 +109,7 @@ class Settings extends APIEndpoint {
|
||||
|
||||
$this->authorizedEmailsController->onSettingsSave($settings);
|
||||
if ($signupConfirmation !== $this->settings->get('signup_confirmation.enabled')) {
|
||||
$this->settings->updateSuccessMessages();
|
||||
$this->messageController->updateSuccessMessages();
|
||||
}
|
||||
return $this->successResponse($this->settings->getAll());
|
||||
}
|
||||
|
@ -203,6 +203,7 @@ class ContainerConfigurator implements IContainerConfigurator {
|
||||
$container->autowire(\MailPoet\Form\Block\Textarea::class);
|
||||
$container->autowire(\MailPoet\Form\FormFactory::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Form\FormHtmlSanitizer::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Form\FormMessageController::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Form\FormSaveController::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Form\Listing\FormListingRepository::class)->setPublic(true);
|
||||
$container->autowire(\MailPoet\Form\PreviewPage::class);
|
||||
|
@ -4,8 +4,6 @@ namespace MailPoet\Settings;
|
||||
|
||||
use MailPoet\Cron\CronTrigger;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Entities\FormEntity;
|
||||
use MailPoet\Form\FormsRepository;
|
||||
use MailPoet\WP\Functions as WPFunctions;
|
||||
|
||||
class SettingsController {
|
||||
@ -25,17 +23,12 @@ class SettingsController {
|
||||
/** @var SettingsRepository */
|
||||
private $settingsRepository;
|
||||
|
||||
/** @var FormsRepository */
|
||||
private $formsRepository;
|
||||
|
||||
private static $instance;
|
||||
|
||||
public function __construct(
|
||||
SettingsRepository $settingsRepository,
|
||||
FormsRepository $formsRepository
|
||||
SettingsRepository $settingsRepository
|
||||
) {
|
||||
$this->settingsRepository = $settingsRepository;
|
||||
$this->formsRepository = $formsRepository;
|
||||
}
|
||||
|
||||
public function get($key, $default = null) {
|
||||
@ -131,32 +124,6 @@ class SettingsController {
|
||||
unset($this->settings[$key]);
|
||||
}
|
||||
|
||||
public function updateSuccessMessages(): void {
|
||||
$rightMessage = $this->getDefaultSuccessMessage();
|
||||
$wrongMessage = (
|
||||
$rightMessage === __('Check your inbox or spam folder to confirm your subscription.', 'mailpoet')
|
||||
? __('You’ve been successfully subscribed to our newsletter!', 'mailpoet')
|
||||
: __('Check your inbox or spam folder to confirm your subscription.', 'mailpoet')
|
||||
);
|
||||
/** @var FormEntity[] $forms */
|
||||
$forms = $this->formsRepository->findAll();
|
||||
foreach ($forms as $form) {
|
||||
$settings = $form->getSettings();
|
||||
if (isset($settings['success_message']) && $settings['success_message'] === $wrongMessage) {
|
||||
$settings['success_message'] = $rightMessage;
|
||||
$form->setSettings($settings);
|
||||
$this->settingsRepository->flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getDefaultSuccessMessage(): string {
|
||||
if ($this->get('signup_confirmation.enabled')) {
|
||||
return __('Check your inbox or spam folder to confirm your subscription.', 'mailpoet');
|
||||
}
|
||||
return __('You’ve been successfully subscribed to our newsletter!', 'mailpoet');
|
||||
}
|
||||
|
||||
private function ensureLoaded() {
|
||||
if ($this->loaded) {
|
||||
return;
|
||||
|
@ -4,25 +4,25 @@ namespace MailPoet\Test\DataFactories;
|
||||
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Entities\SegmentEntity;
|
||||
use MailPoet\Form\FormMessageController;
|
||||
use MailPoet\Models\Form as FormModel;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoetVendor\Carbon\Carbon;
|
||||
|
||||
class Form {
|
||||
|
||||
/** @var SettingsController */
|
||||
private $settingsController;
|
||||
/** @var FormMessageController */
|
||||
private $messageController;
|
||||
|
||||
private $data;
|
||||
|
||||
public function __construct() {
|
||||
$this->settingsController = ContainerWrapper::getInstance()->get(SettingsController::class);
|
||||
$this->messageController = ContainerWrapper::getInstance()->get(FormMessageController::class);
|
||||
$this->data = [
|
||||
'name' => 'New form',
|
||||
'body' => 'a:2:{i:0;a:5:{s:2:"id";s:5:"email";s:4:"name";s:5:"Email";s:4:"type";s:4:"text";s:6:"static";b:1;s:6:"params";a:2:{s:5:"label";s:5:"Email";s:8:"required";b:1;}}i:1;a:5:{s:2:"id";s:6:"submit";s:4:"name";s:6:"Submit";s:4:"type";s:6:"submit";s:6:"static";b:1;s:6:"params";a:1:{s:5:"label";s:10:"Subscribe!";}}}',
|
||||
'settings' => [
|
||||
'on_success' => 'message',
|
||||
'success_message' => $this->settingsController->getDefaultSuccessMessage(),
|
||||
'success_message' => $this->messageController->getDefaultSuccessMessage(),
|
||||
'segments' => [2],
|
||||
'segments_selected_by' => 'admin',
|
||||
],
|
||||
@ -131,7 +131,7 @@ class Form {
|
||||
}
|
||||
|
||||
public function withDefaultSuccessMessage() {
|
||||
$this->settingsController->updateSuccessMessages();
|
||||
$this->messageController->updateSuccessMessages();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -3,7 +3,7 @@
|
||||
use Facebook\WebDriver\Exception\UnrecognizedExceptionException;
|
||||
use Facebook\WebDriver\WebDriverKeys;
|
||||
use MailPoet\DI\ContainerWrapper;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Form\FormMessageController;
|
||||
use MailPoet\Test\DataFactories\Form;
|
||||
use MailPoet\Test\DataFactories\Segment;
|
||||
use MailPoet\Test\DataFactories\Subscriber;
|
||||
@ -177,13 +177,13 @@ class AcceptanceTester extends \Codeception\Actor {
|
||||
$i->cli(['widget', 'add', 'mailpoet_form', 'sidebar-1', '2', "--form=$form->id", '--title=Subscribe to Our Newsletter']);
|
||||
|
||||
// subscribe
|
||||
/** @var SettingsController $settingsController */
|
||||
$settingsController = ContainerWrapper::getInstance()->get(SettingsController::class);
|
||||
/** @var FormMessageController $messageController */
|
||||
$messageController = ContainerWrapper::getInstance()->get(FormMessageController::class);
|
||||
|
||||
$i->amOnUrl(self::WP_URL);
|
||||
$i->fillField('[data-automation-id="form_email"]', 'subscriber@example.com');
|
||||
$i->click('[data-automation-id="subscribe-submit-button"]');
|
||||
$i->waitForText($settingsController->getDefaultSuccessMessage(), 30, '.mailpoet_validate_success');
|
||||
$i->waitForText($messageController->getDefaultSuccessMessage(), 30, '.mailpoet_validate_success');
|
||||
$i->seeNoJSErrors();
|
||||
}
|
||||
|
||||
|
@ -10,6 +10,7 @@ use MailPoet\Config\ServicesChecker;
|
||||
use MailPoet\Cron\Workers\InactiveSubscribers;
|
||||
use MailPoet\Cron\Workers\WooCommerceSync;
|
||||
use MailPoet\Entities\ScheduledTaskEntity;
|
||||
use MailPoet\Form\FormMessageController;
|
||||
use MailPoet\Mailer\MailerLog;
|
||||
use MailPoet\Models\ScheduledTask;
|
||||
use MailPoet\Newsletter\NewslettersRepository;
|
||||
@ -51,6 +52,7 @@ class SettingsTest extends \MailPoetTest {
|
||||
$this->diContainer->get(EntityManager::class),
|
||||
$this->diContainer->get(StatisticsOpensRepository::class),
|
||||
$this->diContainer->get(ScheduledTasksRepository::class),
|
||||
$this->diContainer->get(FormMessageController::class),
|
||||
$this->make(ServicesChecker::class, ['isMailPoetAPIKeyPendingApproval' => false])
|
||||
);
|
||||
}
|
||||
@ -88,6 +90,7 @@ class SettingsTest extends \MailPoetTest {
|
||||
$this->diContainer->get(EntityManager::class),
|
||||
$this->diContainer->get(StatisticsOpensRepository::class),
|
||||
$this->diContainer->get(ScheduledTasksRepository::class),
|
||||
$this->diContainer->get(FormMessageController::class),
|
||||
$this->make(ServicesChecker::class, ['isMailPoetAPIKeyPendingApproval' => false])
|
||||
);
|
||||
|
||||
@ -116,6 +119,7 @@ class SettingsTest extends \MailPoetTest {
|
||||
$this->diContainer->get(EntityManager::class),
|
||||
$this->diContainer->get(StatisticsOpensRepository::class),
|
||||
$this->diContainer->get(ScheduledTasksRepository::class),
|
||||
$this->diContainer->get(FormMessageController::class),
|
||||
$this->make(ServicesChecker::class, ['isMailPoetAPIKeyPendingApproval' => false])
|
||||
);
|
||||
|
||||
@ -138,6 +142,7 @@ class SettingsTest extends \MailPoetTest {
|
||||
$this->diContainer->get(EntityManager::class),
|
||||
$this->diContainer->get(StatisticsOpensRepository::class),
|
||||
$this->diContainer->get(ScheduledTasksRepository::class),
|
||||
$this->diContainer->get(FormMessageController::class),
|
||||
$this->make(ServicesChecker::class)
|
||||
);
|
||||
|
||||
|
@ -2,6 +2,7 @@
|
||||
|
||||
namespace MailPoet\Test\Models;
|
||||
|
||||
use MailPoet\Form\FormMessageController;
|
||||
use MailPoet\Models\Form;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
|
||||
@ -10,9 +11,13 @@ class FormTest extends \MailPoetTest {
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
/** @var FormMessageController */
|
||||
private $messageController;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->settings = SettingsController::getInstance();
|
||||
$this->messageController = $this->diContainer->get(FormMessageController::class);
|
||||
$this->form = Form::createOrUpdate([
|
||||
'name' => 'My Form',
|
||||
]);
|
||||
@ -153,7 +158,7 @@ class FormTest extends \MailPoetTest {
|
||||
'settings' => ['success_message' => 'Thanks for joining us!'],
|
||||
]);
|
||||
$this->settings->set('signup_confirmation.enabled', '0');
|
||||
$this->settings->updateSuccessMessages();
|
||||
$this->messageController->updateSuccessMessages();
|
||||
$default = Form::findOne($default->id);
|
||||
$custom = Form::findOne($custom->id);
|
||||
assert($default instanceof Form);
|
||||
@ -174,7 +179,7 @@ class FormTest extends \MailPoetTest {
|
||||
'settings' => ['success_message' => 'Thanks for joining us!'],
|
||||
]);
|
||||
$this->settings->set('signup_confirmation.enabled', '1');
|
||||
$this->settings->updateSuccessMessages();
|
||||
$this->messageController->updateSuccessMessages();
|
||||
$default = Form::findOne($default->id);
|
||||
$custom = Form::findOne($custom->id);
|
||||
assert($default instanceof Form);
|
||||
|
@ -3,9 +3,7 @@
|
||||
namespace MailPoet\Test\Settings;
|
||||
|
||||
use Codeception\Stub;
|
||||
use MailPoet\Entities\FormEntity;
|
||||
use MailPoet\Entities\SettingEntity;
|
||||
use MailPoet\Form\FormsRepository;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
use MailPoet\Settings\SettingsRepository;
|
||||
|
||||
@ -14,13 +12,9 @@ class SettingsControllerTest extends \MailPoetTest {
|
||||
/** @var SettingsController */
|
||||
private $controller;
|
||||
|
||||
/** @var FormsRepository */
|
||||
private $formsReposittory;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->controller = $this->diContainer->get(SettingsController::class);
|
||||
$this->formsReposittory = $this->diContainer->get(FormsRepository::class);
|
||||
$this->clear();
|
||||
}
|
||||
|
||||
@ -121,40 +115,8 @@ class SettingsControllerTest extends \MailPoetTest {
|
||||
$this->assertEquals(true, true);
|
||||
}
|
||||
|
||||
public function testItReturnsCorrectSuccessMessage(): void {
|
||||
$this->controller->set('signup_confirmation.enabled', 1);
|
||||
expect($this->controller->getDefaultSuccessMessage())->equals(__('Check your inbox or spam folder to confirm your subscription.', 'mailpoet'));
|
||||
$this->controller->set('signup_confirmation.enabled', 0);
|
||||
expect($this->controller->getDefaultSuccessMessage())->equals(__('You’ve been successfully subscribed to our newsletter!', 'mailpoet'));
|
||||
}
|
||||
|
||||
public function testItUpdatesSuccessMessagesForForms(): void {
|
||||
$this->controller->set('signup_confirmation.enabled', 1);
|
||||
$form = new FormEntity('test form');
|
||||
$form->setSettings(['success_message' => __('Check your inbox or spam folder to confirm your subscription.', 'mailpoet')]);
|
||||
$this->entityManager->persist($form);
|
||||
$this->entityManager->flush();
|
||||
|
||||
$this->controller->set('signup_confirmation.enabled', 0);
|
||||
$this->controller->updateSuccessMessages();
|
||||
$forms = $this->formsReposittory->findAll();
|
||||
expect($forms)->count(1);
|
||||
foreach ($forms as $form) {
|
||||
expect($form->getSettings()['success_message'] ?? null)->equals(__('You’ve been successfully subscribed to our newsletter!', 'mailpoet'));
|
||||
}
|
||||
|
||||
$this->controller->set('signup_confirmation.enabled', 1);
|
||||
$this->controller->updateSuccessMessages();
|
||||
$forms = $this->formsReposittory->findAll();
|
||||
expect($forms)->count(1);
|
||||
foreach ($forms as $form) {
|
||||
expect($form->getSettings()['success_message'] ?? null)->equals(__('Check your inbox or spam folder to confirm your subscription.', 'mailpoet'));
|
||||
}
|
||||
}
|
||||
|
||||
private function clear() {
|
||||
$this->truncateEntity(SettingEntity::class);
|
||||
$this->truncateEntity(FormEntity::class);
|
||||
}
|
||||
|
||||
public function _after() {
|
||||
|
Reference in New Issue
Block a user