![]() 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-url-rewrite/Helper/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\UrlRewrite\Helper; use Magento\Framework\App\ObjectManager; use Magento\Backend\Model\Validator\UrlKey\CompositeUrlKey; use Magento\Framework\Exception\LocalizedException; class UrlRewrite extends \Magento\Framework\App\Helper\AbstractHelper { /** * Validation error constants */ public const VERR_MANYSLASHES = 1; // Too many slashes in a row of request path, e.g. '///foo//' public const VERR_ANCHOR = 2; // Anchor is not supported in request path, e.g. 'foo#bar' /** * @var CompositeUrlKey */ private $compositeUrlValidator; /** * @param CompositeUrlKey|null $compositeUrlValidator */ public function __construct( CompositeUrlKey $compositeUrlValidator = null ) { $this->compositeUrlValidator = $compositeUrlValidator ?? ObjectManager::getInstance()->get(CompositeUrlKey::class); } /** * Core func to validate request path * If something is wrong with a path it throws localized error message and error code, * that can be checked to by wrapper func to alternate error message * * @param string $requestPath * @return bool * @throws \Exception */ protected function _validateRequestPath($requestPath) { $requestPath = $requestPath !== null ? $requestPath : ''; if (strpos($requestPath, '//') !== false) { throw new \Exception( __('Do not use two or more consecutive slashes in the request path.'), self::VERR_MANYSLASHES ); } if (strpos($requestPath, '#') !== false) { throw new \Exception(__('Anchor symbol (#) is not supported in request path.'), self::VERR_ANCHOR); } $requestPathArray = explode('/', $requestPath); foreach ($requestPathArray as $requestPathPart) { $errors = $this->compositeUrlValidator->validate($requestPathPart); if (!empty($errors)) { throw new LocalizedException($errors[0]); } } return true; } /** * Validates request path * * Either returns TRUE (success) or throws error (validation failed) * * @param string $requestPath * @throws \Magento\Framework\Exception\LocalizedException * @return bool */ public function validateRequestPath($requestPath) { try { $this->_validateRequestPath($requestPath); } catch (\Exception $e) { throw new LocalizedException(__($e->getMessage())); } return true; } /** * Validates suffix for url rewrites to inform user about errors in it either returns TRUE * (success) or throws error (validation failed) * * @param string $suffix * @throws \Magento\Framework\Exception\LocalizedException * @return bool */ public function validateSuffix($suffix) { try { // Suffix itself must be a valid request path $this->_validateRequestPath($suffix); } catch (\Exception $e) { // Make message saying about suffix, not request path switch ($e->getCode()) { case self::VERR_MANYSLASHES: throw new \Magento\Framework\Exception\LocalizedException( __('Do not use two or more consecutive slashes in the url rewrite suffix.') ); case self::VERR_ANCHOR: throw new \Magento\Framework\Exception\LocalizedException( __('Anchor symbol (#) is not supported in url rewrite suffix.') ); } } return true; } }