/** * Init backend locales * * @param Zend_Auth $auth */ protected function initLocale($auth = null) { $bootstrap = $this->Application()->Bootstrap(); if($auth !== null) { $user = $auth->getIdentity(); /** @var $locale \Shopware\Models\Shop\Locale */ } $locale = null; if (isset($user->locale)) { $locale = $user->locale; } else { $default = $this->getDefaultLocale(); $locale = Shopware()->Models()->getRepository( 'Shopware\Models\Shop\Locale' )->find($default); } $bootstrap->getResource('Locale')->setLocale($locale->toString()); $bootstrap->getResource('Snippets')->setLocale($locale); $template = $bootstrap->getResource('Template'); $baseHash = $this->request->getScheme() . '://' . $this->request->getHttpHost() . $this->request->getBaseUrl() . '?' . Shopware::REVISION; $baseHash = substr(sha1($baseHash), 0 , 5); $template->setCompileId('backend_' . $locale->toString() . '_' . $baseHash); if (isset($user->role)) { $template->setCacheId($user->role->getName()); } if($this->action !== null && $this->action->View()->hasTemplate()) { $this->action->View()->Template()->setCompileId($template->getCompileId()); $this->action->View()->Template()->setCacheId($template->getCacheId()); } }
/** * Returns the symfony request context. * * @param Enlight_Controller_Request_RequestHttp $request * @return Symfony\Component\Routing\RequestContext */ protected function getRequestContext($request) { return new RequestContext('', $request->getMethod(), $request->getHttpHost(), $request->getScheme()); }
/** * @param Enlight_Controller_Request_RequestHttp $request * @param Enlight_Controller_Response_ResponseHttp $response */ protected function upgradeShop($request, $response) { $bootstrap = $this->Application()->Bootstrap(); $shop = $this->Application()->Shop(); $cookieKey = null; $cookieValue = null; switch (true) { case $request->getPost('sLanguage') !== null: $cookieKey = 'shop'; $cookieValue = $request->getPost('sLanguage'); break; case $request->getPost('sCurrency') !== null: $cookieKey = 'currency'; $cookieValue = $request->getPost('sCurrency'); break; case $request->getPost('__shop') !== null: $cookieKey = 'shop'; $cookieValue = $request->getPost('__shop'); break; case $request->getQuery('__shop') !== null: $cookieKey = 'shop'; $cookieValue = $request->getQuery('__shop'); break; case $request->getPost('__currency') !== null: $cookieKey = 'currency'; $cookieValue = $request->getPost('__currency'); break; case $request->getQuery('__template') !== null: $cookieKey = 'template'; $cookieValue = $request->getQuery('__template'); break; } // Redirect on shop change if ($cookieKey === 'shop') { /** @var $repository Shopware\Models\Shop\Repository */ $repository = Shopware()->Models()->getRepository('Shopware\\Models\\Shop\\Shop'); $newShop = $repository->getActiveById($cookieValue); if ($newShop !== null) { if ($newShop->getHost() !== null && $newShop->getHost() !== $shop->getHost() || $newShop->getBaseUrl() !== null && $newShop->getBaseUrl() !== $shop->getBaseUrl()) { $url = sprintf('%s://%s%s%s', $request::SCHEME_HTTP, $newShop->getHost(), $newShop->getBaseUrl(), '/'); $path = rtrim($newShop->getBasePath(), '/') . '/'; $response->setCookie($cookieKey, $cookieValue, 0, $path); $response->setRedirect($url); return; } } } // Refresh on shop change if ($cookieKey !== null && $cookieKey != 'template') { $path = rtrim($shop->getBasePath(), '/') . '/'; $response->setCookie($cookieKey, $cookieValue, 0, $path); if ($request->isPost() && $request->getQuery('__shop') === null) { $url = sprintf('%s://%s%s', $request->getScheme(), $request->getHttpHost(), $request->getRequestUri()); $response->setRedirect($url); return; } } // Upgrade currency if ($request->getCookie('currency') !== null) { $currencyValue = $request->getCookie('currency'); foreach ($shop->getCurrencies() as $currency) { if ($currencyValue == $currency->getId() || $currencyValue == $currency->getCurrency()) { $shop->setCurrency($currency); break; } } } // Start session in frontend controllers $session = Shopware()->Session(); if ($cookieKey !== null) { $session->{$cookieKey} = $cookieValue; } // Refresh basket on currency change if (isset($session->sBasketCurrency) && $shop->getCurrency()->getId() != $session->sBasketCurrency) { Shopware()->Modules()->Basket()->sRefreshBasket(); } // Upgrade template if (isset($session->template) && !empty($session->Admin)) { $repository = 'Shopware\\Models\\Shop\\Template'; $repository = Shopware()->Models()->getRepository($repository); $template = $session->template; $template = $repository->findOneBy(array('template' => $template)); if ($template !== null) { $shop->setTemplate($template); } else { unset($session->template); } } else { unset($session->template); } // Save upgrades $shop->registerResources($bootstrap); if ($request->isSecure()) { $template = $bootstrap->getResource('Template'); $template->setCompileId($template->getCompileId() . '_secure'); } }
/** * Returns the configured proxy-url. * * Fallbacks to autodetection if proxy-url is not configured and $request is given. * Returns null if $request is not given or autodetection fails. * * @param Enlight_Controller_Request_RequestHttp $request * @return string|null */ public function getProxyUrl(\Enlight_Controller_Request_RequestHttp $request = null) { $proxyUrl = trim($this->Config()->get('proxy')); if (!empty($proxyUrl)) { return $proxyUrl; } // if proxy url is not set fall back to host detection if ($request !== null && $request->getHttpHost()) { return $request->getScheme() . '://' . $request->getHttpHost() . $request->getBaseUrl() . '/'; } /** @var ModelManager $em */ $em = $this->get('models'); $repository = $em->getRepository('Shopware\\Models\\Shop\\Shop'); /** @var Shopware\Models\Shop\Shop $shop */ $shop = $repository->findOneBy(array('default' => true)); if (!$shop->getHost()) { return null; } $url = sprintf('%s://%s%s/', 'http', $shop->getHost(), $shop->getBasePath()); return $url; }
/** * */ protected function initConfig() { $controllers = $this->Config()->cacheControllers; if(!empty($controllers)) { $controllers = str_replace(array("\r\n", "\r"), "\n", $controllers); $controllers = explode("\n", trim($controllers)); $this->cacheControllers = array(); foreach($controllers as $controller) { list($controller, $cacheTime) = explode(" ", $controller); $this->cacheControllers[$controller] = $cacheTime; } } $controllers = $this->Config()->noCacheControllers; if(!empty($controllers)) { $controllers = str_replace(array("\r\n", "\r"), "\n", $controllers); $controllers = explode("\n", trim($controllers)); $this->allowNoCacheControllers = array(); foreach($controllers as $controller) { list($controller, $cacheTime) = explode(" ", $controller); $this->allowNoCacheControllers[$controller] = $cacheTime; } } $proxy = $this->Config()->proxy; if(!empty($proxy)) { $this->proxyUrl = $proxy; } if($this->proxyUrl === null) { if($this->request->getHttpHost()) { $this->proxyUrl = $this->request->getScheme() . '://' . $this->request->getHttpHost() . $this->request->getBaseUrl() . '/'; } } }