![]() 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. */ namespace Magento\Cms\Controller\Adminhtml\Page; use Magento\Cms\Model\Page\DomValidationState; use Magento\Framework\App\ObjectManager; use Magento\Framework\Config\Dom\ValidationException; use Magento\Framework\Config\Dom\ValidationSchemaException; use Magento\Cms\Model\Page\CustomLayout\CustomLayoutValidator; use Magento\Framework\Filter\FilterInput; /** * Controller helper for user input. */ class PostDataProcessor { /** * @var \Magento\Framework\Stdlib\DateTime\Filter\Date */ protected $dateFilter; /** * @var \Magento\Framework\View\Model\Layout\Update\ValidatorFactory */ protected $validatorFactory; /** * @var \Magento\Framework\Message\ManagerInterface */ protected $messageManager; /** * @var DomValidationState */ private $validationState; /** * @var CustomLayoutValidator */ private $customLayoutValidator; /** * @param \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter * @param \Magento\Framework\Message\ManagerInterface $messageManager * @param \Magento\Framework\View\Model\Layout\Update\ValidatorFactory $validatorFactory * @param DomValidationState|null $validationState * @param CustomLayoutValidator|null $customLayoutValidator */ public function __construct( \Magento\Framework\Stdlib\DateTime\Filter\Date $dateFilter, \Magento\Framework\Message\ManagerInterface $messageManager, \Magento\Framework\View\Model\Layout\Update\ValidatorFactory $validatorFactory, DomValidationState $validationState = null, CustomLayoutValidator $customLayoutValidator = null ) { $this->dateFilter = $dateFilter; $this->messageManager = $messageManager; $this->validatorFactory = $validatorFactory; $this->validationState = $validationState ?: ObjectManager::getInstance()->get(DomValidationState::class); $this->customLayoutValidator = $customLayoutValidator ?: ObjectManager::getInstance()->get(CustomLayoutValidator::class); } /** * Filtering posted data. Converting localized data if needed * * @param array $data * @return array */ public function filter($data) { $filterRules = []; foreach (['custom_theme_from', 'custom_theme_to'] as $dateField) { if (!empty($data[$dateField])) { $filterRules[$dateField] = $this->dateFilter; } } return (new FilterInput($filterRules, [], $data))->getUnescaped(); } /** * Validate post data * * @param array $data * @return bool Return FALSE if some item is invalid * @deprecated 103.0.2 * @see no alternatives */ public function validate($data) { if (!empty($data['layout_update_xml']) || !empty($data['custom_layout_update_xml'])) { /** @var $layoutXmlValidator \Magento\Framework\View\Model\Layout\Update\Validator */ $layoutXmlValidator = $this->validatorFactory->create( [ 'validationState' => $this->validationState, ] ); if (!$this->validateData($data, $layoutXmlValidator)) { $validatorMessages = $layoutXmlValidator->getMessages(); foreach ($validatorMessages as $message) { $this->messageManager->addErrorMessage($message); } return false; } } return true; } /** * Check if required fields is not empty * * @param array $data * @return bool */ public function validateRequireEntry(array $data) { $requiredFields = [ 'title' => __('Page Title'), 'stores' => __('Store View'), 'is_active' => __('Status') ]; $errorNo = true; foreach ($data as $field => $value) { if (in_array($field, array_keys($requiredFields)) && $value == '') { $errorNo = false; $this->messageManager->addErrorMessage( __('To apply changes you should fill in hidden required "%1" field', $requiredFields[$field]) ); } } return $errorNo; } /** * Validate data, avoid cyclomatic complexity * * @param array $data * @param \Magento\Framework\View\Model\Layout\Update\Validator $layoutXmlValidator * @return bool */ private function validateData($data, $layoutXmlValidator) { try { if (!empty($data['layout_update_xml']) && !$layoutXmlValidator->isValid($data['layout_update_xml'])) { return false; } if (!empty($data['custom_layout_update_xml']) && !$layoutXmlValidator->isValid($data['custom_layout_update_xml']) ) { return false; } if (!$this->customLayoutValidator->validate($data)) { return false; } } catch (ValidationException | ValidationSchemaException $e) { return false; } catch (\Exception $e) { $this->messageManager->addExceptionMessage($e); return false; } return true; } }