Publicdatafields.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace Dotdigitalgroup\Email\Model\Config\Configuration;
  3. class Publicdatafields implements \Magento\Framework\Data\OptionSourceInterface
  4. {
  5. /**
  6. * @var \Dotdigitalgroup\Email\Helper\Data
  7. */
  8. private $helper;
  9. /**
  10. * Publicdatafields constructor.
  11. *
  12. * @param \Dotdigitalgroup\Email\Helper\Data $data
  13. */
  14. public function __construct(
  15. \Dotdigitalgroup\Email\Helper\Data $data
  16. ) {
  17. $this->helper = $data;
  18. }
  19. /**
  20. * Get data fields.
  21. *
  22. * @return mixed
  23. */
  24. public function getDataFields()
  25. {
  26. $website = $this->helper->getWebsite();
  27. $client = $this->helper->getWebsiteApiClient($website);
  28. //grab the datafields request and save to register
  29. $datafields = $client->getDataFields();
  30. return $datafields;
  31. }
  32. /**
  33. * Datafields option.
  34. *
  35. * @return array
  36. */
  37. public function toOptionArray()
  38. {
  39. $fields[] = [
  40. 'label' => __('---- Default Option ----'),
  41. 'value' => '0',
  42. ];
  43. $apiEnabled = $this->helper->isEnabled($this->helper->getWebsite());
  44. //get datafields options
  45. if ($apiEnabled) {
  46. $datafields = $this->getDataFields();
  47. //set the api error message for the first option
  48. if (isset($datafields->message)) {
  49. //message
  50. $fields[] = [
  51. 'value' => 0,
  52. 'label' => $datafields->message,
  53. ];
  54. } else {
  55. //loop for all datafields option
  56. foreach ($datafields as $datafield) {
  57. if (isset($datafield->name)
  58. && $datafield->visibility == 'Public'
  59. ) {
  60. $fields[] = [
  61. 'value' => $datafield->name,
  62. 'label' => $datafield->name,
  63. ];
  64. }
  65. }
  66. }
  67. }
  68. return $fields;
  69. }
  70. }