diff --git a/lib/Form/Templates/FormTemplate.php b/lib/Form/Templates/FormTemplate.php index d23990439d..023521c5bc 100644 --- a/lib/Form/Templates/FormTemplate.php +++ b/lib/Form/Templates/FormTemplate.php @@ -3,6 +3,7 @@ namespace MailPoet\Form\Templates; use MailPoet\Entities\FormEntity; +use MailPoet\Settings\SettingsController; use MailPoet\Util\CdnAssetUrl; use MailPoet\Util\Helpers; use MailPoet\WP\Functions as WPFunctions; @@ -91,12 +92,17 @@ EOL; /** @var string */ protected $assetsDirectory = ''; + /** @var SettingsController */ + private $settings; + public function __construct( CdnAssetUrl $cdnAssetUrl, + SettingsController $settings, WPFunctions $wp ) { $this->cdnAssetUrl = $cdnAssetUrl; $this->wp = $wp; + $this->settings = $settings; } abstract public function getName(): string; @@ -123,9 +129,21 @@ EOL; $formEntity->setBody($this->getBody()); $formEntity->setSettings($this->getSettings()); $formEntity->setStyles($this->getStyles()); + $settings = $formEntity->getSettings(); + if (!isset($settings['success_message']) || !($settings['success_message'])) { + $settings['success_message'] = $this->getDefaultSuccessMessage(); + $formEntity->setSettings($settings); + } return $formEntity; } + private function getDefaultSuccessMessage() { + 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'); + } + protected function getAssetUrl(string $filename): string { return $this->cdnAssetUrl->generateCdnUrl("form-templates/{$this->assetsDirectory}/$filename"); } diff --git a/lib/Form/Templates/TemplateRepository.php b/lib/Form/Templates/TemplateRepository.php index 0989683ddc..801aea0eed 100644 --- a/lib/Form/Templates/TemplateRepository.php +++ b/lib/Form/Templates/TemplateRepository.php @@ -63,6 +63,7 @@ use MailPoet\Form\Templates\Templates\Template7FixedBar; use MailPoet\Form\Templates\Templates\Template7Popup; use MailPoet\Form\Templates\Templates\Template7SlideIn; use MailPoet\Form\Templates\Templates\Template7Widget; +use MailPoet\Settings\SettingsController; use MailPoet\UnexpectedValueException; use MailPoet\Util\CdnAssetUrl; use MailPoet\WP\Functions as WPFunctions; @@ -76,6 +77,10 @@ class TemplateRepository { /** @var WPFunctions */ private $wp; + /** @var SettingsController */ + private $settings; + + private $templates = [ InitialForm::ID => InitialForm::class, Template1BelowPages::ID => Template1BelowPages::class, @@ -142,10 +147,12 @@ class TemplateRepository { public function __construct( CdnAssetUrl $cdnAssetUrl, + SettingsController $settings, WPFunctions $wp ) { $this->cdnAssetUrl = $cdnAssetUrl; $this->wp = $wp; + $this->settings = $settings; } public function getFormTemplate(string $templateId): FormTemplate { @@ -154,7 +161,7 @@ class TemplateRepository { ->withErrors(["Template with id $templateId doesn't exist."]); } /** @var FormTemplate $template */ - $template = new $this->templates[$templateId]($this->cdnAssetUrl, $this->wp); + $template = new $this->templates[$templateId]($this->cdnAssetUrl, $this->settings, $this->wp); return $template; } diff --git a/tests/unit/Form/Templates/TemplatesRepositoryTest.php b/tests/unit/Form/Templates/TemplatesRepositoryTest.php index 3949cc4807..1523d5acad 100644 --- a/tests/unit/Form/Templates/TemplatesRepositoryTest.php +++ b/tests/unit/Form/Templates/TemplatesRepositoryTest.php @@ -4,6 +4,7 @@ namespace MailPoet\Test\Form\Templates; use MailPoet\Form\Templates\FormTemplate; use MailPoet\Form\Templates\TemplateRepository; +use MailPoet\Settings\SettingsController; use MailPoet\Util\CdnAssetUrl; use MailPoet\WP\Functions as WPFunctions; @@ -17,7 +18,8 @@ class TemplatesRepositoryTest extends \MailPoetUnitTest { $cdnAssetsMock->method('generateCdnUrl') ->willReturn('http://example.com/image.png'); $wpMock = $this->createMock(WPFunctions::class); - $this->repository = new TemplateRepository($cdnAssetsMock, $wpMock); + $settings = $this->createMock(SettingsController::class); + $this->repository = new TemplateRepository($cdnAssetsMock, $settings, $wpMock); } public function testItCanBuildFormTemplate() {