Delete FormFactory
[MAILPOET-3662]
This commit is contained in:
@@ -9,7 +9,6 @@ use MailPoet\CustomFields\CustomFieldsRepository;
|
|||||||
use MailPoet\Entities\FormEntity;
|
use MailPoet\Entities\FormEntity;
|
||||||
use MailPoet\Entities\SegmentEntity;
|
use MailPoet\Entities\SegmentEntity;
|
||||||
use MailPoet\Form\Block;
|
use MailPoet\Form\Block;
|
||||||
use MailPoet\Form\FormFactory;
|
|
||||||
use MailPoet\Form\FormsRepository;
|
use MailPoet\Form\FormsRepository;
|
||||||
use MailPoet\Form\Renderer as FormRenderer;
|
use MailPoet\Form\Renderer as FormRenderer;
|
||||||
use MailPoet\Form\Templates\TemplateRepository;
|
use MailPoet\Form\Templates\TemplateRepository;
|
||||||
@@ -103,9 +102,6 @@ class FormEditor {
|
|||||||
/** @var WPFunctions */
|
/** @var WPFunctions */
|
||||||
private $wp;
|
private $wp;
|
||||||
|
|
||||||
/** @var FormFactory */
|
|
||||||
private $formsFactory;
|
|
||||||
|
|
||||||
/** @var Localizer */
|
/** @var Localizer */
|
||||||
private $localizer;
|
private $localizer;
|
||||||
|
|
||||||
@@ -204,7 +200,6 @@ class FormEditor {
|
|||||||
FormRenderer $formRenderer,
|
FormRenderer $formRenderer,
|
||||||
Block\Date $dateBlock,
|
Block\Date $dateBlock,
|
||||||
WPFunctions $wp,
|
WPFunctions $wp,
|
||||||
FormFactory $formsFactory,
|
|
||||||
Localizer $localizer,
|
Localizer $localizer,
|
||||||
UserFlagsController $userFlags,
|
UserFlagsController $userFlags,
|
||||||
WPPostListLoader $wpPostListLoader,
|
WPPostListLoader $wpPostListLoader,
|
||||||
@@ -218,7 +213,6 @@ class FormEditor {
|
|||||||
$this->formRenderer = $formRenderer;
|
$this->formRenderer = $formRenderer;
|
||||||
$this->dateBlock = $dateBlock;
|
$this->dateBlock = $dateBlock;
|
||||||
$this->wp = $wp;
|
$this->wp = $wp;
|
||||||
$this->formsFactory = $formsFactory;
|
|
||||||
$this->localizer = $localizer;
|
$this->localizer = $localizer;
|
||||||
$this->templatesRepository = $templateRepository;
|
$this->templatesRepository = $templateRepository;
|
||||||
$this->userFlags = $userFlags;
|
$this->userFlags = $userFlags;
|
||||||
@@ -228,7 +222,6 @@ class FormEditor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function render() {
|
public function render() {
|
||||||
exit();
|
|
||||||
if (!isset($_GET['id']) && !isset($_GET['action']) && !isset($_GET['template_id'])) {
|
if (!isset($_GET['id']) && !isset($_GET['action']) && !isset($_GET['template_id'])) {
|
||||||
$this->renderTemplateSelection();
|
$this->renderTemplateSelection();
|
||||||
return;
|
return;
|
||||||
|
@@ -204,7 +204,6 @@ class ContainerConfigurator implements IContainerConfigurator {
|
|||||||
$container->autowire(\MailPoet\Form\Block\Submit::class);
|
$container->autowire(\MailPoet\Form\Block\Submit::class);
|
||||||
$container->autowire(\MailPoet\Form\Block\Text::class);
|
$container->autowire(\MailPoet\Form\Block\Text::class);
|
||||||
$container->autowire(\MailPoet\Form\Block\Textarea::class);
|
$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\FormHtmlSanitizer::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Form\FormMessageController::class)->setPublic(true);
|
$container->autowire(\MailPoet\Form\FormMessageController::class)->setPublic(true);
|
||||||
$container->autowire(\MailPoet\Form\FormSaveController::class)->setPublic(true);
|
$container->autowire(\MailPoet\Form\FormSaveController::class)->setPublic(true);
|
||||||
|
@@ -1,53 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace MailPoet\Form;
|
|
||||||
|
|
||||||
use MailPoet\Entities\FormEntity;
|
|
||||||
use MailPoet\Form\Templates\TemplateRepository;
|
|
||||||
use MailPoet\Settings\SettingsController;
|
|
||||||
|
|
||||||
class FormFactory {
|
|
||||||
|
|
||||||
/** @var FormsRepository */
|
|
||||||
private $formRepository;
|
|
||||||
|
|
||||||
/** @var TemplateRepository */
|
|
||||||
private $formTemplateRepository;
|
|
||||||
|
|
||||||
/** @var SettingsController */
|
|
||||||
private $settings;
|
|
||||||
|
|
||||||
public function __construct(
|
|
||||||
FormsRepository $formRepository,
|
|
||||||
TemplateRepository $formTemplateRepository,
|
|
||||||
SettingsController $settings
|
|
||||||
) {
|
|
||||||
$this->formRepository = $formRepository;
|
|
||||||
$this->formTemplateRepository = $formTemplateRepository;
|
|
||||||
$this->settings = $settings;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function createFormFromTemplate(string $templateId, array $settings = []): FormEntity {
|
|
||||||
if (!isset($settings['success_message'])) {
|
|
||||||
$settings['success_message'] = $this->getDefaultSuccessMessage();
|
|
||||||
}
|
|
||||||
$formTemplate = $this->formTemplateRepository->getFormTemplate($templateId);
|
|
||||||
$formEntity = $formTemplate->toFormEntity();
|
|
||||||
$formSettings = $formEntity->getSettings() ?? [];
|
|
||||||
$formEntity->setSettings(array_merge($formSettings, $settings));
|
|
||||||
$this->formRepository->persist($formEntity);
|
|
||||||
$this->formRepository->flush();
|
|
||||||
return $formEntity;
|
|
||||||
}
|
|
||||||
|
|
||||||
public function createEmptyForm(): FormEntity {
|
|
||||||
return $this->createFormFromTemplate(TemplateRepository::INITIAL_FORM_TEMPLATE);
|
|
||||||
}
|
|
||||||
|
|
||||||
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');
|
|
||||||
}
|
|
||||||
}
|
|
@@ -1,81 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
namespace MailPoet\Form;
|
|
||||||
|
|
||||||
use MailPoet\Entities\FormEntity;
|
|
||||||
use MailPoet\Form\Templates\TemplateRepository;
|
|
||||||
use MailPoet\Settings\SettingsController;
|
|
||||||
|
|
||||||
class FormFactoryTest extends \MailPoetTest {
|
|
||||||
|
|
||||||
/** @var FormFactory */
|
|
||||||
private $formFactory;
|
|
||||||
|
|
||||||
public function _before() {
|
|
||||||
parent::_before();
|
|
||||||
$this->formFactory = $this->diContainer->get(FormFactory::class);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testItCreatesAndPersistEmptyForm() {
|
|
||||||
$formEntity = $this->formFactory->createEmptyForm();
|
|
||||||
expect($formEntity)->isInstanceOf(FormEntity::class);
|
|
||||||
$this->entityManager->refresh($formEntity);
|
|
||||||
assert($formEntity instanceof FormEntity);
|
|
||||||
expect($formEntity->getName())->equals('');
|
|
||||||
expect($formEntity->getBody())->notEmpty();
|
|
||||||
expect($formEntity->getSettings())->notEmpty();
|
|
||||||
expect($formEntity->getStyles())->string();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testItCreatesAndPersistFormFromTemplateId() {
|
|
||||||
$formEntity = $this->formFactory->createFormFromTemplate(TemplateRepository::INITIAL_FORM_TEMPLATE);
|
|
||||||
expect($formEntity)->isInstanceOf(FormEntity::class);
|
|
||||||
$this->entityManager->refresh($formEntity);
|
|
||||||
assert($formEntity instanceof FormEntity);
|
|
||||||
expect($formEntity->getName())->equals('');
|
|
||||||
expect($formEntity->getBody())->notEmpty();
|
|
||||||
expect($formEntity->getSettings())->notEmpty();
|
|
||||||
expect($formEntity->getStyles())->string();
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testItSetsDefaultMessage() {
|
|
||||||
$settings = $this->diContainer->get(SettingsController::class);
|
|
||||||
$settings->set('signup_confirmation.enabled', true);
|
|
||||||
$formEntity = $this->formFactory->createFormFromTemplate(TemplateRepository::INITIAL_FORM_TEMPLATE);
|
|
||||||
$formSettings = $formEntity->getSettings() ?? [];
|
|
||||||
expect($formSettings['success_message'])->equals('Check your inbox or spam folder to confirm your subscription.');
|
|
||||||
|
|
||||||
$settings->set('signup_confirmation.enabled', false);
|
|
||||||
$formEntity = $this->formFactory->createFormFromTemplate(TemplateRepository::INITIAL_FORM_TEMPLATE);
|
|
||||||
$formSettings = $formEntity->getSettings() ?? [];
|
|
||||||
expect($formSettings['success_message'])->equals('You’ve been successfully subscribed to our newsletter!');
|
|
||||||
|
|
||||||
$formEntity = $this->formFactory->createFormFromTemplate(
|
|
||||||
TemplateRepository::INITIAL_FORM_TEMPLATE,
|
|
||||||
['success_message' => 'My custom']
|
|
||||||
);
|
|
||||||
$formSettings = $formEntity->getSettings() ?? [];
|
|
||||||
expect($formSettings['success_message'])->equals('My custom');
|
|
||||||
}
|
|
||||||
|
|
||||||
public function testItCanOverrideTemplateSettings() {
|
|
||||||
$settings = [
|
|
||||||
'success_message' => 'Hello Buddy!',
|
|
||||||
'segments' => [1, 2, 3],
|
|
||||||
];
|
|
||||||
$formEntity = $this->formFactory->createFormFromTemplate(TemplateRepository::INITIAL_FORM_TEMPLATE, $settings);
|
|
||||||
assert($formEntity instanceof FormEntity);
|
|
||||||
$formSettings = $formEntity->getSettings() ?? [];
|
|
||||||
expect($formSettings['success_message'])->equals('Hello Buddy!');
|
|
||||||
expect($formSettings['segments'])->equals([1, 2, 3]);
|
|
||||||
}
|
|
||||||
|
|
||||||
public function _after() {
|
|
||||||
parent::_after();
|
|
||||||
$this->cleanup();
|
|
||||||
}
|
|
||||||
|
|
||||||
private function cleanup() {
|
|
||||||
$this->truncateEntity(FormEntity::class);
|
|
||||||
}
|
|
||||||
}
|
|
Reference in New Issue
Block a user