123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Cms\Model;
- use Magento\Cms\Api\Data;
- use Magento\Cms\Api\PageRepositoryInterface;
- 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\Cms\Model\ResourceModel\Page as ResourcePage;
- use Magento\Cms\Model\ResourceModel\Page\CollectionFactory as PageCollectionFactory;
- use Magento\Store\Model\StoreManagerInterface;
- /**
- * Class PageRepository
- * @SuppressWarnings(PHPMD.CouplingBetweenObjects)
- */
- class PageRepository implements PageRepositoryInterface
- {
- /**
- * @var ResourcePage
- */
- protected $resource;
- /**
- * @var PageFactory
- */
- protected $pageFactory;
- /**
- * @var PageCollectionFactory
- */
- protected $pageCollectionFactory;
- /**
- * @var Data\PageSearchResultsInterfaceFactory
- */
- protected $searchResultsFactory;
- /**
- * @var DataObjectHelper
- */
- protected $dataObjectHelper;
- /**
- * @var DataObjectProcessor
- */
- protected $dataObjectProcessor;
- /**
- * @var \Magento\Cms\Api\Data\PageInterfaceFactory
- */
- protected $dataPageFactory;
- /**
- * @var \Magento\Store\Model\StoreManagerInterface
- */
- private $storeManager;
- /**
- * @var CollectionProcessorInterface
- */
- private $collectionProcessor;
- /**
- * @param ResourcePage $resource
- * @param PageFactory $pageFactory
- * @param Data\PageInterfaceFactory $dataPageFactory
- * @param PageCollectionFactory $pageCollectionFactory
- * @param Data\PageSearchResultsInterfaceFactory $searchResultsFactory
- * @param DataObjectHelper $dataObjectHelper
- * @param DataObjectProcessor $dataObjectProcessor
- * @param StoreManagerInterface $storeManager
- * @param CollectionProcessorInterface $collectionProcessor
- */
- public function __construct(
- ResourcePage $resource,
- PageFactory $pageFactory,
- Data\PageInterfaceFactory $dataPageFactory,
- PageCollectionFactory $pageCollectionFactory,
- Data\PageSearchResultsInterfaceFactory $searchResultsFactory,
- DataObjectHelper $dataObjectHelper,
- DataObjectProcessor $dataObjectProcessor,
- StoreManagerInterface $storeManager,
- CollectionProcessorInterface $collectionProcessor = null
- ) {
- $this->resource = $resource;
- $this->pageFactory = $pageFactory;
- $this->pageCollectionFactory = $pageCollectionFactory;
- $this->searchResultsFactory = $searchResultsFactory;
- $this->dataObjectHelper = $dataObjectHelper;
- $this->dataPageFactory = $dataPageFactory;
- $this->dataObjectProcessor = $dataObjectProcessor;
- $this->storeManager = $storeManager;
- $this->collectionProcessor = $collectionProcessor ?: $this->getCollectionProcessor();
- }
- /**
- * Save Page data
- *
- * @param \Magento\Cms\Api\Data\PageInterface $page
- * @return Page
- * @throws CouldNotSaveException
- */
- public function save(\Magento\Cms\Api\Data\PageInterface $page)
- {
- if ($page->getStoreId() === null) {
- $storeId = $this->storeManager->getStore()->getId();
- $page->setStoreId($storeId);
- }
- try {
- $this->resource->save($page);
- } catch (\Exception $exception) {
- throw new CouldNotSaveException(
- __('Could not save the page: %1', $exception->getMessage()),
- $exception
- );
- }
- return $page;
- }
- /**
- * Load Page data by given Page Identity
- *
- * @param string $pageId
- * @return Page
- * @throws \Magento\Framework\Exception\NoSuchEntityException
- */
- public function getById($pageId)
- {
- $page = $this->pageFactory->create();
- $page->load($pageId);
- if (!$page->getId()) {
- throw new NoSuchEntityException(__('The CMS page with the "%1" ID doesn\'t exist.', $pageId));
- }
- return $page;
- }
- /**
- * Load Page data collection by given search criteria
- *
- * @SuppressWarnings(PHPMD.CyclomaticComplexity)
- * @SuppressWarnings(PHPMD.NPathComplexity)
- * @param \Magento\Framework\Api\SearchCriteriaInterface $criteria
- * @return \Magento\Cms\Api\Data\PageSearchResultsInterface
- */
- public function getList(\Magento\Framework\Api\SearchCriteriaInterface $criteria)
- {
- /** @var \Magento\Cms\Model\ResourceModel\Page\Collection $collection */
- $collection = $this->pageCollectionFactory->create();
- $this->collectionProcessor->process($criteria, $collection);
- /** @var Data\PageSearchResultsInterface $searchResults */
- $searchResults = $this->searchResultsFactory->create();
- $searchResults->setSearchCriteria($criteria);
- $searchResults->setItems($collection->getItems());
- $searchResults->setTotalCount($collection->getSize());
- return $searchResults;
- }
- /**
- * Delete Page
- *
- * @param \Magento\Cms\Api\Data\PageInterface $page
- * @return bool
- * @throws CouldNotDeleteException
- */
- public function delete(\Magento\Cms\Api\Data\PageInterface $page)
- {
- try {
- $this->resource->delete($page);
- } catch (\Exception $exception) {
- throw new CouldNotDeleteException(__(
- 'Could not delete the page: %1',
- $exception->getMessage()
- ));
- }
- return true;
- }
- /**
- * Delete Page by given Page Identity
- *
- * @param string $pageId
- * @return bool
- * @throws CouldNotDeleteException
- * @throws NoSuchEntityException
- */
- public function deleteById($pageId)
- {
- return $this->delete($this->getById($pageId));
- }
- /**
- * 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\PageCollectionProcessor'
- );
- }
- return $this->collectionProcessor;
- }
- }
|