public function collect(\Enlight_Controller_Action $controller) { $error = $controller->Request()->getParam('error_handler'); if ($error && isset($error->exception)) { return ['exception' => $error->exception]; } return []; }
/** * This pre-dispatch event-hook checks backend permissions * * @param \Enlight_Event_EventArgs $args * @throws Enlight_Controller_Exception * @return void */ public function onPreDispatchBackend(Enlight_Event_EventArgs $args) { $this->action = $args->getSubject(); $this->request = $this->action->Request(); $this->aclResource = strtolower($this->request->getControllerName()); if ($this->request->getModuleName() != 'backend' || in_array($this->aclResource, array('error'))) { return; } if ($this->shouldAuth()) { if ($this->checkAuth() === null) { if ($this->request->isXmlHttpRequest()) { throw new Enlight_Controller_Exception('Unauthorized', 401); } else { $this->action->redirect('backend/'); } } } else { $this->initLocale(); } }
public function collect(\Enlight_Controller_Action $controller) { return ['response' => ['httpResponse' => $controller->Response()->getHttpResponseCode(), 'headers' => $controller->Response()->getHeaders()], 'request' => ['moduleName' => $controller->Request()->getModuleName(), 'controllerName' => $controller->Request()->getControllerName(), 'actionName' => $controller->Request()->getActionName(), 'httpMethod' => $controller->Request()->getMethod(), 'params' => $controller->Request()->getParams(), 'get' => $controller->Request()->getQuery(), 'post' => $controller->Request()->getPost(), 'cookies' => $controller->Request()->getCookie(), 'uri' => $controller->Request()->getRequestUri(), 'url' => ($controller->Request()->isSecure() ? 'https' : 'http') . '://' . Shopware()->Shop()->getHost() . Shopware()->Shop()->getBaseUrl() . $controller->Request()->getRequestUri(), 'ip' => $controller->Request()->getClientIp(), 'time' => time()], 'session' => ['meta' => Shopware()->Db()->fetchRow('SELECT expiry,modified FROM s_core_sessions WHERE id = ?', [Shopware()->Session()->get('sessionId')]), 'data' => $_SESSION['Shopware']], 'logs' => $this->getLogs(), 'server' => $_SERVER, 'startTime' => STARTTIME, 'bundles' => $this->getBundles()]; }
/** * Returns an array of affected cacheids for this $controller * * @param \Enlight_Controller_Action $controller * @return array */ protected function getCacheIdsFromController(\Enlight_Controller_Action $controller) { $request = $controller->Request(); $view = $controller->View(); $controllerName = $this->buildControllerName($request); $cacheIds = array(); $articleIds = array(); switch ($controllerName) { case 'frontend/blog': $categoryId = (int) $request->getParam('sCategory'); $cacheIds[] = 'c' . $categoryId; $blogPost = $view->getAssign('sArticle'); foreach ($blogPost['assignedArticles'] as $article) { $articleIds[] = $article['id']; } break; case 'widgets/listing': $categoryId = (int) $request->getParam('sCategory'); if (empty($categoryId)) { $categoryId = (int) Shopware()->Shop()->get('parentID'); } $cacheIds[] = 'c' . $categoryId; foreach ($view->getAssign('sArticles') as $article) { $articleIds[] = $article['articleID']; } foreach ($view->getAssign('sCharts') as $article) { $articleIds[] = $article['articleID']; } break; case 'frontend/index': $categoryId = (int) Shopware()->Shop()->get('parentID'); $cacheIds[] = 'c' . $categoryId; break; case 'widgets/recommendation': $article = $view->getAssign('sArticle'); foreach ($article['sRelatedArticles'] as $article) { $articleIds[] = $article['articleID']; } foreach ($article['sSimilarArticles'] as $article) { $articleIds[] = $article['articleID']; } break; case 'frontend/detail': $articleId = $request->getParam('sArticle', 0); $articleIds[] = $articleId; break; case 'widgets/emotion': foreach ($view->getAssign('sEmotions') as $emotion) { $cacheIds[] = 'e' . $emotion['id']; foreach ($emotion['elements'] as $element) { if ($element['component']['name'] == 'Artikel') { $articleIds[] = $element['data']['articleID']; $articleIds[] = $element['data']['articleDetailsID']; } elseif ($element['component']['name'] == 'Artikel-Slider') { foreach ($element['data']['values'] as $value) { $articleIds[] = $value['articleID']; $articleIds[] = $value['articleDetailsID']; } } elseif ($element['component']['name'] == 'Sideview-Element') { foreach ($element['data']['product_data'] as $value) { $articleIds[] = $value['articleID']; } } } } break; case 'frontend/listing': foreach ($view->getAssign('sArticles') as $article) { $articleIds[] = $article['articleID']; } break; } array_walk($articleIds, function (&$value) { $value = 'a' . $value; }); $cacheIds = array_merge($cacheIds, $articleIds); return $cacheIds; }
/** * @param array $params * @return string */ public function renderEsiTag($params) { $request = $this->action->Request(); if (isset($params['params'])) { $params = array_merge((array)$params['params'], $params); unset($params['params']); } if (!isset($params['module'])) { $params['module'] = $request->getModuleName(); if (!isset($params['controller'])) { $params['controller'] = $request->getControllerName(); } } $targetName = $params['module'] . '/' . $params['controller']; $controllerName = $request->getModuleName() . '/' . $request->getControllerName(); if (isset($this->autoNoCacheControllers[$controllerName]) && isset($this->allowNoCacheControllers[$targetName]) && $this->autoNoCacheControllers[$controllerName] == $this->allowNoCacheControllers[$targetName] ) { $params['nocache'] = 1; } $url = sprintf('%s://%s%s/?%s', $request->getScheme(), $request->getHttpHost(), $request->getBaseUrl(), http_build_query($params, null, '&') ); return '<esi:include src="' . $url . '" />'; }