diff --git a/lib/API/JSON/v1/Forms.php b/lib/API/JSON/v1/Forms.php index 787f280297..a3e420d6e9 100644 --- a/lib/API/JSON/v1/Forms.php +++ b/lib/API/JSON/v1/Forms.php @@ -13,11 +13,11 @@ use MailPoet\Config\AccessControl; use MailPoet\Entities\FormEntity; use MailPoet\Form\ApiDataSanitizer; use MailPoet\Form\DisplayFormInWPContent; -use MailPoet\Form\FormFactory; use MailPoet\Form\FormSaveController; use MailPoet\Form\FormsRepository; use MailPoet\Form\Listing\FormListingRepository; use MailPoet\Form\PreviewPage; +use MailPoet\Form\Templates\TemplateRepository; use MailPoet\Listing; use MailPoet\Settings\UserFlagsController; use MailPoet\UnexpectedValueException; @@ -35,9 +35,6 @@ class Forms extends APIEndpoint { /** @var UserFlagsController */ private $userFlags; - /** @var FormFactory */ - private $formFactory; - /** @var FormsResponseBuilder */ private $formsResponseBuilder; @@ -47,6 +44,9 @@ class Forms extends APIEndpoint { /** @var FormsRepository */ private $formsRepository; + /** @var TemplateRepository */ + private $templateRepository; + /** @var FormListingRepository */ private $formListingRepository; @@ -62,8 +62,8 @@ class Forms extends APIEndpoint { public function __construct( Listing\Handler $listingHandler, UserFlagsController $userFlags, - FormFactory $formFactory, FormsRepository $formsRepository, + TemplateRepository $templateRepository, FormListingRepository $formListingRepository, FormsResponseBuilder $formsResponseBuilder, WPFunctions $wp, @@ -73,9 +73,9 @@ class Forms extends APIEndpoint { ) { $this->listingHandler = $listingHandler; $this->userFlags = $userFlags; - $this->formFactory = $formFactory; $this->wp = $wp; $this->formsRepository = $formsRepository; + $this->templateRepository = $templateRepository; $this->formListingRepository = $formListingRepository; $this->formsResponseBuilder = $formsResponseBuilder; $this->emoji = $emoji; @@ -154,20 +154,6 @@ class Forms extends APIEndpoint { ]); } - public function create($data = []) { - if (isset($data['template-id'])) { - $formEntity = $this->formFactory->createFormFromTemplate($data['template-id']); - } else { - $formEntity = $this->formFactory->createEmptyForm(); - } - - $form = $this->formsRepository->findOneById($formEntity->getId()); - if ($form instanceof FormEntity) { - return $this->successResponse($this->formsResponseBuilder->build($form)); - } - return $this->errorResponse(); - } - public function previewEditor($data = []) { $formId = $data['id'] ?? null; if (!$formId) { @@ -179,11 +165,12 @@ class Forms extends APIEndpoint { public function saveEditor($data = []) { $formId = (isset($data['id']) ? (int)$data['id'] : 0); + $initialForm = $this->getFormTemplateData(TemplateRepository::INITIAL_FORM_TEMPLATE); $name = ($data['name'] ?? __('New form', 'mailpoet')); - $body = ($data['body'] ?? []); + $body = ($data['body'] ?? $initialForm['body']); $body = $this->dataSanitizer->sanitizeBody($body); - $settings = ($data['settings'] ?? []); - $styles = ($data['styles'] ?? ''); + $settings = ($data['settings'] ?? $initialForm['settings']); + $styles = ($data['styles'] ?? $initialForm['styles']); $status = ($data['status'] ?? FormEntity::STATUS_ENABLED); // check if the form is used as a widget @@ -346,4 +333,10 @@ class Forms extends APIEndpoint { ? $this->formsRepository->findOneById((int)$data['id']) : null; } + + private function getFormTemplateData(string $templateId): array { + $formTemplate = $this->templateRepository->getFormTemplate($templateId); + $form = $formTemplate->toFormEntity(); + return $form->toArray(); + } } diff --git a/tests/integration/API/JSON/v1/FormsTest.php b/tests/integration/API/JSON/v1/FormsTest.php index dc6aa0e859..701aaef829 100644 --- a/tests/integration/API/JSON/v1/FormsTest.php +++ b/tests/integration/API/JSON/v1/FormsTest.php @@ -70,16 +70,16 @@ class FormsTest extends \MailPoetTest { } public function testItCanCreateANewForm() { - $response = $this->endpoint->create(); + $response = $this->endpoint->saveEditor(); expect($response->status)->equals(APIResponse::STATUS_OK); expect($response->data)->equals( $this->reloadForm((int)$response->data['id'])->toArray() ); - expect($response->data['name'])->equals(''); + expect($response->data['name'])->equals('New form'); } public function testItCanStoreDataForPreview() { - $response = $this->endpoint->create(); + $response = $this->endpoint->saveEditor(); $formId = $response->data['id']; expect($response->status)->equals(APIResponse::STATUS_OK); expect($response->data)->equals( @@ -96,7 +96,7 @@ class FormsTest extends \MailPoetTest { } public function testItCanSaveFormEditor() { - $response = $this->endpoint->create(); + $response = $this->endpoint->saveEditor(); expect($response->status)->equals(APIResponse::STATUS_OK); $form = $this->reloadForm((int)$response->data['id'])->toArray(); @@ -112,7 +112,7 @@ class FormsTest extends \MailPoetTest { public function testItOnlyAdminCanSaveCustomHtml() { // Administrator wp_set_current_user(1); - $response = $this->endpoint->create(); + $response = $this->endpoint->saveEditor(); expect($response->status)->equals(APIResponse::STATUS_OK); $form = $this->reloadForm((int)$response->data['id'])->toArray(); @@ -132,7 +132,7 @@ class FormsTest extends \MailPoetTest { } public function testItCanExtractListsFromListSelectionBlock() { - $response = $this->endpoint->create(); + $response = $this->endpoint->saveEditor(); expect($response->status)->equals(APIResponse::STATUS_OK); $form = $this->reloadForm((int)$response->data['id'])->toArray(); @@ -150,7 +150,7 @@ class FormsTest extends \MailPoetTest { } public function testItCanExtractListsFromNestedListSelectionBlock() { - $response = $this->endpoint->create(); + $response = $this->endpoint->saveEditor(); expect($response->status)->equals(APIResponse::STATUS_OK); $form = $this->reloadForm((int)$response->data['id'])->toArray();