/** * Call method around dispatch frontend action * * @param FrontControllerInterface $subject * @param \Closure $proceed * @param RequestInterface $request * @return $this * @SuppressWarnings(PHPMD.UnusedFormalParameter) * @SuppressWarnings(PHPMD) */ public function aroundDispatch(FrontControllerInterface $subject, \Closure $proceed, RequestInterface $request) { $startTime = microtime(true); if (isset($_SERVER['REQUEST_TIME_FLOAT'])) { $startTime = $_SERVER['REQUEST_TIME_FLOAT']; } /** @var \Magento\Framework\App\Request\Http $request */ if (strpos($request->getOriginalPathInfo(), 'searchautocomplete/ajax/suggest') !== false) { $this->result->init(); $proceed($request); #require for init translations $request->setControllerModule('Magento_CatalogSearch'); $request->setDispatched(true); $identifier = 'QUERY_' . $this->storeManager->getStore()->getId() . '_' . md5($request->getParam('q')); if ($result = $this->cache->load($identifier)) { $result = \Zend_Json::decode($result); $result['time'] = round(microtime(true) - $startTime, 4); $result['cache'] = true; $data = \Zend_Json::encode($result); } else { // mirasvit core event $this->eventManager->dispatch('core_register_urlrewrite'); $result = $this->result->toArray(); $result['success'] = true; $result['time'] = round(microtime(true) - $startTime, 4); $result['cache'] = false; $data = \Zend_Json::encode($result); $this->cache->save($data, $identifier, [\Magento\PageCache\Model\Cache\Type::CACHE_TAG]); } $this->response->setPublicHeaders(3600); return $this->response->representJson($data); } else { return $proceed($request); } }
/** * Match controller name * * @param \Magento\Framework\App\RequestInterface $request * @param string $param * @return string */ protected function matchActionPath(\Magento\Framework\App\RequestInterface $request, $param) { if ($request->getControllerName()) { $actionPath = $request->getControllerName(); } elseif (!empty($param)) { $actionPath = $param; } else { $actionPath = $this->_defaultPath->getPart('controller'); $request->setAlias(\Magento\Framework\Url::REWRITE_REQUEST_PATH_ALIAS, ltrim($request->getOriginalPathInfo(), '/')); } return $actionPath; }
/** * This method returns an indicator of whether or not the current request is for vde * * @param RequestInterface $request * @return bool */ public function isVdeRequest(RequestInterface $request = null) { $result = false; if (null !== $request) { $splitPath = explode('/', trim($request->getOriginalPathInfo(), '/')); if (count($splitPath) >= 3) { list($frontName, $currentMode, $themeId) = $splitPath; $result = $frontName === $this->_frontName && in_array($currentMode, [\Magento\DesignEditor\Model\State::MODE_NAVIGATION]) && is_numeric($themeId); } } return $result; }