Options.php 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Customer\Model;
  7. use Magento\Config\Model\Config\Source\Nooptreq as NooptreqSource;
  8. use Magento\Customer\Helper\Address as AddressHelper;
  9. use Magento\Framework\Escaper;
  10. class Options
  11. {
  12. /**
  13. * Customer address
  14. *
  15. * @var AddressHelper
  16. */
  17. protected $addressHelper;
  18. /**
  19. * @var Escaper
  20. */
  21. protected $escaper;
  22. /**
  23. * @param AddressHelper $addressHelper
  24. * @param Escaper $escaper
  25. */
  26. public function __construct(
  27. AddressHelper $addressHelper,
  28. Escaper $escaper
  29. ) {
  30. $this->addressHelper = $addressHelper;
  31. $this->escaper = $escaper;
  32. }
  33. /**
  34. * Retrieve name prefix dropdown options
  35. *
  36. * @param null $store
  37. * @return array|bool
  38. */
  39. public function getNamePrefixOptions($store = null)
  40. {
  41. return $this->prepareNamePrefixSuffixOptions(
  42. $this->addressHelper->getConfig('prefix_options', $store),
  43. $this->addressHelper->getConfig('prefix_show', $store) == NooptreqSource::VALUE_OPTIONAL
  44. );
  45. }
  46. /**
  47. * Retrieve name suffix dropdown options
  48. *
  49. * @param null $store
  50. * @return array|bool
  51. */
  52. public function getNameSuffixOptions($store = null)
  53. {
  54. return $this->prepareNamePrefixSuffixOptions(
  55. $this->addressHelper->getConfig('suffix_options', $store),
  56. $this->addressHelper->getConfig('suffix_show', $store) == NooptreqSource::VALUE_OPTIONAL
  57. );
  58. }
  59. /**
  60. * @param $options
  61. * @param bool $isOptional
  62. * @return array|bool
  63. *
  64. * @deprecated 101.0.4
  65. * @see prepareNamePrefixSuffixOptions()
  66. */
  67. protected function _prepareNamePrefixSuffixOptions($options, $isOptional = false)
  68. {
  69. return $this->prepareNamePrefixSuffixOptions($options, $isOptional);
  70. }
  71. /**
  72. * Unserialize and clear name prefix or suffix options
  73. * If field is optional, add an empty first option.
  74. *
  75. * @param string $options
  76. * @param bool $isOptional
  77. * @return array|bool
  78. */
  79. private function prepareNamePrefixSuffixOptions($options, $isOptional = false)
  80. {
  81. $options = trim($options);
  82. if (empty($options)) {
  83. return false;
  84. }
  85. $result = [];
  86. $options = explode(';', $options);
  87. foreach ($options as $value) {
  88. $value = $this->escaper->escapeHtml(trim($value));
  89. $result[$value] = $value;
  90. }
  91. if ($isOptional && trim(current($options))) {
  92. $result = array_merge([' ' => ' '], $result);
  93. }
  94. return $result;
  95. }
  96. }