/** * {@inheritdoc} */ public function postFilter($url, Context $context) { $params = $context->getParams(); if ($this->isFullPath($params)) { $secure = $this->isSecure($context, $params); $url = ($secure ? 'https://' : 'http://') . ($secure ? $context->getSecureHost() : $context->getHost()) . ($secure ? $context->getSecureBaseUrl() : $context->getBaseUrl()) . '/' . $url; } //@todo make session postfilter if (!empty($params['appendSession'])) { $url .= strpos($url, '?') === false ? '?' : '&'; $url .= session_name() . '=' . session_id(); $url .= '&__shop=' . $context->getShopId(); } return $url; }
/** * {@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; }