Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
PageRepository.php
Go to the documentation of this file.
1 <?php
7 namespace Magento\Cms\Model;
8 
18 use Magento\Cms\Model\ResourceModel\Page\CollectionFactory as PageCollectionFactory;
20 
26 {
30  protected $resource;
31 
35  protected $pageFactory;
36 
41 
46 
50  protected $dataObjectHelper;
51 
56 
60  protected $dataPageFactory;
61 
65  private $storeManager;
66 
70  private $collectionProcessor;
71 
83  public function __construct(
85  PageFactory $pageFactory,
86  Data\PageInterfaceFactory $dataPageFactory,
87  PageCollectionFactory $pageCollectionFactory,
88  Data\PageSearchResultsInterfaceFactory $searchResultsFactory,
91  StoreManagerInterface $storeManager,
92  CollectionProcessorInterface $collectionProcessor = null
93  ) {
94  $this->resource = $resource;
95  $this->pageFactory = $pageFactory;
96  $this->pageCollectionFactory = $pageCollectionFactory;
97  $this->searchResultsFactory = $searchResultsFactory;
98  $this->dataObjectHelper = $dataObjectHelper;
99  $this->dataPageFactory = $dataPageFactory;
100  $this->dataObjectProcessor = $dataObjectProcessor;
101  $this->storeManager = $storeManager;
102  $this->collectionProcessor = $collectionProcessor ?: $this->getCollectionProcessor();
103  }
104 
112  public function save(\Magento\Cms\Api\Data\PageInterface $page)
113  {
114  if ($page->getStoreId() === null) {
115  $storeId = $this->storeManager->getStore()->getId();
116  $page->setStoreId($storeId);
117  }
118  try {
119  $this->resource->save($page);
120  } catch (\Exception $exception) {
121  throw new CouldNotSaveException(
122  __('Could not save the page: %1', $exception->getMessage()),
123  $exception
124  );
125  }
126  return $page;
127  }
128 
136  public function getById($pageId)
137  {
138  $page = $this->pageFactory->create();
139  $page->load($pageId);
140  if (!$page->getId()) {
141  throw new NoSuchEntityException(__('The CMS page with the "%1" ID doesn\'t exist.', $pageId));
142  }
143  return $page;
144  }
145 
154  public function getList(\Magento\Framework\Api\SearchCriteriaInterface $criteria)
155  {
157  $collection = $this->pageCollectionFactory->create();
158 
159  $this->collectionProcessor->process($criteria, $collection);
160 
162  $searchResults = $this->searchResultsFactory->create();
163  $searchResults->setSearchCriteria($criteria);
164  $searchResults->setItems($collection->getItems());
165  $searchResults->setTotalCount($collection->getSize());
166  return $searchResults;
167  }
168 
177  {
178  try {
179  $this->resource->delete($page);
180  } catch (\Exception $exception) {
181  throw new CouldNotDeleteException(__(
182  'Could not delete the page: %1',
183  $exception->getMessage()
184  ));
185  }
186  return true;
187  }
188 
197  public function deleteById($pageId)
198  {
199  return $this->delete($this->getById($pageId));
200  }
201 
208  private function getCollectionProcessor()
209  {
210  if (!$this->collectionProcessor) {
211  $this->collectionProcessor = \Magento\Framework\App\ObjectManager::getInstance()->get(
212  'Magento\Cms\Model\Api\SearchCriteria\PageCollectionProcessor'
213  );
214  }
215  return $this->collectionProcessor;
216  }
217 }
$storeManager
__()
Definition: __.php:13
$page
Definition: pages.php:8
__construct(ResourcePage $resource, PageFactory $pageFactory, Data\PageInterfaceFactory $dataPageFactory, PageCollectionFactory $pageCollectionFactory, Data\PageSearchResultsInterfaceFactory $searchResultsFactory, DataObjectHelper $dataObjectHelper, DataObjectProcessor $dataObjectProcessor, StoreManagerInterface $storeManager, CollectionProcessorInterface $collectionProcessor=null)
getList(\Magento\Framework\Api\SearchCriteriaInterface $searchCriteria)
save(\Magento\Cms\Api\Data\PageInterface $page)