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 assignConditions(array $productStream, Criteria $criteria) { $serializedConditions = json_decode($productStream['conditions'], true); $conditions = $this->unserialize($serializedConditions); /** @var ConditionInterface $conditions */ foreach ($conditions as $condition) { $criteria->addBaseCondition($condition); } }
/** * @param Criteria $criteria */ private function addIsAvailableCondition(Criteria $criteria) { if (!$this->config->get('hideNoInstock')) { return; } $criteria->addBaseCondition(new IsAvailableCondition()); }
/** * @param Criteria $criteria * @param Category $category * @param $conditions * @param ProductContext $context */ protected function addCategoryBaseCondition(Criteria $criteria, Category $category, $conditions, ProductContext $context) { if ($category) { $criteria->addBaseCondition(new CategoryCondition(array($category->getId()))); } }