* @copyright 2007-2015 Leotheme * @license http://leotheme.com - prestashop template provider */ use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchProviderInterface; use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchContext; use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchQuery; use PrestaShop\PrestaShop\Core\Product\Search\ProductSearchResult; use PrestaShop\PrestaShop\Core\Product\Search\SortOrderFactory; use Symfony\Component\Translation\TranslatorInterface; // use Search; // use Tools; if (file_exists(_PS_MODULE_DIR_ . 'leoproductsearch/classes/ProductSearch.php')) { require_once(_PS_MODULE_DIR_ . 'leoproductsearch/classes/ProductSearch.php'); } // use ProductSearch\ProductSearch; // if (file_exists(_PS_MODULE_DIR_.'leoproductsearch/classes/ProductSearch.php')) { // require_once(_PS_MODULE_DIR_.'leoproductsearch/classes/ProductSearch.php'); // } class LeoSearchProductSearchProvider implements ProductSearchProviderInterface { private $translator; private $category; private $sortOrderFactory; public function __construct(TranslatorInterface $translator) { $this->translator = $translator; $this->sortOrderFactory = new SortOrderFactory($this->translator); } public function runQuery(ProductSearchContext $context, ProductSearchQuery $query) { $products = array(); $count = 0; if (($string = $query->getSearchString())) { // $class = new ProductSearch; // echo '
';
// print_r();die();
$queryString = Tools::replaceAccentedChars(urldecode($string));
$result = ProductSearch::find($context->getIdLang(), $queryString, $query->getPage(), $query->getResultsPerPage(), $query->getSortOrder()->toLegacyOrderBy(), $query->getSortOrder()->toLegacyOrderWay(), false, false, null, $query->getIdCategory());
$products = $result['result'];
$count = $result['total'];
Hook::exec('actionSearch', array(
'searched_query' => $queryString,
'total' => $count,
// deprecated since 1.7.x
'expr' => $queryString,
));
} elseif (($tag = $query->getSearchTag())) {
// $class = new ProductSearch;
$queryString = urldecode($tag);
$products = ProductSearch::searchTag($context->getIdLang(), $queryString, false, $query->getPage(), $query->getResultsPerPage(), $query->getSortOrder()->toLegacyOrderBy(true), $query->getSortOrder()->toLegacyOrderWay(), false, null);
$count = ProductSearch::searchTag($context->getIdLang(), $queryString, true, $query->getPage(), $query->getResultsPerPage(), $query->getSortOrder()->toLegacyOrderBy(true), $query->getSortOrder()->toLegacyOrderWay(), false, null);
Hook::exec('actionSearch', array(
'searched_query' => $queryString,
'total' => $count,
// deprecated since 1.7.x
'expr' => $queryString,
));
}
$result = new ProductSearchResult();
if (!empty($products)) {
$result
->setProducts($products)
->setTotalProductsCount($count);
$result->setAvailableSortOrders(
$this->sortOrderFactory->getDefaultSortOrders()
);
}
return $result;
}
}