diff --git a/lib/Form/FormMessageController.php b/lib/Form/FormMessageController.php new file mode 100644 index 0000000000..2105818c38 --- /dev/null +++ b/lib/Form/FormMessageController.php @@ -0,0 +1,48 @@ +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'); + } +} diff --git a/tests/integration/Form/FormMessageControllerTest.php b/tests/integration/Form/FormMessageControllerTest.php new file mode 100644 index 0000000000..4705482fb1 --- /dev/null +++ b/tests/integration/Form/FormMessageControllerTest.php @@ -0,0 +1,63 @@ +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(); + } +}