Create FormMessageController
[MAILPOET-3643]
This commit is contained in:
48
lib/Form/FormMessageController.php
Normal file
48
lib/Form/FormMessageController.php
Normal file
@ -0,0 +1,48 @@
|
||||
<?php declare(strict_types = 1);
|
||||
|
||||
namespace MailPoet\Form;
|
||||
|
||||
use MailPoet\Entities\FormEntity;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
|
||||
class FormMessageController {
|
||||
/** @var FormsRepository */
|
||||
private $formsRepository;
|
||||
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
public function __construct(
|
||||
FormsRepository $formsRepository,
|
||||
SettingsController $settingsController
|
||||
) {
|
||||
$this->formsRepository = $formsRepository;
|
||||
$this->settings = $settingsController;
|
||||
}
|
||||
|
||||
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->formsRepository->flush();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public function getDefaultSuccessMessage(): string {
|
||||
if ($this->settings->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');
|
||||
}
|
||||
}
|
63
tests/integration/Form/FormMessageControllerTest.php
Normal file
63
tests/integration/Form/FormMessageControllerTest.php
Normal file
@ -0,0 +1,63 @@
|
||||
<?php declare(strict_types = 1);
|
||||
|
||||
namespace MailPoet\Form;
|
||||
|
||||
use MailPoet\Entities\FormEntity;
|
||||
use MailPoet\Settings\SettingsController;
|
||||
|
||||
class FormMessageControllerTest extends \MailPoetTest {
|
||||
/** @var FormMessageController */
|
||||
private $controller;
|
||||
|
||||
/** @var SettingsController */
|
||||
private $settings;
|
||||
|
||||
/** @var FormsRepository */
|
||||
private $formsRepository;
|
||||
|
||||
public function _before() {
|
||||
parent::_before();
|
||||
$this->controller = $this->diContainer->get(FormMessageController::class);
|
||||
$this->settings = $this->diContainer->get(SettingsController::class);
|
||||
$this->formsRepository = $this->diContainer->get(FormsRepository::class);
|
||||
}
|
||||
|
||||
public function testItReturnsCorrectSuccessMessage(): void {
|
||||
$this->settings->set('signup_confirmation.enabled', 1);
|
||||
expect($this->controller->getDefaultSuccessMessage())->equals(__('Check your inbox or spam folder to confirm your subscription.', 'mailpoet'));
|
||||
$this->settings->set('signup_confirmation.enabled', 0);
|
||||
expect($this->controller->getDefaultSuccessMessage())->equals(__('You’ve been successfully subscribed to our newsletter!', 'mailpoet'));
|
||||
}
|
||||
|
||||
public function testItUpdatesSuccessMessagesForForms(): void {
|
||||
$this->settings->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->settings->set('signup_confirmation.enabled', 0);
|
||||
$this->controller->updateSuccessMessages();
|
||||
$forms = $this->formsRepository->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->settings->set('signup_confirmation.enabled', 1);
|
||||
$this->controller->updateSuccessMessages();
|
||||
$forms = $this->formsRepository->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(FormEntity::class);
|
||||
}
|
||||
|
||||
public function _after() {
|
||||
$this->clear();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user