123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Eav\Model;
- use Magento\Eav\Api\AttributeSetRepositoryInterface;
- use Magento\Eav\Api\Data\AttributeSetInterface;
- use Magento\Eav\Model\Config as EavConfig;
- use Magento\Eav\Model\Entity\Attribute\Set as AttributeSet;
- use Magento\Eav\Model\Entity\Attribute\SetFactory as AttributeSetFactory;
- use Magento\Eav\Model\ResourceModel\Entity\Attribute\Set as AttributeSetResource;
- use Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\CollectionFactory;
- use Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface;
- use Magento\Framework\Exception\CouldNotDeleteException;
- use Magento\Framework\Exception\CouldNotSaveException;
- use Magento\Framework\Exception\NoSuchEntityException;
- /**
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class AttributeSetRepository implements AttributeSetRepositoryInterface
- {
- /**
- * @var AttributeSetResource
- */
- private $attributeSetResource;
- /**
- * @var AttributeSetFactory
- */
- private $attributeSetFactory;
- /**
- * @var CollectionFactory
- */
- private $collectionFactory;
- /**
- * @var EavConfig
- */
- private $eavConfig;
- /**
- * @var \Magento\Eav\Api\Data\AttributeSetSearchResultsInterfaceFactory
- */
- private $searchResultsFactory;
- /**
- * @var \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface
- */
- protected $joinProcessor;
- /**
- * @var CollectionProcessorInterface
- */
- private $collectionProcessor;
- /**
- * @param AttributeSetResource $attributeSetResource
- * @param AttributeSetFactory $attributeSetFactory
- * @param CollectionFactory $collectionFactory
- * @param Config $eavConfig
- * @param \Magento\Eav\Api\Data\AttributeSetSearchResultsInterfaceFactory $searchResultFactory
- * @param \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor
- * @param CollectionProcessorInterface $collectionProcessor
- * @codeCoverageIgnore
- */
- public function __construct(
- AttributeSetResource $attributeSetResource,
- AttributeSetFactory $attributeSetFactory,
- CollectionFactory $collectionFactory,
- EavConfig $eavConfig,
- \Magento\Eav\Api\Data\AttributeSetSearchResultsInterfaceFactory $searchResultFactory,
- \Magento\Framework\Api\ExtensionAttribute\JoinProcessorInterface $joinProcessor,
- CollectionProcessorInterface $collectionProcessor = null
- ) {
- $this->attributeSetResource = $attributeSetResource;
- $this->attributeSetFactory = $attributeSetFactory;
- $this->collectionFactory = $collectionFactory;
- $this->eavConfig = $eavConfig;
- $this->searchResultsFactory = $searchResultFactory;
- $this->joinProcessor = $joinProcessor;
- $this->collectionProcessor = $collectionProcessor ?: $this->getCollectionProcessor();
- }
- /**
- * {@inheritdoc}
- */
- public function save(AttributeSetInterface $attributeSet)
- {
- try {
- $this->attributeSetResource->save($attributeSet);
- } catch (\Exception $exception) {
- throw new CouldNotSaveException(
- __(
- 'The attribute set couldn\'t be saved due to an error. '
- . 'Verify your information and try again. If the error persists, please try again later.'
- )
- );
- }
- return $attributeSet;
- }
- /**
- * {@inheritdoc}
- */
- public function getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
- {
- /** @var \Magento\Eav\Model\ResourceModel\Entity\Attribute\Set\Collection $collection */
- $collection = $this->collectionFactory->create();
- $this->joinProcessor->process($collection);
- $this->collectionProcessor->process($searchCriteria, $collection);
- /** @var \Magento\Eav\Api\Data\AttributeSetSearchResultsInterface $searchResults */
- $searchResults = $this->searchResultsFactory->create();
- $searchResults->setSearchCriteria($searchCriteria);
- $searchResults->setItems($collection->getItems());
- $searchResults->setTotalCount($collection->getSize());
- return $searchResults;
- }
- /**
- * Retrieve entity type code from search criteria
- *
- * @deprecated 101.0.0
- * @param \Magento\Framework\Api\SearchCriteriaInterface $searchCriteria
- * @return null|string
- */
- protected function getEntityTypeCode(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
- {
- foreach ($searchCriteria->getFilterGroups() as $filterGroup) {
- foreach ($filterGroup->getFilters() as $filter) {
- if ($filter->getField() == 'entity_type_code') {
- return $filter->getValue();
- }
- }
- }
- return null;
- }
- /**
- * {@inheritdoc}
- */
- public function get($attributeSetId)
- {
- /** @var AttributeSet $attributeSet */
- $attributeSet = $this->attributeSetFactory->create();
- $this->attributeSetResource->load($attributeSet, $attributeSetId);
- if (!$attributeSet->getId()) {
- throw NoSuchEntityException::singleField('id', $attributeSetId);
- }
- return $attributeSet;
- }
- /**
- * {@inheritdoc}
- */
- public function delete(AttributeSetInterface $attributeSet)
- {
- try {
- $this->attributeSetResource->delete($attributeSet);
- } catch (\Magento\Framework\Exception\StateException $exception) {
- throw new CouldNotDeleteException(__('The default attribute set can\'t be deleted.'));
- } catch (\Exception $exception) {
- throw new CouldNotDeleteException(
- __(
- 'The attribute set couldn\'t be deleted due to an error. '
- . 'Try again — if the error persists, please try again later.'
- )
- );
- }
- return true;
- }
- /**
- * {@inheritdoc}
- */
- public function deleteById($attributeSetId)
- {
- return $this->delete($this->get($attributeSetId));
- }
- /**
- * Retrieve collection processor
- *
- * @deprecated 101.0.0
- * @return CollectionProcessorInterface
- */
- private function getCollectionProcessor()
- {
- if (!$this->collectionProcessor) {
- $this->collectionProcessor = \Magento\Framework\App\ObjectManager::getInstance()->get(
- 'Magento\Eav\Model\Api\SearchCriteria\AttributeSetCollectionProcessor'
- );
- }
- return $this->collectionProcessor;
- }
- }
|