Example #1
0
 public function testConditionOverwrite()
 {
     $criteria = new Criteria();
     $criteria->addCondition(new CategoryCondition(array(1)));
     $condition = new CategoryCondition(array(3));
     $criteria->addCondition($condition);
     $this->assertCount(1, $criteria->getConditions());
     $condition = $criteria->getCondition($condition->getName());
     $this->assertInstanceOf('Shopware\\Bundle\\SearchBundle\\Condition\\CategoryCondition', $condition);
     $this->assertEquals(array(3), $condition->getCategoryIds());
 }
Example #2
0
 public function loadPreviewAction()
 {
     $conditions = $this->Request()->getParam('conditions');
     $conditions = json_decode($conditions, true);
     $sorting = $this->Request()->getParam('sort');
     $criteria = new Criteria();
     /** @var RepositoryInterface $streamRepo */
     $streamRepo = $this->get('shopware_product_stream.repository');
     $sorting = $streamRepo->unserialize($sorting);
     foreach ($sorting as $sort) {
         $criteria->addSorting($sort);
     }
     $conditions = $streamRepo->unserialize($conditions);
     foreach ($conditions as $condition) {
         $criteria->addCondition($condition);
     }
     $criteria->offset($this->Request()->getParam('start', 0));
     $criteria->limit($this->Request()->getParam('limit', 20));
     $context = $this->createContext($this->Request()->getParam('shopId'), $this->Request()->getParam('currencyId'), $this->Request()->getParam('customerGroupKey'));
     $criteria->addBaseCondition(new CustomerGroupCondition([$context->getCurrentCustomerGroup()->getId()]));
     $category = $context->getShop()->getCategory()->getId();
     $criteria->addBaseCondition(new CategoryCondition([$category]));
     $result = Shopware()->Container()->get('shopware_search.product_search')->search($criteria, $context);
     $products = array_values($result->getProducts());
     $this->View()->assign(['success' => true, 'data' => $products, 'total' => $result->getTotalCount()]);
 }
Example #3
0
 /**
  * @param array $productStream
  * @param Criteria $criteria
  */
 private function prepareSelectionStream(array $productStream, Criteria $criteria)
 {
     $ordernumbers = $this->getOrdernumbers($productStream['id']);
     $criteria->addCondition(new OrdernumberCondition($ordernumbers));
     $sortings = $criteria->getSortings();
     if (empty($sortings)) {
         $this->assignSortings($productStream, $criteria);
     }
 }
 /**
  * @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());
 }
 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)
 {
     $criteria->addFacet(new ProductVariantFacet());
     if (!$this->requestAdapater->hasVariantIds()) {
         return;
     }
     if (!$this->requestAdapater->isMultiDimensional()) {
         return;
     }
     $selectedOptions = $this->requestAdapater->getRequestedVariantIds();
     if (!$selectedOptions) {
         return;
     }
     $criteria->addCondition(new ProductVariantCondition($selectedOptions));
 }
 /**
  * @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 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);
     }
 }
 /**
  * @param Request $request
  * @param Criteria $criteria
  */
 private function addPriceCondition(Request $request, Criteria $criteria)
 {
     $min = $request->getParam('priceMin', null);
     $max = $request->getParam('priceMax', null);
     if (!$min && !$max) {
         return;
     }
     $condition = new PriceCondition((double) $min, (double) $max);
     $criteria->addCondition($condition);
 }
Example #10
0
 /**
  * @param Criteria $criteria
  * @param ConditionInterface[] $conditions
  */
 protected function addConditions(Criteria $criteria, $conditions)
 {
     foreach ($conditions as $condition) {
         $criteria->addCondition($condition);
     }
 }