예제 #1
0
 public function runQuery(ProductSearchContext $context, ProductSearchQuery $query)
 {
     $result = new ProductSearchResult();
     $sql = $this->generateCountSQL($context, $query);
     $count = $this->db->getValue($sql);
     $result->setTotalProductsCount($count);
     $facets = $this->getUpdatedFacets($context, $query);
     $this->addNextEncodedFacetsToFilters($facets);
     $result->setFacetCollection((new FacetCollection())->setFacets($facets));
     $result->setEncodedFacets((new FacetsURLSerializer())->serialize($facets));
     $sql = $this->generateSelectSQL($context, $query);
     $products = $this->db->executeS($sql);
     $result->setProducts($products);
     return $result;
 }
 public function runQuery(ProductSearchContext $context, ProductSearchQuery $query)
 {
     $result = new ProductSearchResult();
     $menu = $this->getFacetCollectionFromEncodedFacets($query);
     $order_by = $query->getSortOrder()->toLegacyOrderBy(true);
     $order_way = $query->getSortOrder()->toLegacyOrderWay();
     $facetedSearchFilters = $this->filtersConverter->getFacetedSearchFiltersFromFacets($menu->getFacets());
     $productsAndCount = $this->module->getProductByFilters($query->getResultsPerPage(), $query->getPage(), $order_by, $order_way, $context->getIdLang(), $facetedSearchFilters);
     $result->setProducts($productsAndCount['products'])->setTotalProductsCount($productsAndCount['count'])->setAvailableSortOrders($this->getAvailableSortOrders());
     $filterBlock = $this->module->getFilterBlock($facetedSearchFilters);
     $facets = $this->filtersConverter->getFacetsFromFacetedSearchFilters($filterBlock['filters']);
     $this->copyFiltersActiveState($menu->getFacets(), $facets);
     $this->labelRangeFilters($facets);
     $this->addEncodedFacetsToFilters($facets);
     $this->hideZeroValues($facets);
     $this->hideUselessFacets($facets);
     $nextMenu = (new FacetCollection())->setFacets($facets);
     $result->setFacetCollection($nextMenu);
     $result->setEncodedFacets($this->facetsSerializer->serialize($facets));
     return $result;
 }