| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115 | 
							- <?php
 
- /**
 
-  * Copyright © Magento, Inc. All rights reserved.
 
-  * See COPYING.txt for license details.
 
-  */
 
- declare(strict_types=1);
 
- namespace Magento\GraphQl\Model;
 
- use Magento\Eav\Api\AttributeManagementInterface;
 
- use Magento\Eav\Api\AttributeSetRepositoryInterface;
 
- use Magento\Eav\Api\Data\AttributeInterface;
 
- use Magento\Framework\Api\FilterBuilder;
 
- use Magento\Framework\Api\MetadataServiceInterface;
 
- use Magento\Framework\Api\SearchCriteriaBuilder;
 
- use Magento\Framework\Exception\NoSuchEntityException;
 
- use Magento\Framework\GraphQl\Exception\GraphQlNoSuchEntityException;
 
- /**
 
-  * Iterate through all attribute sets to retrieve attributes for any given entity type
 
-  */
 
- class EntityAttributeList
 
- {
 
-     /**
 
-      * @var AttributeManagementInterface
 
-      */
 
-     private $attributeManagement;
 
-     /**
 
-      * @var AttributeSetRepositoryInterface
 
-      */
 
-     private $attributeSetRepository;
 
-     /**
 
-      * @var SearchCriteriaBuilder
 
-      */
 
-     private $searchCriteriaBuilder;
 
-     /**
 
-      * @var FilterBuilder
 
-      */
 
-     private $filterBuilder;
 
-     /**
 
-      * @param AttributeManagementInterface $attributeManagement
 
-      * @param AttributeSetRepositoryInterface $attributeSetRepository
 
-      * @param SearchCriteriaBuilder $searchCriteriaBuilder
 
-      * @param FilterBuilder $filterBuilder
 
-      */
 
-     public function __construct(
 
-         AttributeManagementInterface $attributeManagement,
 
-         AttributeSetRepositoryInterface $attributeSetRepository,
 
-         SearchCriteriaBuilder $searchCriteriaBuilder,
 
-         FilterBuilder $filterBuilder
 
-     ) {
 
-         $this->attributeManagement =  $attributeManagement;
 
-         $this->attributeSetRepository = $attributeSetRepository;
 
-         $this->searchCriteriaBuilder = $searchCriteriaBuilder;
 
-         $this->filterBuilder = $filterBuilder;
 
-     }
 
-     /**
 
-      * Retrieve all EAV and custom attribute codes from all attribute sets for given entity code.
 
-      *
 
-      * Returned in the format [$attributeCode => $isSortable] with $isSortable being a boolean value where an attribute
 
-      * can be sorted with in a search criteria expression. The metadata service parameter is only required if type has
 
-      * custom attributes.
 
-      *
 
-      * @param string $entityCode
 
-      * @param MetadataServiceInterface $metadataService
 
-      * @return boolean[]
 
-      * @throws GraphQlNoSuchEntityException
 
-      */
 
-     public function getDefaultEntityAttributes(
 
-         string $entityCode,
 
-         MetadataServiceInterface $metadataService = null
 
-     ) : array {
 
-         $this->searchCriteriaBuilder->addFilters(
 
-             [
 
-                 $this->filterBuilder
 
-                     ->setField('entity_type_code')
 
-                     ->setValue($entityCode)
 
-                     ->setConditionType('eq')
 
-                     ->create(),
 
-             ]
 
-         );
 
-         $attributeSetList = $this->attributeSetRepository->getList($this->searchCriteriaBuilder->create())->getItems();
 
-         $attributes = [];
 
-         foreach ($attributeSetList as $attributeSet) {
 
-             try {
 
-                 $attributes = array_merge(
 
-                     $attributes,
 
-                     $this->attributeManagement->getAttributes($entityCode, $attributeSet->getAttributeSetId())
 
-                 );
 
-             } catch (NoSuchEntityException $exception) {
 
-                 throw new GraphQlNoSuchEntityException(__('Entity code %1 does not exist.', [$entityCode]));
 
-             }
 
-         }
 
-         $attributeCodes = [];
 
-         $metadata = $metadataService ? $metadataService->getCustomAttributesMetadata() : [];
 
-         foreach ($metadata as $customAttribute) {
 
-             if (!array_key_exists($customAttribute->getAttributeCode(), $attributeCodes)) {
 
-                 $attributeCodes[$customAttribute->getAttributeCode()] = false;
 
-             }
 
-         }
 
-         /** @var AttributeInterface $attribute */
 
-         foreach ($attributes as $attribute) {
 
-             if (!array_key_exists($attribute->getAttributeCode(), $attributeCodes)) {
 
-                 $attributeCodes[$attribute->getAttributeCode()]
 
-                     = ((! $attribute->getIsUserDefined()) && !is_array($attribute));
 
-             }
 
-         }
 
-         return $attributeCodes;
 
-     }
 
- }
 
 
  |