![]() 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/Controller/Adminhtml/Page/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Cms\Controller\Adminhtml\Page; use Magento\Backend\App\Action; use Magento\Backend\Model\View\Result\Redirect; use Magento\Cms\Api\Data\PageInterface; use Magento\Cms\Api\PageRepositoryInterface; use Magento\Cms\Model\Page; use Magento\Cms\Model\PageFactory; use Magento\Framework\App\Action\HttpPostActionInterface; use Magento\Framework\App\ObjectManager; use Magento\Framework\App\Request\DataPersistorInterface; use Magento\Framework\Controller\ResultInterface; use Magento\Framework\Exception\LocalizedException; /** * Save CMS page action. * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class Save extends Action implements HttpPostActionInterface { /** * Authorization level of a basic admin session * * @see _isAllowed() */ const ADMIN_RESOURCE = 'Magento_Cms::save'; /** * @var PostDataProcessor */ protected $dataProcessor; /** * @var DataPersistorInterface */ protected $dataPersistor; /** * @var PageFactory */ private $pageFactory; /** * @var PageRepositoryInterface */ private $pageRepository; /** * @param Action\Context $context * @param PostDataProcessor $dataProcessor * @param DataPersistorInterface $dataPersistor * @param PageFactory|null $pageFactory * @param PageRepositoryInterface|null $pageRepository */ public function __construct( Action\Context $context, PostDataProcessor $dataProcessor, DataPersistorInterface $dataPersistor, PageFactory $pageFactory = null, PageRepositoryInterface $pageRepository = null ) { $this->dataProcessor = $dataProcessor; $this->dataPersistor = $dataPersistor; $this->pageFactory = $pageFactory ?: ObjectManager::getInstance()->get(PageFactory::class); $this->pageRepository = $pageRepository ?: ObjectManager::getInstance()->get(PageRepositoryInterface::class); parent::__construct($context); } /** * Save action * * @SuppressWarnings(PHPMD.CyclomaticComplexity) * @return ResultInterface */ public function execute() { $data = $this->getRequest()->getPostValue(); /** @var Redirect $resultRedirect */ $resultRedirect = $this->resultRedirectFactory->create(); if ($data) { $data = $this->dataProcessor->filter($data); if (isset($data['is_active']) && $data['is_active'] === 'true') { $data['is_active'] = Page::STATUS_ENABLED; } if (empty($data['page_id'])) { $data['page_id'] = null; } /** @var Page $model */ $model = $this->pageFactory->create(); $id = $this->getRequest()->getParam('page_id'); if ($id) { try { $model = $this->pageRepository->getById($id); } catch (LocalizedException $e) { $this->messageManager->addErrorMessage(__('This page no longer exists.')); return $resultRedirect->setPath('*/*/'); } } $data['layout_update_xml'] = $model->getLayoutUpdateXml(); $data['custom_layout_update_xml'] = $model->getCustomLayoutUpdateXml(); $model->setData($data); try { $this->_eventManager->dispatch( 'cms_page_prepare_save', ['page' => $model, 'request' => $this->getRequest()] ); $this->pageRepository->save($model); $this->messageManager->addSuccessMessage(__('You saved the page.')); return $this->processResultRedirect($model, $resultRedirect, $data); } catch (LocalizedException $e) { $this->messageManager->addExceptionMessage($e->getPrevious() ?: $e); } catch (\Throwable $e) { $this->messageManager->addErrorMessage(__('Something went wrong while saving the page.')); } $this->dataPersistor->set('cms_page', $data); return $resultRedirect->setPath('*/*/edit', ['page_id' => $this->getRequest()->getParam('page_id')]); } return $resultRedirect->setPath('*/*/'); } /** * Process result redirect * * @param PageInterface $model * @param Redirect $resultRedirect * @param array $data * @return Redirect * @throws LocalizedException */ private function processResultRedirect($model, $resultRedirect, $data) { if ($this->getRequest()->getParam('back', false) === 'duplicate') { $newPage = $this->pageFactory->create(['data' => $data]); $newPage->setId(null); $identifier = $model->getIdentifier() . '-' . uniqid(); $newPage->setIdentifier($identifier); $newPage->setIsActive(false); $this->pageRepository->save($newPage); $this->messageManager->addSuccessMessage(__('You duplicated the page.')); return $resultRedirect->setPath( '*/*/edit', [ 'page_id' => $newPage->getId(), '_current' => true, ] ); } $this->dataPersistor->clear('cms_page'); if ($this->getRequest()->getParam('back')) { return $resultRedirect->setPath('*/*/edit', ['page_id' => $model->getId(), '_current' => true]); } return $resultRedirect->setPath('*/*/'); } }