123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Elasticsearch\Model\Adapter\Container;
- use Magento\Catalog\Model\ResourceModel\Product\Attribute\Collection;
- use Magento\Catalog\Model\ResourceModel\Eav\Attribute as EavAttribute;
- /**
- * @deprecated 100.2.0
- * This class is used only in deprecated \Magento\Elasticsearch\Model\Adapter\DataMapper\ProductDataMapper
- * and must not be used for new code
- */
- class Attribute
- {
- /**
- * @var string[]
- */
- private $idToCodeMap = [];
- /**
- * @var Collection
- */
- private $attributeCollection;
- /**
- * @var EavAttribute[]
- */
- private $attributes = [];
- /**
- * @param Collection $attributeCollection
- */
- public function __construct(Collection $attributeCollection)
- {
- $this->attributeCollection = $attributeCollection;
- }
- /**
- * @param int $attributeId
- * @return string
- */
- public function getAttributeCodeById($attributeId)
- {
- if (!array_key_exists($attributeId, $this->idToCodeMap)) {
- $code = $attributeId === 'options'
- ? 'options'
- : $this->attributeCollection->getItemById($attributeId)->getAttributeCode();
- $this->idToCodeMap[$attributeId] = $code;
- }
- return $this->idToCodeMap[$attributeId];
- }
- /**
- * @param string $attributeCode
- * @return int
- */
- public function getAttributeIdByCode($attributeCode)
- {
- if (!array_key_exists($attributeCode, array_flip($this->idToCodeMap))) {
- $attributeId = $attributeCode === 'options'
- ? 'options'
- : $this->attributeCollection->getItemByColumnValue('attribute_code', $attributeCode)->getId();
- $this->idToCodeMap[$attributeId] = $attributeCode;
- }
- $codeToIdMap = array_flip($this->idToCodeMap);
- return $codeToIdMap[$attributeCode];
- }
- /**
- * @param string $attributeCode
- * @return EavAttribute|null
- */
- public function getAttribute($attributeCode)
- {
- $searchableAttributes = $this->getAttributes();
- return array_key_exists($attributeCode, $searchableAttributes)
- ? $searchableAttributes[$attributeCode]
- : null;
- }
- /**
- * @return EavAttribute[]
- */
- public function getAttributes()
- {
- if (0 === count($this->attributes)) {
- /** @var Collection $attributesCollection */
- $attributesCollection = $this->attributeCollection;
- foreach ($attributesCollection as $attribute) {
- /** @var EavAttribute $attribute */
- $this->attributes[$attribute->getAttributeCode()] = $attribute;
- }
- }
- return $this->attributes;
- }
- }
|