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);
     }
 }
Example #4
0
 /**
  * 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;
 }
Example #5
0
    /**
     * 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;
 }
Example #8
0
 /**
  * @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());
 }
Example #9
0
    /**
     *
     */
    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));
        }
    }