Add FormsResponseBuilder and use it in Forms::get()

[MAILPOET-3035]
This commit is contained in:
Jan Lysý
2020-09-29 09:27:51 +02:00
committed by Veljko V
parent 84ba6cecda
commit 57451e6882
3 changed files with 33 additions and 3 deletions

View File

@ -0,0 +1,23 @@
<?php
namespace MailPoet\API\JSON\ResponseBuilders;
use MailPoet\Entities\FormEntity;
class FormsResponseBuilder {
const DATE_FORMAT = 'Y-m-d H:i:s';
public function build(FormEntity $form) {
return [
'id' => (string)$form->getId(), // (string) for BC
'name' => $form->getName(),
'status' => $form->getStatus(),
'body' => $form->getBody(),
'settings' => $form->getSettings(),
'styles' => $form->getStyles(),
'created_at' => $form->getCreatedAt()->format(self::DATE_FORMAT),
'updated_at' => $form->getUpdatedAt()->format(self::DATE_FORMAT),
'deleted_at' => ($deletedAt = $form->getDeletedAt()) ? $deletedAt->format(self::DATE_FORMAT) : null,
];
}
}

View File

@ -4,6 +4,7 @@ namespace MailPoet\API\JSON\v1;
use MailPoet\API\JSON\Endpoint as APIEndpoint;
use MailPoet\API\JSON\Error as APIError;
use MailPoet\API\JSON\ResponseBuilders\FormsResponseBuilder;
use MailPoet\Config\AccessControl;
use MailPoet\Entities\FormEntity;
use MailPoet\Form\DisplayFormInWPContent;
@ -36,6 +37,9 @@ class Forms extends APIEndpoint {
/** @var FormFactory */
private $formFactory;
/** @var FormsResponseBuilder */
private $formsResponseBuilder;
/** @var WPFunctions */
private $wp;
@ -48,6 +52,7 @@ class Forms extends APIEndpoint {
UserFlagsController $userFlags,
FormFactory $formFactory,
FormsRepository $formsRepository,
FormsResponseBuilder $formsResponseBuilder,
WPFunctions $wp
) {
$this->bulkAction = $bulkAction;
@ -56,13 +61,14 @@ class Forms extends APIEndpoint {
$this->formFactory = $formFactory;
$this->wp = $wp;
$this->formsRepository = $formsRepository;
$this->formsResponseBuilder = $formsResponseBuilder;
}
public function get($data = []) {
$id = (isset($data['id']) ? (int)$data['id'] : false);
$form = Form::findOne($id);
if ($form instanceof Form) {
return $this->successResponse($form->asArray());
$form = $this->formsRepository->findOneById($id);
if ($form instanceof FormEntity) {
return $this->successResponse($this->formsResponseBuilder->build($form));
}
return $this->errorResponse([
APIError::NOT_FOUND => WPFunctions::get()->__('This form does not exist.', 'mailpoet'),