public function runQuery(ProductSearchContext $context, ProductSearchQuery $query) { $products = $this->getProductsOrCount($context, $query, 'products'); $count = $this->getProductsOrCount($context, $query, 'count'); $result = new ProductSearchResult(); $result->setProducts($products)->setTotalProductsCount($count); $result->setAvailableSortOrders($this->sortOrderFactory->getDefaultSortOrders()); return $result; }
public function runQuery(ProductSearchContext $context, ProductSearchQuery $query) { if (!($products = $this->getProductsOrCount($context, $query, 'products'))) { $products = array(); } $count = $this->getProductsOrCount($context, $query, 'count'); $result = new ProductSearchResult(); $result->setProducts($products)->setTotalProductsCount($count); $result->setAvailableSortOrders(array((new SortOrder('product', 'date_add', 'desc'))->setLabel($this->translator->trans('Date added, newest to oldest', array(), 'Shop.Theme.Catalog')), (new SortOrder('product', 'date_add', 'asc'))->setLabel($this->translator->trans('Date added, oldest to newest', array(), 'Shop.Theme.Catalog')), (new SortOrder('product', 'name', 'asc'))->setLabel($this->translator->trans('Name, A to Z', array(), 'Shop.Theme.Catalog')), (new SortOrder('product', 'name', 'desc'))->setLabel($this->translator->trans('Name, Z to A', array(), 'Shop.Theme.Catalog')), (new SortOrder('product', 'price', 'asc'))->setLabel($this->translator->trans('Price, low to high', array(), 'Shop.Theme.Catalog')), (new SortOrder('product', 'price', 'desc'))->setLabel($this->translator->trans('Price, high to low', array(), 'Shop.Theme.Catalog')))); return $result; }
public function runQuery(ProductSearchContext $context, ProductSearchQuery $query) { if (!($products = ProductSale::getBestSales($context->getIdLang(), $query->getPage(), $query->getResultsPerPage(), $query->getSortOrder()->toLegacyOrderBy(), $query->getSortOrder()->toLegacyOrderWay()))) { $products = array(); } $count = (int) ProductSale::getNbSales(); $result = new ProductSearchResult(); $result->setProducts($products)->setTotalProductsCount($count); $result->setAvailableSortOrders(array((new SortOrder('product', 'name', 'asc'))->setLabel($this->translator->trans('Name, A to Z', array(), 'Shop.Theme.Catalog')), (new SortOrder('product', 'name', 'desc'))->setLabel($this->translator->trans('Name, Z to A', array(), 'Shop.Theme.Catalog')), (new SortOrder('product', 'price', 'asc'))->setLabel($this->translator->trans('Price, low to high', array(), 'Shop.Theme.Catalog')), (new SortOrder('product', 'price', 'desc'))->setLabel($this->translator->trans('Price, high to low', array(), 'Shop.Theme.Catalog')))); return $result; }
public function runQuery(ProductSearchContext $context, ProductSearchQuery $query) { $products = []; $count = 0; if ($string = $query->getSearchString()) { $result = Search::find($context->getIdLang(), Tools::replaceAccentedChars(urldecode($string)), $query->getPage(), $query->getResultsPerPage(), $query->getSortOrder()->toLegacyOrderBy(), $query->getSortOrder()->toLegacyOrderWay(), false, false, null); $products = $result['result']; $count = $result['total']; } elseif ($tag = $query->getSearchTag()) { $products = Search::searchTag($context->getIdLang(), urldecode($tag), false, $query->getPage(), $query->getResultsPerPage(), $query->getSortOrder()->toLegacyOrderBy(true), $query->getSortOrder()->toLegacyOrderWay(), false, null); $count = Search::searchTag($context->getIdLang(), urldecode($tag), true, $query->getPage(), $query->getResultsPerPage(), $query->getSortOrder()->toLegacyOrderBy(true), $query->getSortOrder()->toLegacyOrderWay(), false, null); } $result = new ProductSearchResult(); $result->setProducts($products)->setTotalProductsCount($count); $result->setAvailableSortOrders($this->sortOrderFactory->getDefaultSortOrders()); return $result; }
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; }