示例#1
0
 /**
  * {@inheritdoc}
  */
 public function preFilter($params, Context $context = null)
 {
     // add support for "shopware.php?sViewport,cat&sCategory=3"
     if (is_string($params)) {
         $params = parse_url($params, PHP_URL_QUERY);
         $params = str_replace(',', '=', $params);
         parse_str($params, $params);
     }
     $globalParams = $context->getGlobalParams();
     if (isset($params['sViewport'])) {
         $params['controller'] = $params['sViewport'];
     }
     if (isset($params['sAction'])) {
         $params['action'] = $params['sAction'];
     }
     unset($params['title'], $params['sViewport'], $params['sAction']);
     if (isset($params['controller']) || isset($params['module'])) {
         if (isset($params['module'])) {
             unset($globalParams['controller']);
         }
         unset($globalParams['controller'], $globalParams['action']);
     }
     /** @see \sArticles::buildNavigation */
     if (isset($params['sDetails'])) {
         $params['sArticle'] = $params['sDetails'];
         unset($params['sDetails']);
     }
     /** @see \Shopware_Controllers_Backend_Customer::performOrderAction */
     if (!isset($params['controller']) && isset($params['action']) && $params['action'] == 'performOrderRedirect') {
         $params['module'] = 'backend';
         $params['controller'] = 'customer';
     }
     /** @see \Shopware_Controllers_Widgets_Emotion */
     if (!isset($params['module']) && isset($globalParams['module']) && $globalParams['module'] == 'widgets') {
         $params['module'] = 'frontend';
     }
     $params = array_merge($globalParams, $params);
     $context->setParams($params);
     return $params;
 }
示例#2
0
 /**
  * @param   ZendRequest|EnlightRequest $request
  * @deprecated Use self::match()
  * @return  ZendRequest
  */
 public function route(ZendRequest $request)
 {
     if ($request instanceof EnlightRequest || $request instanceof RequestTestCase) {
         /** For enlight routing  */
         $this->context->updateFromEnlightRequest($request);
     }
     $params = $this->match($request->getPathInfo(), $this->context);
     if ($params !== false) {
         if ($request instanceof EnlightRequest || $request instanceof RequestTestCase) {
             /** For shopware routing (query === userParams)  */
             $request->setQuery($params);
         } else {
             $request->setParams($params);
         }
     }
     if ($request instanceof EnlightRequest || $request instanceof RequestTestCase) {
         /** For enlight routing  */
         $this->context->updateFromEnlightRequest($request);
     }
     $this->context->setParams([]);
     return $request;
 }
示例#3
0
 /**
  * {@inheritdoc}
  */
 public function match($pathInfo, Context $context)
 {
     if (strpos($pathInfo, '/backend/') === 0 || strpos($pathInfo, '/api/') === 0) {
         return $pathInfo;
     }
     if ($context->getShopId() === null) {
         // only frontend
         return $pathInfo;
     }
     // Rewrites queries
     $params = $context->getParams();
     $params = $this->queryAliasMapper->replaceShortParams($params);
     /* templates/_emotion/frontend/_resources/javascript/jquery.shopware.js */
     if (isset($params['sAction'])) {
         $params['action'] = $params['sAction'];
     }
     if (isset($params['sViewport'])) {
         $params['controller'] = $params['sViewport'];
     }
     $context->setParams($params);
     // /widgets and /index supports short request queries
     if ($pathInfo === '/' || strpos($pathInfo, '/widgets/') === 0) {
         return $pathInfo;
     }
     $pathInfo = ltrim($pathInfo, '/');
     $statement = $this->getRouteStatement();
     $statement->bindValue(':shopId', $context->getShopId(), \PDO::PARAM_INT);
     $statement->bindValue(':pathInfo', $pathInfo, \PDO::PARAM_STR);
     if ($statement->execute() && $statement->rowCount() > 0) {
         $route = $statement->fetch(\PDO::FETCH_ASSOC);
         $query = $this->getQueryFormOrgPath($route['orgPath']);
         if (empty($route['main']) || $route['shopId'] != $context->getShopId()) {
             $query['rewriteAlias'] = true;
         } else {
             $query['rewriteUrl'] = true;
         }
         return $query;
     }
     return $pathInfo;
 }