123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- <?php
- /**
- * Plugin for the template engine factory that makes a decision of whether to activate debugging hints or not
- *
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Developer\Model\TemplateEngine\Plugin;
- use Magento\Developer\Helper\Data as DevHelper;
- use Magento\Developer\Model\TemplateEngine\Decorator\DebugHintsFactory;
- use Magento\Framework\App\Config\ScopeConfigInterface;
- use Magento\Framework\View\TemplateEngineFactory;
- use Magento\Framework\View\TemplateEngineInterface;
- use Magento\Store\Model\ScopeInterface;
- use Magento\Store\Model\StoreManagerInterface;
- use Magento\Framework\App\Request\Http;
- class DebugHints
- {
- /**
- * XPath of configuration of the debug block names
- */
- const XML_PATH_DEBUG_TEMPLATE_HINTS_BLOCKS = 'dev/debug/template_hints_blocks';
- /**
- * @var ScopeConfigInterface
- */
- protected $scopeConfig;
- /**
- * @var StoreManagerInterface
- */
- protected $storeManager;
- /**
- * @var DevHelper
- */
- protected $devHelper;
- /**
- * @var DebugHintsFactory
- */
- protected $debugHintsFactory;
- /**
- * XPath of configuration of the debug hints
- *
- * Allowed values:
- * dev/debug/template_hints_storefront
- * dev/debug/template_hints_admin
- *
- * @var string
- */
- protected $debugHintsPath;
- /**
- * XPath of configuration of the debug hints show with parameter
- *
- * dev/debug/template_hints_storefront_show_with_parameter
- *
- * @var string
- */
- private $debugHintsWithParam;
- /**
- * XPath of configuration of the debug hints URL parameter
- *
- * dev/debug/template_hints_parameter_value
- *
- * @var string
- */
- private $debugHintsParameter;
- /**
- * @param ScopeConfigInterface $scopeConfig
- * @param StoreManagerInterface $storeManager
- * @param DevHelper $devHelper
- * @param DebugHintsFactory $debugHintsFactory
- * @param string $debugHintsPath
- * @param Http $http
- * @param string $debugHintsWithParam
- * @param string $debugHintsParameter
- */
- public function __construct(
- ScopeConfigInterface $scopeConfig,
- StoreManagerInterface $storeManager,
- DevHelper $devHelper,
- DebugHintsFactory $debugHintsFactory,
- $debugHintsPath,
- Http $http = null,
- $debugHintsWithParam = null,
- $debugHintsParameter = null
- ) {
- $this->scopeConfig = $scopeConfig;
- $this->storeManager = $storeManager;
- $this->devHelper = $devHelper;
- $this->debugHintsFactory = $debugHintsFactory;
- $this->debugHintsPath = $debugHintsPath;
- $this->http = $http ?: \Magento\Framework\App\ObjectManager::getInstance()->get(
- \Magento\Framework\App\Request\Http::class
- );
- $this->debugHintsWithParam = $debugHintsWithParam;
- $this->debugHintsParameter = $debugHintsParameter;
- }
- /**
- * Wrap template engine instance with the debugging hints decorator, depending of the store configuration
- *
- * @param TemplateEngineFactory $subject
- * @param TemplateEngineInterface $invocationResult
- *
- * @return TemplateEngineInterface
- * @SuppressWarnings(PHPMD.UnusedFormalParameter)
- */
- public function afterCreate(
- TemplateEngineFactory $subject,
- TemplateEngineInterface $invocationResult
- ) {
- $storeCode = $this->storeManager->getStore()->getCode();
- if ($this->scopeConfig->getValue($this->debugHintsPath, ScopeInterface::SCOPE_STORE, $storeCode)
- && $this->devHelper->isDevAllowed()) {
- $debugHintsWithParam = $this->scopeConfig->getValue(
- $this->debugHintsWithParam,
- ScopeInterface::SCOPE_STORE,
- $storeCode
- );
- $debugHintsParameter = $this->scopeConfig->getValue(
- $this->debugHintsParameter,
- ScopeInterface::SCOPE_STORE,
- $storeCode
- );
- $debugHintsParameterInUrl = $this->http->getParam('templatehints');
- $showHints = false;
- if (!$debugHintsWithParam) {
- $showHints = true;
- }
- if ($debugHintsWithParam && $debugHintsParameter == $debugHintsParameterInUrl) {
- $showHints = true;
- }
- if ($showHints) {
- $showBlockHints = $this->scopeConfig->getValue(
- self::XML_PATH_DEBUG_TEMPLATE_HINTS_BLOCKS,
- ScopeInterface::SCOPE_STORE,
- $storeCode
- );
- return $this->debugHintsFactory->create([
- 'subject' => $invocationResult,
- 'showBlockHints' => $showBlockHints,
- ]);
- }
- }
- return $invocationResult;
- }
- }
|