Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
AttributeSetRepository.php
Go to the documentation of this file.
1 <?php
7 namespace Magento\Eav\Model;
8 
11 use Magento\Eav\Model\Config as EavConfig;
12 use Magento\Eav\Model\Entity\Attribute\Set as AttributeSet;
13 use Magento\Eav\Model\Entity\Attribute\SetFactory as AttributeSetFactory;
15 use Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\CollectionFactory;
20 
25 {
29  private $attributeSetResource;
30 
34  private $attributeSetFactory;
35 
39  private $collectionFactory;
40 
44  private $eavConfig;
45 
49  private $searchResultsFactory;
50 
54  protected $joinProcessor;
55 
59  private $collectionProcessor;
60 
71  public function __construct(
72  AttributeSetResource $attributeSetResource,
73  AttributeSetFactory $attributeSetFactory,
74  CollectionFactory $collectionFactory,
75  EavConfig $eavConfig,
76  \Magento\Eav\Api\Data\AttributeSetSearchResultsInterfaceFactory $searchResultFactory,
77  \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor,
78  CollectionProcessorInterface $collectionProcessor = null
79  ) {
80  $this->attributeSetResource = $attributeSetResource;
81  $this->attributeSetFactory = $attributeSetFactory;
82  $this->collectionFactory = $collectionFactory;
83  $this->eavConfig = $eavConfig;
84  $this->searchResultsFactory = $searchResultFactory;
85  $this->joinProcessor = $joinProcessor;
86  $this->collectionProcessor = $collectionProcessor ?: $this->getCollectionProcessor();
87  }
88 
93  {
94  try {
95  $this->attributeSetResource->save($attributeSet);
96  } catch (\Exception $exception) {
97  throw new CouldNotSaveException(
98  __(
99  'The attribute set couldn\'t be saved due to an error. '
100  . 'Verify your information and try again. If the error persists, please try again later.'
101  )
102  );
103  }
104  return $attributeSet;
105  }
106 
110  public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
111  {
113  $collection = $this->collectionFactory->create();
114  $this->joinProcessor->process($collection);
115 
116  $this->collectionProcessor->process($searchCriteria, $collection);
117 
119  $searchResults = $this->searchResultsFactory->create();
120  $searchResults->setSearchCriteria($searchCriteria);
121  $searchResults->setItems($collection->getItems());
122  $searchResults->setTotalCount($collection->getSize());
123  return $searchResults;
124  }
125 
134  {
135  foreach ($searchCriteria->getFilterGroups() as $filterGroup) {
136  foreach ($filterGroup->getFilters() as $filter) {
137  if ($filter->getField() == 'entity_type_code') {
138  return $filter->getValue();
139  }
140  }
141  }
142  return null;
143  }
144 
148  public function get($attributeSetId)
149  {
151  $attributeSet = $this->attributeSetFactory->create();
152  $this->attributeSetResource->load($attributeSet, $attributeSetId);
153 
154  if (!$attributeSet->getId()) {
156  }
157  return $attributeSet;
158  }
159 
163  public function delete(AttributeSetInterface $attributeSet)
164  {
165  try {
166  $this->attributeSetResource->delete($attributeSet);
167  } catch (\Magento\Framework\Exception\StateException $exception) {
168  throw new CouldNotDeleteException(__('The default attribute set can\'t be deleted.'));
169  } catch (\Exception $exception) {
170  throw new CouldNotDeleteException(
171  __(
172  'The attribute set couldn\'t be deleted due to an error. '
173  . 'Try again — if the error persists, please try again later.'
174  )
175  );
176  }
177  return true;
178  }
179 
183  public function deleteById($attributeSetId)
184  {
185  return $this->delete($this->get($attributeSetId));
186  }
187 
194  private function getCollectionProcessor()
195  {
196  if (!$this->collectionProcessor) {
197  $this->collectionProcessor = \Magento\Framework\App\ObjectManager::getInstance()->get(
198  'Magento\Eav\Model\Api\SearchCriteria\AttributeSetCollectionProcessor'
199  );
200  }
201  return $this->collectionProcessor;
202  }
203 }
getEntityTypeCode(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
__()
Definition: __.php:13
__construct(AttributeSetResource $attributeSetResource, AttributeSetFactory $attributeSetFactory, CollectionFactory $collectionFactory, EavConfig $eavConfig, \Magento\Eav\Api\Data\AttributeSetSearchResultsInterfaceFactory $searchResultFactory, \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor, CollectionProcessorInterface $collectionProcessor=null)
$searchCriteria
save(AttributeSetInterface $attributeSet)