![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-cms/Model/ |
<?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\App\ObjectManager; 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; use Magento\Framework\EntityManager\HydratorInterface; /** * Default block repo impl. * @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; /** * @var HydratorInterface */ private $hydrator; /** * @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 * @param HydratorInterface|null $hydrator * * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ 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, ?HydratorInterface $hydrator = 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(); $this->hydrator = $hydrator ?? ObjectManager::getInstance()->get(HydratorInterface::class); } /** * 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()); } if ($block->getId() && $block instanceof Block && !$block->getOrigData()) { $block = $this->hydrator->hydrate($this->getById($block->getId()), $this->hydrator->extract($block)); } 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() { //phpcs:disable Magento2.PHP.LiteralNamespaces if (!$this->collectionProcessor) { $this->collectionProcessor = \Magento\Framework\App\ObjectManager::getInstance()->get( 'Magento\Cms\Model\Api\SearchCriteria\BlockCollectionProcessor' ); } return $this->collectionProcessor; } }