Açıklama Yok

CustomFields.php 2.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. <?php
  2. namespace MailPoet\API\JSON\v1;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\API\JSON\Endpoint as APIEndpoint;
  5. use MailPoet\API\JSON\Error as APIError;
  6. use MailPoet\API\JSON\Response;
  7. use MailPoet\API\JSON\ResponseBuilders\CustomFieldsResponseBuilder;
  8. use MailPoet\Config\AccessControl;
  9. use MailPoet\CustomFields\CustomFieldsRepository;
  10. use MailPoet\Entities\CustomFieldEntity;
  11. use MailPoet\WP\Functions as WPFunctions;
  12. class CustomFields extends APIEndpoint {
  13. public $permissions = [
  14. 'global' => AccessControl::PERMISSION_MANAGE_FORMS,
  15. ];
  16. /** @var CustomFieldsRepository */
  17. private $customFieldsRepository;
  18. /** @var CustomFieldsResponseBuilder */
  19. private $customFieldsResponseBuilder;
  20. public function __construct(
  21. CustomFieldsRepository $customFieldsRepository,
  22. CustomFieldsResponseBuilder $customFieldsResponseBuilder
  23. ) {
  24. $this->customFieldsRepository = $customFieldsRepository;
  25. $this->customFieldsResponseBuilder = $customFieldsResponseBuilder;
  26. }
  27. public function getAll() {
  28. $collection = $this->customFieldsRepository->findBy([], ['createdAt' => 'asc']);
  29. return $this->successResponse($this->customFieldsResponseBuilder->buildBatch($collection));
  30. }
  31. public function delete($data = []) {
  32. $id = (isset($data['id']) ? (int)$data['id'] : null);
  33. $customField = $this->customFieldsRepository->findOneById($id);
  34. if ($customField instanceof CustomFieldEntity) {
  35. $this->customFieldsRepository->remove($customField);
  36. $this->customFieldsRepository->flush();
  37. return $this->successResponse($this->customFieldsResponseBuilder->build($customField));
  38. } else {
  39. return $this->errorResponse([
  40. APIError::NOT_FOUND => WPFunctions::get()->__('This custom field does not exist.', 'mailpoet'),
  41. ]);
  42. }
  43. }
  44. public function save($data = []) {
  45. try {
  46. $customField = $this->customFieldsRepository->createOrUpdate($data);
  47. $customField = $this->customFieldsRepository->findOneById($customField->getId());
  48. if(!$customField instanceof CustomFieldEntity) return $this->errorResponse();
  49. return $this->successResponse($this->customFieldsResponseBuilder->build($customField));
  50. } catch (\Exception $e) {
  51. return $this->errorResponse($errors = [], $meta = [], $status = Response::STATUS_BAD_REQUEST);
  52. }
  53. }
  54. public function get($data = []) {
  55. $id = (isset($data['id']) ? (int)$data['id'] : null);
  56. $customField = $this->customFieldsRepository->findOneById($id);
  57. if ($customField instanceof CustomFieldEntity) {
  58. return $this->successResponse($this->customFieldsResponseBuilder->build($customField));
  59. }
  60. return $this->errorResponse([
  61. APIError::NOT_FOUND => WPFunctions::get()->__('This custom field does not exist.', 'mailpoet'),
  62. ]);
  63. }
  64. }