public function collect(\Enlight_Controller_Action $controller)
 {
     $error = $controller->Request()->getParam('error_handler');
     if ($error && isset($error->exception)) {
         return ['exception' => $error->exception];
     }
     return [];
 }
示例#2
0
 /**
  * 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()];
 }
示例#4
0
 /**
  * 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;
 }
示例#5
0
    /**
     * @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 . '" />';
    }