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()); }
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()]); }
/** * @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); }
/** * @param Criteria $criteria * @param ConditionInterface[] $conditions */ protected function addConditions(Criteria $criteria, $conditions) { foreach ($conditions as $condition) { $criteria->addCondition($condition); } }