diff --git a/vendor/magento/module-cms-graph-ql/Model/Resolver/DataProvider/Page.php b/vendor/magento/module-cms-graph-ql/Model/Resolver/DataProvider/Page.php index 9ca215368ab5f..49ab31e8c01b5 100644 --- a/vendor/magento/module-cms-graph-ql/Model/Resolver/DataProvider/Page.php +++ b/vendor/magento/module-cms-graph-ql/Model/Resolver/DataProvider/Page.php @@ -10,7 +10,9 @@ use Magento\Cms\Api\Data\PageInterface; use Magento\Cms\Api\GetPageByIdentifierInterface; use Magento\Cms\Api\PageRepositoryInterface; +use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Exception\NoSuchEntityException; +use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\Widget\Model\Template\FilterEmulate; /** @@ -21,17 +23,17 @@ class Page /** * @var GetPageByIdentifierInterface */ - private $pageByIdentifier; + private GetPageByIdentifierInterface $pageByIdentifier; /** * @var PageRepositoryInterface */ - private $pageRepository; + private PageRepositoryInterface $pageRepository; /** * @var FilterEmulate */ - private $widgetFilter; + private FilterEmulate $widgetFilter; /** * @param PageRepositoryInterface $pageRepository @@ -53,14 +55,15 @@ public function __construct( * Returns page data by page_id * * @param int $pageId + * @param ResolveInfo|null $info * @return array * @throws NoSuchEntityException + * @throws LocalizedException */ - public function getDataByPageId(int $pageId): array + public function getDataByPageId(int $pageId, ?ResolveInfo $info = null): array { $page = $this->pageRepository->getById($pageId); - - return $this->convertPageData($page); + return $this->convertPageData($page, $info ? array_keys($info->getFieldSelection(1)) : []); } /** @@ -68,43 +71,45 @@ public function getDataByPageId(int $pageId): array * * @param string $pageIdentifier * @param int $storeId + * @param ResolveInfo|null $info * @return array * @throws NoSuchEntityException */ - public function getDataByPageIdentifier(string $pageIdentifier, int $storeId): array + public function getDataByPageIdentifier(string $pageIdentifier, int $storeId, ?ResolveInfo $info = null): array { $page = $this->pageByIdentifier->execute($pageIdentifier, $storeId); - return $this->convertPageData($page); + return $this->convertPageData($page, $info ? array_keys($info->getFieldSelection(1)) : []); } /** * Convert page data * * @param PageInterface $page + * @param array $fields * @return array * @throws NoSuchEntityException */ - private function convertPageData(PageInterface $page) + private function convertPageData(PageInterface $page, array $fields = []): array { 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(), PageInterface::PAGE_ID => $page->getId(), - PageInterface::IDENTIFIER => $page->getIdentifier(), + PageInterface::IDENTIFIER => $page->getIdentifier() ]; + if (empty($fields) || in_array(PageInterface::CONTENT, $fields)) { + $pageData[PageInterface::CONTENT] = $this->widgetFilter->filter($page->getContent()); + } return $pageData; } } diff --git a/vendor/magento/module-cms-graph-ql/Model/Resolver/Page.php b/vendor/magento/module-cms-graph-ql/Model/Resolver/Page.php index 7d03de7c4d0c3..2531b4253f280 100644 --- a/vendor/magento/module-cms-graph-ql/Model/Resolver/Page.php +++ b/vendor/magento/module-cms-graph-ql/Model/Resolver/Page.php @@ -53,11 +53,12 @@ public function resolve( try { if (isset($args['id'])) { - $pageData = $this->pageDataProvider->getDataByPageId((int)$args['id']); + $pageData = $this->pageDataProvider->getDataByPageId((int)$args['id'], $info); } elseif (isset($args['identifier'])) { $pageData = $this->pageDataProvider->getDataByPageIdentifier( (string)$args['identifier'], - (int)$context->getExtensionAttributes()->getStore()->getId() + (int)$context->getExtensionAttributes()->getStore()->getId(), + $info ); } } catch (NoSuchEntityException $e) { diff --git a/vendor/magento/module-cms-url-rewrite-graph-ql/Model/DataProvider/UrlRewrite/Page.php b/vendor/magento/module-cms-url-rewrite-graph-ql/Model/DataProvider/UrlRewrite/Page.php index a83cbb8713d50..b2fb4cb9919af 100644 --- a/vendor/magento/module-cms-url-rewrite-graph-ql/Model/DataProvider/UrlRewrite/Page.php +++ b/vendor/magento/module-cms-url-rewrite-graph-ql/Model/DataProvider/UrlRewrite/Page.php @@ -8,6 +8,7 @@ namespace Magento\CmsUrlRewriteGraphQl\Model\DataProvider\UrlRewrite; use Magento\CmsGraphQl\Model\Resolver\DataProvider\Page as PageDataProvider; +use Magento\Framework\Exception\LocalizedException; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Framework\GraphQl\Schema\Type\ResolveInfo; use Magento\UrlRewriteGraphQl\Model\DataProvider\EntityDataProviderInterface; @@ -38,6 +39,7 @@ public function __construct( * @param int|null $storeId * @return array * @throws NoSuchEntityException + * @throws LocalizedException * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function getData( @@ -46,7 +48,7 @@ public function getData( ResolveInfo $info = null, int $storeId = null ): array { - $result = $this->pageDataProvider->getDataByPageId((int)$id); + $result = $this->pageDataProvider->getDataByPageId($id, $info); $result['type_id'] = $entity_type; return $result; }