![]() 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/framework/View/Element/Html/Link/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Framework\View\Element\Html\Link; use Magento\Framework\App\DefaultPathInterface; use Magento\Framework\View\Element\Template; use Magento\Framework\View\Element\Template\Context; /** * Block representing link with two possible states. * "Current" state means link leads to URL equivalent to URL of currently displayed page. * * @api * @method string getLabel() * @method string getPath() * @method string getTitle() * @method null|array getAttributes() * @method null|bool getCurrent() * @method \Magento\Framework\View\Element\Html\Link\Current setCurrent(bool $value) * @since 100.0.2 */ class Current extends Template { /** * Search redundant /index and / in url */ private const REGEX_INDEX_URL_PATTERN = '/(\/index|(\/))+($|\/$)/'; /** * Default path * * @var DefaultPathInterface */ protected $_defaultPath; /** * Constructor * * @param Context $context * @param DefaultPathInterface $defaultPath * @param array $data */ public function __construct( Context $context, DefaultPathInterface $defaultPath, array $data = [] ) { parent::__construct($context, $data); $this->_defaultPath = $defaultPath; } /** * Get href URL * * @return string */ public function getHref() { return $this->getUrl($this->getPath()); } /** * Get current mca * * @return string * @SuppressWarnings(PHPMD.RequestAwareBlockMethod) */ private function getMca() { $routeParts = [ (string)$this->_request->getModuleName(), (string)$this->_request->getControllerName(), (string)$this->_request->getActionName(), ]; $parts = []; $pathParts = explode('/', trim($this->_request->getPathInfo(), '/')); foreach ($routeParts as $key => $value) { if (isset($pathParts[$key]) && $pathParts[$key] === $value) { $parts[] = $value; } } return implode('/', $parts); } /** * Check if link leads to URL equivalent to URL of currently displayed page * * @return bool */ public function isCurrent() { $urlByPath = preg_replace(self::REGEX_INDEX_URL_PATTERN, '', $this->getUrl($this->getPath())); return $this->getCurrent() || ($urlByPath == preg_replace(self::REGEX_INDEX_URL_PATTERN, '', $this->getUrl($this->getMca()))) || $this->isCurrentCmsUrl($urlByPath); } /** * Get Current displayed page url * * @return string */ private function getCurrentUrl() { return $this->getUrl('*/*/*', ['_current' => false, '_use_rewrite' => true]); } /** * Check if link URL equivalent to URL of currently displayed CMS page * * @param string $urlByPath * @return bool */ private function isCurrentCmsUrl($urlByPath) { return ($urlByPath == preg_replace(self::REGEX_INDEX_URL_PATTERN, '', $this->getCurrentUrl())); } /** * Render block HTML * * @return string */ protected function _toHtml() { if (false != $this->getTemplate()) { return parent::_toHtml(); } $highlight = ''; if ($this->getIsHighlighted()) { $highlight = ' current'; } if ($this->isCurrent()) { $html = '<li class="nav item current">'; $html .= '<strong>' . $this->escapeHtml(__($this->getLabel())) . '</strong>'; $html .= '</li>'; } else { $html = '<li class="nav item' . $highlight . '"><a href="' . $this->escapeHtml($this->getHref()) . '"'; $html .= $this->getTitle() ? ' title="' . $this->escapeHtml(__($this->getTitle())) . '"' : ''; $html .= $this->getAttributesHtml() . '>'; if ($this->getIsHighlighted()) { $html .= '<strong>'; } $html .= $this->escapeHtml(__($this->getLabel())); if ($this->getIsHighlighted()) { $html .= '</strong>'; } $html .= '</a></li>'; } return $html; } /** * Generate attributes' HTML code * * @return string */ private function getAttributesHtml() { $attributesHtml = ''; $attributes = $this->getAttributes(); if ($attributes) { foreach ($attributes as $attribute => $value) { $attributesHtml .= ' ' . $attribute . '="' . $this->escapeHtml($value) . '"'; } } return $attributesHtml; } }