123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- declare(strict_types=1);
- namespace Magento\CmsGraphQl\Model\Resolver\DataProvider;
- use Magento\Cms\Api\Data\PageInterface;
- use Magento\Cms\Api\PageRepositoryInterface;
- use Magento\Framework\Exception\NoSuchEntityException;
- use Magento\Widget\Model\Template\FilterEmulate;
- /**
- * Cms page data provider
- */
- class Page
- {
- /**
- * @var FilterEmulate
- */
- private $widgetFilter;
- /**
- * @var PageRepositoryInterface
- */
- private $pageRepository;
- /**
- * @param PageRepositoryInterface $pageRepository
- * @param FilterEmulate $widgetFilter
- */
- public function __construct(
- PageRepositoryInterface $pageRepository,
- FilterEmulate $widgetFilter
- ) {
- $this->pageRepository = $pageRepository;
- $this->widgetFilter = $widgetFilter;
- }
- /**
- * @param int $pageId
- * @return array
- * @throws NoSuchEntityException
- */
- public function getData(int $pageId): array
- {
- $page = $this->pageRepository->getById($pageId);
- if (false === $page->isActive()) {
- throw new NoSuchEntityException();
- }
- $renderedContent = $this->widgetFilter->filter($page->getContent());
- $pageData = [
- 'url_key' => $page->getIdentifier(),
- PageInterface::TITLE => $page->getTitle(),
- PageInterface::CONTENT => $renderedContent,
- PageInterface::CONTENT_HEADING => $page->getContentHeading(),
- PageInterface::PAGE_LAYOUT => $page->getPageLayout(),
- PageInterface::META_TITLE => $page->getMetaTitle(),
- PageInterface::META_DESCRIPTION => $page->getMetaDescription(),
- PageInterface::META_KEYWORDS => $page->getMetaKeywords(),
- ];
- return $pageData;
- }
- }
|