123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Customer\Model\Metadata;
- use Magento\Customer\Api\Data\AttributeMetadataInterface;
- use Magento\Customer\Api\Data\AttributeMetadataInterfaceFactory;
- use Magento\Customer\Api\Data\OptionInterface;
- use Magento\Customer\Api\Data\OptionInterfaceFactory;
- use Magento\Customer\Api\Data\ValidationRuleInterface;
- use Magento\Customer\Api\Data\ValidationRuleInterfaceFactory;
- use Magento\Customer\Model\Data\AttributeMetadata;
- use Magento\Framework\Reflection\DataObjectProcessor;
- /**
- * Hydrator for AttributeMetadataInterface
- */
- class AttributeMetadataHydrator
- {
- /**
- * @var AttributeMetadataInterfaceFactory
- */
- private $attributeMetadataFactory;
- /**
- * @var OptionInterfaceFactory
- */
- private $optionFactory;
- /**
- * @var ValidationRuleInterfaceFactory
- */
- private $validationRuleFactory;
- /**
- * @var DataObjectProcessor
- */
- private $dataObjectProcessor;
- /**
- * Constructor
- *
- * @param AttributeMetadataInterfaceFactory $attributeMetadataFactory
- * @param OptionInterfaceFactory $optionFactory
- * @param ValidationRuleInterfaceFactory $validationRuleFactory
- * @param DataObjectProcessor $dataObjectProcessor
- */
- public function __construct(
- AttributeMetadataInterfaceFactory $attributeMetadataFactory,
- OptionInterfaceFactory $optionFactory,
- ValidationRuleInterfaceFactory $validationRuleFactory,
- DataObjectProcessor $dataObjectProcessor
- ) {
- $this->attributeMetadataFactory = $attributeMetadataFactory;
- $this->optionFactory = $optionFactory;
- $this->validationRuleFactory = $validationRuleFactory;
- $this->dataObjectProcessor = $dataObjectProcessor;
- }
- /**
- * Convert array to AttributeMetadataInterface
- *
- * @param array $data
- * @return AttributeMetadataInterface
- */
- public function hydrate(array $data)
- {
- if (isset($data[AttributeMetadataInterface::OPTIONS])) {
- $data[AttributeMetadataInterface::OPTIONS] = $this->createOptions(
- $data[AttributeMetadataInterface::OPTIONS]
- );
- }
- if (isset($data[AttributeMetadataInterface::VALIDATION_RULES])) {
- $data[AttributeMetadataInterface::VALIDATION_RULES] = $this->createValidationRules(
- $data[AttributeMetadataInterface::VALIDATION_RULES]
- );
- }
- return $this->attributeMetadataFactory->create(['data' => $data]);
- }
- /**
- * Populate options with data
- *
- * @param array $data
- * @return OptionInterface[]
- */
- private function createOptions(array $data)
- {
- foreach ($data as $key => $optionData) {
- if (isset($optionData[OptionInterface::OPTIONS])) {
- $optionData[OptionInterface::OPTIONS] = $this->createOptions($optionData[OptionInterface::OPTIONS]);
- }
- $data[$key] = $this->optionFactory->create(['data' => $optionData]);
- }
- return $data;
- }
- /**
- * Populate validation rules with data
- *
- * @param array $data
- * @return ValidationRuleInterface[]
- */
- private function createValidationRules(array $data)
- {
- foreach ($data as $key => $validationRuleData) {
- $data[$key] = $this->validationRuleFactory->create(['data' => $validationRuleData]);
- }
- return $data;
- }
- /**
- * Convert AttributeMetadataInterface to array
- *
- * @param AttributeMetadataInterface $attributeMetadata
- * @return array
- */
- public function extract($attributeMetadata)
- {
- return $this->dataObjectProcessor->buildOutputDataArray(
- $attributeMetadata,
- AttributeMetadata::class
- );
- }
- }
|