/**
  * @inheritdoc
  */
 public function handleRequest(Request $request, Criteria $criteria, ShopContextInterface $context)
 {
     if ($request->has('esd')) {
         $criteria->addCondition(new EsdCondition());
     }
     if ($request->get('sSort') == 'random') {
         $criteria->addSorting(new RandomSorting());
     }
     $criteria->addFacet(new EsdFacet());
 }
 /**
  * @inheritdoc
  */
 public function handleRequest(Request $request, Criteria $criteria, ShopContextInterface $context)
 {
     /*
      * Checks if the filter is active
      */
     if ($request->has('productAttributesForm')) {
         $params = $request->getParams();
         $searchParams = explode('|', $params['productAttributesForm']);
         $criteria->addCondition(new ProductAttributeCondition('attr1', ProductAttributeCondition::OPERATOR_IN, $searchParams));
     }
     /**
      * adds the attributes facet
      */
     $criteria->addFacet(new ProductAttributeFacet('attr1', ProductAttributeFacet::MODE_VALUE_LIST_RESULT, 'productAttributesForm', 'attributes'));
 }
 /**
  * @param Request $request
  * @param Criteria $criteria
  */
 private function addManufacturerCondition(Request $request, Criteria $criteria)
 {
     if (!$request->has('sSupplier')) {
         return;
     }
     $manufacturers = explode('|', $request->getParam('sSupplier'));
     if (!empty($manufacturers)) {
         $criteria->addCondition(new ManufacturerCondition($manufacturers));
     }
 }
 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;
 }