123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Cms\Model;
- use Magento\Cms\Api\BlockRepositoryInterface;
- use Magento\Cms\Api\Data;
- use Magento\Cms\Model\ResourceModel\Block as ResourceBlock;
- use Magento\Cms\Model\ResourceModel\Block\CollectionFactory as BlockCollectionFactory;
- use Magento\Framework\Api\DataObjectHelper;
- use Magento\Framework\Api\SearchCriteria\CollectionProcessorInterface;
- use Magento\Framework\Exception\CouldNotDeleteException;
- use Magento\Framework\Exception\CouldNotSaveException;
- use Magento\Framework\Exception\NoSuchEntityException;
- use Magento\Framework\Reflection\DataObjectProcessor;
- use Magento\Store\Model\StoreManagerInterface;
- /**
- * Class BlockRepository
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class BlockRepository implements BlockRepositoryInterface
- {
- /**
- * @var ResourceBlock
- */
- protected $resource;
- /**
- * @var BlockFactory
- */
- protected $blockFactory;
- /**
- * @var BlockCollectionFactory
- */
- protected $blockCollectionFactory;
- /**
- * @var Data\BlockSearchResultsInterfaceFactory
- */
- protected $searchResultsFactory;
- /**
- * @var DataObjectHelper
- */
- protected $dataObjectHelper;
- /**
- * @var DataObjectProcessor
- */
- protected $dataObjectProcessor;
- /**
- * @var \Magento\Cms\Api\Data\BlockInterfaceFactory
- */
- protected $dataBlockFactory;
- /**
- * @var \Magento\Store\Model\StoreManagerInterface
- */
- private $storeManager;
- /**
- * @var CollectionProcessorInterface
- */
- private $collectionProcessor;
- /**
- * @param ResourceBlock $resource
- * @param BlockFactory $blockFactory
- * @param Data\BlockInterfaceFactory $dataBlockFactory
- * @param BlockCollectionFactory $blockCollectionFactory
- * @param Data\BlockSearchResultsInterfaceFactory $searchResultsFactory
- * @param DataObjectHelper $dataObjectHelper
- * @param DataObjectProcessor $dataObjectProcessor
- * @param StoreManagerInterface $storeManager
- * @param CollectionProcessorInterface $collectionProcessor
- */
- public function __construct(
- ResourceBlock $resource,
- BlockFactory $blockFactory,
- \Magento\Cms\Api\Data\BlockInterfaceFactory $dataBlockFactory,
- BlockCollectionFactory $blockCollectionFactory,
- Data\BlockSearchResultsInterfaceFactory $searchResultsFactory,
- DataObjectHelper $dataObjectHelper,
- DataObjectProcessor $dataObjectProcessor,
- StoreManagerInterface $storeManager,
- CollectionProcessorInterface $collectionProcessor = null
- ) {
- $this->resource = $resource;
- $this->blockFactory = $blockFactory;
- $this->blockCollectionFactory = $blockCollectionFactory;
- $this->searchResultsFactory = $searchResultsFactory;
- $this->dataObjectHelper = $dataObjectHelper;
- $this->dataBlockFactory = $dataBlockFactory;
- $this->dataObjectProcessor = $dataObjectProcessor;
- $this->storeManager = $storeManager;
- $this->collectionProcessor = $collectionProcessor ?: $this->getCollectionProcessor();
- }
- /**
- * Save Block data
- *
- * @param \Magento\Cms\Api\Data\BlockInterface $block
- * @return Block
- * @throws CouldNotSaveException
- */
- public function save(Data\BlockInterface $block)
- {
- if (empty($block->getStoreId())) {
- $block->setStoreId($this->storeManager->getStore()->getId());
- }
- try {
- $this->resource->save($block);
- } catch (\Exception $exception) {
- throw new CouldNotSaveException(__($exception->getMessage()));
- }
- return $block;
- }
- /**
- * Load Block data by given Block Identity
- *
- * @param string $blockId
- * @return Block
- * @throws \Magento\Framework\Exception\NoSuchEntityException
- */
- public function getById($blockId)
- {
- $block = $this->blockFactory->create();
- $this->resource->load($block, $blockId);
- if (!$block->getId()) {
- throw new NoSuchEntityException(__('The CMS block with the "%1" ID doesn\'t exist.', $blockId));
- }
- return $block;
- }
- /**
- * Load Block data collection by given search criteria
- *
- * @SuppressWarnings(PHPMD.CyclomaticComplexity)
- * @SuppressWarnings(PHPMD.NPathComplexity)
- * @param \Magento\Framework\Api\SearchCriteriaInterface $criteria
- * @return \Magento\Cms\Api\Data\BlockSearchResultsInterface
- */
- public function getList(\Magento\Framework\Api\SearchCriteriaInterface $criteria)
- {
- /** @var \Magento\Cms\Model\ResourceModel\Block\Collection $collection */
- $collection = $this->blockCollectionFactory->create();
- $this->collectionProcessor->process($criteria, $collection);
- /** @var Data\BlockSearchResultsInterface $searchResults */
- $searchResults = $this->searchResultsFactory->create();
- $searchResults->setSearchCriteria($criteria);
- $searchResults->setItems($collection->getItems());
- $searchResults->setTotalCount($collection->getSize());
- return $searchResults;
- }
- /**
- * Delete Block
- *
- * @param \Magento\Cms\Api\Data\BlockInterface $block
- * @return bool
- * @throws CouldNotDeleteException
- */
- public function delete(Data\BlockInterface $block)
- {
- try {
- $this->resource->delete($block);
- } catch (\Exception $exception) {
- throw new CouldNotDeleteException(__($exception->getMessage()));
- }
- return true;
- }
- /**
- * Delete Block by given Block Identity
- *
- * @param string $blockId
- * @return bool
- * @throws CouldNotDeleteException
- * @throws NoSuchEntityException
- */
- public function deleteById($blockId)
- {
- return $this->delete($this->getById($blockId));
- }
- /**
- * Retrieve collection processor
- *
- * @deprecated 102.0.0
- * @return CollectionProcessorInterface
- */
- private function getCollectionProcessor()
- {
- if (!$this->collectionProcessor) {
- $this->collectionProcessor = \Magento\Framework\App\ObjectManager::getInstance()->get(
- 'Magento\Cms\Model\Api\SearchCriteria\BlockCollectionProcessor'
- );
- }
- return $this->collectionProcessor;
- }
- }
|