![]() 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/cartforge.co/vendor/magento/module-cms-url-rewrite/Plugin/Cms/Model/Store/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\CmsUrlRewrite\Plugin\Cms\Model\Store; use Magento\Cms\Api\Data\PageInterface; use Magento\Cms\Api\PageRepositoryInterface; use Magento\CmsUrlRewrite\Model\CmsPageUrlRewriteGenerator; use Magento\Framework\Api\SearchCriteriaBuilder; use Magento\Framework\Model\AbstractModel; use Magento\Store\Model\ResourceModel\Store as ResourceStore; use Magento\UrlRewrite\Model\UrlPersistInterface; /** * Plugin which is listening store resource model and on save replace cms page url rewrites * * @see ResourceStore */ class View { private const ALL_STORE_VIEWS = '0'; /** * @var UrlPersistInterface */ private $urlPersist; /** * @var CmsPageUrlRewriteGenerator */ private $cmsPageUrlRewriteGenerator; /** * @var PageRepositoryInterface */ private $pageRepository; /** * @var SearchCriteriaBuilder */ private $searchCriteriaBuilder; /** * Update store view plugin constructor * * @param UrlPersistInterface $urlPersist * @param SearchCriteriaBuilder $searchCriteriaBuilder * @param PageRepositoryInterface $pageRepository * @param CmsPageUrlRewriteGenerator $cmsPageUrlRewriteGenerator */ public function __construct( UrlPersistInterface $urlPersist, SearchCriteriaBuilder $searchCriteriaBuilder, PageRepositoryInterface $pageRepository, CmsPageUrlRewriteGenerator $cmsPageUrlRewriteGenerator ) { $this->urlPersist = $urlPersist; $this->searchCriteriaBuilder = $searchCriteriaBuilder; $this->pageRepository = $pageRepository; $this->cmsPageUrlRewriteGenerator = $cmsPageUrlRewriteGenerator; } /** * Replace cms page url rewrites on store view save * * @param ResourceStore $object * @param ResourceStore $result * @param ResourceStore $store * @return ResourceStore * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function afterSave(ResourceStore $object, ResourceStore $result, AbstractModel $store): ResourceStore { if ($store->isObjectNew()) { $this->urlPersist->replace( $this->generateCmsPagesUrls((int)$store->getId()) ); } return $result; } /** * Generate url rewrites for cms pages to store view * * @param int $storeId * @return array */ private function generateCmsPagesUrls(int $storeId): array { $rewrites = []; $urls = []; foreach ($this->getCmsPageItems() as $page) { $page->setStoreId($storeId); $rewrites[] = $this->cmsPageUrlRewriteGenerator->generate($page); } $urls = array_merge($urls, ...$rewrites); return $urls; } /** * Return cms page items for all store view * * @return PageInterface[] */ private function getCmsPageItems(): array { $searchCriteria = $this->searchCriteriaBuilder->addFilter('store_id', self::ALL_STORE_VIEWS) ->create(); $list = $this->pageRepository->getList($searchCriteria); return $list->getItems(); } }