Nav apraksta

CustomFields.php 2.1KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php declare(strict_types = 1);
  2. namespace MailPoet\API\MP\v1;
  3. if (!defined('ABSPATH')) exit;
  4. use MailPoet\CustomFields\ApiDataSanitizer;
  5. use MailPoet\CustomFields\CustomFieldsRepository;
  6. class CustomFields {
  7. /** @var ApiDataSanitizer */
  8. private $customFieldsDataSanitizer;
  9. /** @var CustomFieldsRepository */
  10. private $customFieldsRepository;
  11. public function __construct(
  12. ApiDataSanitizer $customFieldsDataSanitizer,
  13. CustomFieldsRepository $customFieldsRepository
  14. ) {
  15. $this->customFieldsDataSanitizer = $customFieldsDataSanitizer;
  16. $this->customFieldsRepository = $customFieldsRepository;
  17. }
  18. public function getSubscriberFields(): array {
  19. $data = [
  20. [
  21. 'id' => 'email',
  22. 'name' => __('Email', 'mailpoet'),
  23. 'type' => 'text',
  24. 'params' => [
  25. 'required' => '1',
  26. ],
  27. ],
  28. [
  29. 'id' => 'first_name',
  30. 'name' => __('First name', 'mailpoet'),
  31. 'type' => 'text',
  32. 'params' => [
  33. 'required' => '',
  34. ],
  35. ],
  36. [
  37. 'id' => 'last_name',
  38. 'name' => __('Last name', 'mailpoet'),
  39. 'type' => 'text',
  40. 'params' => [
  41. 'required' => '',
  42. ],
  43. ],
  44. ];
  45. $customFields = $this->customFieldsRepository->findAll();
  46. foreach ($customFields as $customField) {
  47. $result = [
  48. 'id' => 'cf_' . $customField->getId(),
  49. 'name' => $customField->getName(),
  50. 'type' => $customField->getType(),
  51. 'params' => $customField->getParams(),
  52. ];
  53. $data[] = $result;
  54. }
  55. return $data;
  56. }
  57. public function addSubscriberField(array $data = []): array {
  58. try {
  59. $customField = $this->customFieldsRepository->createOrUpdate($this->customFieldsDataSanitizer->sanitize($data));
  60. } catch (\Exception $e) {
  61. throw new APIException('Failed to save a new subscriber field ' . $e->getMessage(), APIException::FAILED_TO_SAVE_SUBSCRIBER_FIELD);
  62. }
  63. return [
  64. 'id' => 'cf_' . $customField->getId(),
  65. 'name' => $customField->getName(),
  66. 'type' => $customField->getType(),
  67. 'params' => $customField->getParams(),
  68. ];
  69. }
  70. }