/** * Detects if the current request represents a request for the backend's homepage * * @return bool */ private function isBackendHomepage() { if ($this->request->getParam('controller', 'index') != 'index') { return false; } if ($this->request->getParam('action', 'index') != 'index') { return false; } if ($this->request->getParam('module', 'backend') != 'backend') { return false; } $basePath = $this->request->getBasePath(); $uri = $this->request->getRequestUri(); return str_replace($basePath, '', $uri) === '/backend/'; }
/** * Refresh current users * * @param \Enlight_Controller_Request_Request $request */ public function refreshCurrentUsers($request) { $sql = ' INSERT INTO s_statistics_currentusers (remoteaddr, page, `time`, userID, deviceType) VALUES (?, ?, NOW(), ?, ?)'; Shopware()->Db()->query($sql, array($request->getClientIp(false), $request->getParam('requestPage', $request->getRequestUri()), empty(Shopware()->Session()->sUserId) ? 0 : (int) Shopware()->Session()->sUserId, $request->getDeviceType())); }
/** * @param Request $request * @param Shop $shop * @return null|string */ private function createPathInfo(Request $request, Shop $shop) { $requestUri = $request->getRequestUri(); if ($requestUri === null) { return null; } // Remove the query string from REQUEST_URI if ($pos = strpos($requestUri, '?')) { $requestUri = substr($requestUri, 0, $pos); } $repository = Shopware()->Models()->getRepository('Shopware\\Models\\Shop\\Shop'); $requestShop = $repository->getActiveByRequest($request); if ($requestShop && $requestShop->getId() !== $shop->getId()) { $requestUri = $this->removeShopBaseUrl($requestUri, $request, $requestShop); } $requestUri = $this->removeShopBaseUrl($requestUri, $request, $shop); if (!$shop->getMain()) { return $requestUri; } return $this->removeShopBaseUrl($requestUri, $request, $shop->getMain()); }
/** * @param \Enlight_Controller_Request_Request $request * @return \Shopware\Models\Shop\Shop */ public function getActiveByRequest($request) { /** @var $shop \Shopware\Models\Shop\Shop */ $shop = null; $host = $request->getHttpHost(); if (empty($host)) { return $shop; } $requestPath = $request->getRequestUri(); $builder = $this->getActiveQueryBuilder(); $builder->andWhere("shop.host=:host OR (shop.host IS NULL AND main.host=:host)"); if ($request->isSecure()) { $builder->orWhere("shop.secureHost=:host OR (shop.secureHost IS NULL AND main.secureHost=:host)"); } $builder->setParameter('host', $host); /** @var $shops \Shopware\Models\Shop\Shop[] */ $shops = $builder->getQuery()->getResult(); foreach ($shops as $currentShop) { $this->fixActive($currentShop); } //returns the right shop depending on the url $shop = $this->getShopByRequest($shops, $requestPath); if ($shop !== null) { return $shop; } $builder = $this->getActiveQueryBuilder(); $builder->andWhere('shop.hosts LIKE :host1 OR shop.hosts LIKE :host2 OR shop.hosts LIKE :host3')->setParameter('host1', "%\n" . $host . "\n%")->setParameter('host2', $host . "\n%")->setParameter('host3', "%\n" . $host); $shop = $builder->getQuery()->getOneOrNullResult(); if ($shop !== null) { $this->fixActive($shop); } return $shop; }