Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
EntityAttributeList.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
18 
23 {
27  private $attributeManagement;
28 
32  private $attributeSetRepository;
33 
37  private $searchCriteriaBuilder;
38 
42  private $filterBuilder;
43 
50  public function __construct(
51  AttributeManagementInterface $attributeManagement,
52  AttributeSetRepositoryInterface $attributeSetRepository,
53  SearchCriteriaBuilder $searchCriteriaBuilder,
54  FilterBuilder $filterBuilder
55  ) {
56  $this->attributeManagement = $attributeManagement;
57  $this->attributeSetRepository = $attributeSetRepository;
58  $this->searchCriteriaBuilder = $searchCriteriaBuilder;
59  $this->filterBuilder = $filterBuilder;
60  }
61 
74  public function getDefaultEntityAttributes(
75  string $entityCode,
76  MetadataServiceInterface $metadataService = null
77  ) : array {
78  $this->searchCriteriaBuilder->addFilters(
79  [
80  $this->filterBuilder
81  ->setField('entity_type_code')
82  ->setValue($entityCode)
83  ->setConditionType('eq')
84  ->create(),
85  ]
86  );
87  $attributeSetList = $this->attributeSetRepository->getList($this->searchCriteriaBuilder->create())->getItems();
88  $attributes = [];
89  foreach ($attributeSetList as $attributeSet) {
90  try {
91  $attributes = array_merge(
93  $this->attributeManagement->getAttributes($entityCode, $attributeSet->getAttributeSetId())
94  );
95  } catch (NoSuchEntityException $exception) {
96  throw new GraphQlInputException(__('Entity code %1 does not exist.', [$entityCode]));
97  }
98  }
99  $attributeCodes = [];
100  $metadata = $metadataService ? $metadataService->getCustomAttributesMetadata() : [];
101  foreach ($metadata as $customAttribute) {
102  if (!array_key_exists($customAttribute->getAttributeCode(), $attributeCodes)) {
103  $attributeCodes[$customAttribute->getAttributeCode()] = false;
104  }
105  }
107  foreach ($attributes as $attribute) {
108  if (!array_key_exists($attribute->getAttributeCode(), $attributeCodes)) {
109  $attributeCodes[$attribute->getAttributeCode()]
110  = ((! $attribute->getIsUserDefined()) && !is_array($attribute));
111  }
112  }
113  return $attributeCodes;
114  }
115 }
__()
Definition: __.php:13
__construct(AttributeManagementInterface $attributeManagement, AttributeSetRepositoryInterface $attributeSetRepository, SearchCriteriaBuilder $searchCriteriaBuilder, FilterBuilder $filterBuilder)
$attributes
Definition: matrix.phtml:13
$searchCriteriaBuilder