public function handleRequest(Request $request, Criteria $criteria, ShopContextInterface $context) { $minSales = $request->getParam('minSales', null); $maxSales = $request->getParam('maxSales', null); if ($minSales || $maxSales) { $criteria->addCondition(new SalesCondition($minSales, $maxSales)); } $criteria->addFacet(new SalesFacet()); if ($request->getParams('sSort') == 'sales') { $criteria->resetSorting(); $criteria->addSorting(new SalesSorting()); } }
/** * @param Request $request * @param Criteria $criteria * @param ShopContextInterface $context */ public function handleRequest(Request $request, Criteria $criteria, ShopContextInterface $context) { $requestedCategoryId = $request->getParam('sCategory', $request->getParam('categoryId', false)); if (!$requestedCategoryId) { return; } $closestIdWithRules = $this->databaseAdapter->fetchClosestCategoryIdWithRule($requestedCategoryId); if (!$closestIdWithRules) { return; } $this->enabled = true; if ($request->sSort && $request->sSort != self::REQUEST_VALUE) { return; } $request->setParam('sSort', self::REQUEST_VALUE); $rules = $this->ruleHydrator->createRuleVos($this->databaseAdapter->fetchRawData($closestIdWithRules)); $criteria->resetSorting(); $criteria->addSorting(new DefaultSorting($rules)); }
/** * @param Request $request * @param Criteria $criteria */ private function addPropertyCondition(Request $request, Criteria $criteria) { $filters = $request->getParam('sFilterProperties', []); if (empty($filters)) { return; } $filters = explode('|', $filters); $filters = $this->getGroupedFilters($filters); if (empty($filters)) { return; } foreach ($filters as $filter) { $condition = new PropertyCondition($filter); $criteria->addCondition($condition); } }
/** * Secure cron actions according to system settings * * @param Enlight_Controller_Request_RequestHttp $request * @return bool If cron action is authorized */ public function authorizeCronAction($request) { // If called using CLI, always execute the cron tasks if (php_sapi_name() == 'cli') { return true; } // At least one of the security policies is enabled. // If at least one of them validates, cron tasks will be executed $cronSecureAllowedKey = Shopware()->Config()->get('cronSecureAllowedKey'); $cronSecureAllowedIp = Shopware()->Config()->get('cronSecureAllowedIp'); $cronSecureByAccount = Shopware()->Config()->get('cronSecureByAccount'); // No security policy specified, accept all requests if (empty($cronSecureAllowedKey) && empty($cronSecureAllowedIp) && !$cronSecureByAccount) { return true; } // Validate key if (!empty($cronSecureAllowedKey)) { $urlKey = $request->getParam('key'); if (strcmp($cronSecureAllowedKey, $urlKey) == 0) { return true; } } // Validate ip if (!empty($cronSecureAllowedIp)) { $requestIp = $request->getServer('REMOTE_ADDR'); if (in_array($requestIp, explode(';', $cronSecureAllowedIp))) { return true; } } // Validate user auth if ($cronSecureByAccount) { if (Shopware()->Auth()->hasIdentity() === true) { return true; } } return false; }
/** * Refresh partner log * * @param \Enlight_Controller_Request_RequestHttp $request * @param \Enlight_Controller_Response_ResponseHttp $response */ public function refreshPartner($request, $response) { $partner = $request->getParam('partner', $request->getParam('sPartner')); if ($partner !== null) { if (strpos($partner, 'sCampaign') === 0) { $campaignID = (int) str_replace('sCampaign', '', $partner); if (!empty($campaignID)) { Shopware()->Session()->sPartner = 'sCampaign' . $campaignID; $sql = ' UPDATE s_campaigns_mailings SET clicked = clicked + 1 WHERE id = ? '; Shopware()->Db()->query($sql, array($campaignID)); } } else { $sql = 'SELECT * FROM s_emarketing_partner WHERE active=1 AND idcode=?'; $row = Shopware()->Db()->fetchRow($sql, array($partner)); if (!empty($row)) { if ($row['cookielifetime']) { $valid = time() + $row['cookielifetime']; } else { $valid = 0; } $response->setCookie('partner', $row['idcode'], $valid, '/'); } Shopware()->Session()->sPartner = $partner; } } elseif ($request->getCookie('partner') !== null) { $sql = 'SELECT idcode FROM s_emarketing_partner WHERE active=1 AND idcode=?'; $partner = Shopware()->Db()->fetchOne($sql, array($request->getCookie('partner'))); if (empty($partner)) { unset(Shopware()->Session()->sPartner); } else { Shopware()->Session()->sPartner = $partner; } } }
/** * @param Request $request * @param Criteria $criteria */ private function addLimit(Request $request, Criteria $criteria) { $limit = $request->getParam('sPerPage', (int) $this->config->get('articlesPerPage')); $criteria->limit($limit); }
private function getSearchLinks(Request $request, Criteria $criteria) { $filters = array('sSort', 'sPerPage', 'sFilter_supplier', 'sFilter_category', 'sFilter_price', 'sFilter_propertygroup'); $activeFilters = array(); foreach ($filters as $filter) { if (!$request->has($filter) || !$request->getParam($filter)) { continue; } $activeFilters[$filter] = $request->getParam($filter); } $activeFilters['sSearch'] = $criteria->getCondition('search')->getTerm(); /**@var $searchTerm SearchTermCondition*/ $searchTerm = $criteria->getCondition('search'); $baseLink = $this->container->get('config')->get('baseFile') . '?sViewport=search&sSearch=' . urlencode($searchTerm->getTerm()); $withoutSort = $activeFilters; $withoutPerPage = $activeFilters; $withoutCategory = $activeFilters; $withoutSupplier = $activeFilters; $withoutPrice = $activeFilters; $withoutProperty = $activeFilters; unset($withoutSort['sSort']); unset($withoutPerPage['sPerPage']); unset($withoutCategory['sFilter_category']); unset($withoutSupplier['sFilter_supplier']); unset($withoutPrice['sFilter_price']); unset($withoutProperty['sFilter_propertygroup']); $links = array('sLink' => $baseLink, 'sSearch' => $this->container->get('router')->assemble(array('sViewport' => 'search')), 'sPage' => $baseLink . '&' . http_build_query($activeFilters, "", "&"), 'sSort' => $baseLink . '&' . http_build_query($withoutSort, "", "&"), 'sPerPage' => $baseLink . '&' . http_build_query($withoutPerPage, "", "&"), 'sFilter' => array('category' => $baseLink . '&' . http_build_query($withoutCategory, "", "&"), 'supplier' => $baseLink . '&' . http_build_query($withoutSupplier, "", "&"), 'price' => $baseLink . '&' . http_build_query($withoutPrice, "", "&"), 'property' => $baseLink . '&' . http_build_query($withoutProperty, "", "&"))); return $links; }
/** * @param Enlight_Controller_Request_RequestHttp $request */ protected function fixRequest($request) { $aliases = array('sViewport' => 'controller', 'sAction' => 'action'); foreach ($aliases as $key => $alias) { if (($value = $request->getParam($key)) !== null) { $request->setParam($alias, $value); $request->setAlias($key, $alias); } } $request->setQuery($request->getUserParams() + $request->getQuery()); }
/** * */ public function setCacheIdHeader() { $controllerName = $this->request->getModuleName() . '/' . $this->request->getControllerName(); $cacheIds = array(); switch ($controllerName) { case 'widgets/listing': $categoryId = (int)$this->request->getParam('sCategory'); if (empty($categoryId)) { $categoryId = (int)Shopware()->Shop()->get('parentID'); } $cacheIds[] = 'c-' . $categoryId; break; case 'frontend/index': $categoryId = (int)Shopware()->Shop()->get('parentID'); $cacheIds[] = 'c-' . $categoryId; break; case 'frontend/detail': case 'frontend/listing': $categoryId = $this->request->getParam('sCategory', 0); while ($categoryId > 1) { $category = Shopware()->Models()->find( 'Shopware\Models\Category\Category', $categoryId ); if ($category === null) { break; } $cacheIds[] = 'c-' . $category->getId(); $categoryId = $category->getParentId(); } break; } if (!empty($cacheIds)) { $this->response->setHeader('x-shopware-cache-id', implode(', ', $cacheIds)); } }