![]() 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/old/vendor/magento/module-cms-url-rewrite/Model/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\CmsUrlRewrite\Model; use Magento\Store\Model\StoreManagerInterface; use Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory; class CmsPageUrlRewriteGenerator { /** * Entity type code */ const ENTITY_TYPE = 'cms-page'; /** * @var \Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory */ protected $urlRewriteFactory; /** * @var \Magento\CmsUrlRewrite\Model\CmsPageUrlPathGenerator */ protected $cmsPageUrlPathGenerator; /** * Store manager * * @var StoreManagerInterface */ protected $storeManager; /** * @var \Magento\Cms\Model\Page */ protected $cmsPage; /** * @param \Magento\UrlRewrite\Service\V1\Data\UrlRewriteFactory $urlRewriteFactory * @param \Magento\CmsUrlRewrite\Model\CmsPageUrlPathGenerator $cmsPageUrlPathGenerator * @param StoreManagerInterface $storeManager */ public function __construct( UrlRewriteFactory $urlRewriteFactory, CmsPageUrlPathGenerator $cmsPageUrlPathGenerator, StoreManagerInterface $storeManager ) { $this->urlRewriteFactory = $urlRewriteFactory; $this->storeManager = $storeManager; $this->cmsPageUrlPathGenerator = $cmsPageUrlPathGenerator; } /** * @param \Magento\Cms\Model\Page $cmsPage * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[] */ public function generate($cmsPage) { $stores = $cmsPage->getStores(); $this->cmsPage = $cmsPage; $urls = array_search('0', $stores) === false ? $this->generateForSpecificStores($stores) : $this->generateForAllStores(); $this->cmsPage = null; return $urls; } /** * Generate list of urls for default store * * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[] */ protected function generateForAllStores() { $urls = []; foreach ($this->storeManager->getStores() as $store) { $urls[] = $this->createUrlRewrite($store->getStoreId()); } return $urls; } /** * Generate list of urls per store * * @param int[] $storeIds * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite[] */ protected function generateForSpecificStores($storeIds) { $urls = []; $existingStores = $this->storeManager->getStores(); foreach ($storeIds as $storeId) { if (!isset($existingStores[$storeId])) { continue; } $urls[] = $this->createUrlRewrite($storeId); } return $urls; } /** * Create url rewrite object * * @param int $storeId * @param int $redirectType * @return \Magento\UrlRewrite\Service\V1\Data\UrlRewrite */ protected function createUrlRewrite($storeId, $redirectType = 0) { return $this->urlRewriteFactory->create()->setStoreId($storeId) ->setEntityType(self::ENTITY_TYPE) ->setEntityId($this->cmsPage->getId()) ->setRequestPath($this->cmsPage->getIdentifier()) ->setTargetPath($this->cmsPageUrlPathGenerator->getCanonicalUrlPath($this->cmsPage)) ->setIsAutogenerated(1) ->setRedirectType($redirectType); } }