public static function getSearchsFromHook($hookName, $id_lang, $active = true, $ignore_include = false) { global $cookie; $include_categories = false; $include_cms = false; $include_supplier = false; $include_manufacturer = false; $include_product = false; $include_seo = false; $include_special_page = false; $curIdCategory = false; $curIdSearch = (int) Tools::getValue('id_search', false); if (!Tools::getValue('id_seo') && in_array($hookName, self::$_valid_hooks_cms)) { $include_cms = true; $curIdCms = (int) Tools::getValue('id_cms', false); } if (!Tools::getValue('id_seo') && in_array($hookName, self::$_valid_hooks_supplier)) { $include_supplier = true; $curIdSupplier = (int) Tools::getValue('id_supplier', false); } if (!Tools::getValue('id_seo') && in_array($hookName, self::$_valid_hooks_manufacturer)) { $include_manufacturer = true; $curIdManufacturer = (int) Tools::getValue('id_manufacturer', false); } if (!Tools::getValue('id_seo') && in_array($hookName, self::$_valid_hooks_product)) { $include_product = true; $curIdProduct = (int) Tools::getValue('id_product', false); } if (!Tools::getValue('id_seo') && in_array($hookName, self::$_valid_hooks_special_page)) { $include_special_page = true; $curSpecialPage = AdvancedSearchCoreClass::_getSmartyVarValue('page_name'); } if (!Tools::getValue('id_seo') && in_array($hookName, self::$_valid_hooks_category)) { $include_categories = true; if ($_SERVER['SCRIPT_NAME'] == __PS_BASE_URI__ . 'index.php' && (!Tools::getIsset('controller') || !Tools::getValue('controller') || Tools::getValue('controller') == 'index')) { $curIdCategory = version_compare(_PS_VERSION_, '1.5.0.0', '>=') ? Category::getRootCategory()->id : 1; } elseif (Tools::getIsset('id_category') && Tools::getValue('id_category')) { $curIdCategory = (int) Tools::getValue('id_category'); } } if (Tools::getValue('id_seo')) { $include_seo = true; } if ($hookName == -1) { $id_hook = -1; } else { $id_hook = AdvancedSearchCoreClass::_getHookIdByName($hookName); } $result = Db::getInstance()->ExecuteS('SELECT DISTINCT advs.*, advsl.*, advs.`id_search` FROM `' . _DB_PREFIX_ . 'pm_advancedsearch` advs ' . (version_compare(_PS_VERSION_, '1.5.0.0', '>=') ? AdvancedSearchCoreClass::addSqlAssociation('pm_advancedsearch', 'advs', 'id_search') : '') . ' LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_lang` advsl ON (advs.`id_search` = advsl.`id_search` AND advsl.`id_lang` = ' . (int) $id_lang . ' ) ' . ($curIdSearch ? '' : 'LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_cms` advsc ON (advs.`id_search` = advsc.`id_search`) LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_category` advsca ON (advs.`id_search` = advsca.`id_search`) LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_manufacturers` advsm ON (advs.`id_search` = advsm.`id_search`) LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_suppliers` advssu ON (advs.`id_search` = advssu.`id_search`) LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_products` advsp ON (advs.`id_search` = advsp.`id_search`) LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_special_pages` advssp ON (advs.`id_search` = advssp.`id_search`)') . ' ' . ($include_seo ? 'LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_seo` advss ON (advss.`id_search` = advs.`id_search`)' : '') . ' WHERE IF(( SELECT COUNT(advs.id_search) FROM `' . _DB_PREFIX_ . 'pm_advancedsearch` advs ' . ($curIdSearch ? '' : 'LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_cms` advsc ON (advs.`id_search` = advsc.`id_search`) LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_category` advsca ON (advs.`id_search` = advsca.`id_search`) LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_manufacturers` advsm ON (advs.`id_search` = advsm.`id_search`) LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_suppliers` advssu ON (advs.`id_search` = advssu.`id_search`) LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_products` advsp ON (advs.`id_search` = advsp.`id_search`) LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_special_pages` advssp ON (advs.`id_search` = advssp.`id_search`)') . ' ' . ($include_seo ? 'LEFT JOIN `' . _DB_PREFIX_ . 'pm_advancedsearch_seo` advss ON (advss.`id_search` = advs.`id_search`)' : '') . ' WHERE advs.`unique_search` = 1 ' . ($include_seo ? ' AND advss.`id_seo` = ' . (int) Tools::getValue('id_seo') : '') . ' ' . ($active ? 'AND advs.`active` = 1' : '') . ' ' . ($curIdSearch ? ' AND advs.`id_search` = ' . (int) $curIdSearch . '' : ($ignore_include ? '' : ' AND ( (' . ($include_categories && isset($curIdCategory) && $curIdCategory ? 'advsca.`id_category` = ' . intval($curIdCategory) . ' OR ' : '') . (!Tools::getValue('id_seo') ? '(ISNULL(advsca.`id_category`) AND ISNULL(advsc.`id_cms`) AND ISNULL(advssu.`id_supplier`) AND ISNULL(advsm.`id_manufacturer`) AND ISNULL(advsp.`id_product`) AND ISNULL(advssp.`page`))' : '1') . ') OR (' . ($include_cms && isset($curIdCms) && $curIdCms ? 'advsc.`id_cms` = ' . intval($curIdCms) . ' OR ' : '') . (!Tools::getValue('id_seo') ? '(ISNULL(advsca.`id_category`) AND ISNULL(advsc.`id_cms`) AND ISNULL(advssu.`id_supplier`) AND ISNULL(advsm.`id_manufacturer`) AND ISNULL(advsp.`id_product`) AND ISNULL(advssp.`page`))' : '1') . ') OR (' . ($include_supplier && isset($curIdSupplier) && $curIdSupplier ? 'advssu.`id_supplier` = ' . intval($curIdSupplier) . ' OR ' : '') . (!Tools::getValue('id_seo') ? '(ISNULL(advsca.`id_category`) AND ISNULL(advsc.`id_cms`) AND ISNULL(advssu.`id_supplier`) AND ISNULL(advsm.`id_manufacturer`) AND ISNULL(advsp.`id_product`) AND ISNULL(advssp.`page`))' : '1') . ') OR (' . ($include_manufacturer && isset($curIdManufacturer) && $curIdManufacturer ? 'advsm.`id_manufacturer` = ' . intval($curIdManufacturer) . ' OR ' : '') . (!Tools::getValue('id_seo') ? '(ISNULL(advsca.`id_category`) AND ISNULL(advsc.`id_cms`) AND ISNULL(advssu.`id_supplier`) AND ISNULL(advsm.`id_manufacturer`) AND ISNULL(advsp.`id_product`) AND ISNULL(advssp.`page`))' : '1') . ') OR (' . ($include_product && isset($curIdProduct) && $curIdProduct ? 'advsp.`id_product` = ' . intval($curIdProduct) . ' OR ' : '') . (!Tools::getValue('id_seo') ? '(ISNULL(advsca.`id_category`) AND ISNULL(advsc.`id_cms`) AND ISNULL(advssu.`id_supplier`) AND ISNULL(advsm.`id_manufacturer`) AND ISNULL(advsp.`id_product`) AND ISNULL(advssp.`page`))' : '1') . ') OR (' . ($include_special_page && isset($curSpecialPage) && $curSpecialPage ? 'advssp.`page` = "' . pSQL($curSpecialPage) . '" OR ' : '') . (!Tools::getValue('id_seo') ? '(ISNULL(advsca.`id_category`) AND ISNULL(advsc.`id_cms`) AND ISNULL(advssu.`id_supplier`) AND ISNULL(advsm.`id_manufacturer`) AND ISNULL(advsp.`id_product`) AND ISNULL(advssp.`page`))' : '1') . ') )')) . ' LIMIT 1 ) >= 1, advs.`unique_search`, 1) = 1 AND advs.`id_hook` = ' . intval($id_hook) . ' ' . ($include_seo ? ' AND advss.`id_seo` = ' . (int) Tools::getValue('id_seo') : '') . ' ' . ($active ? 'AND advs.`active` = 1' : '') . ' ' . ($curIdSearch ? ' AND advs.`id_search` = ' . (int) $curIdSearch . ' ' : ($ignore_include ? '' : ' AND ( (' . ($include_categories && $curIdCategory ? 'advsca.`id_category` = ' . intval($curIdCategory) . ' OR ' : '') . (!Tools::getValue('id_seo') ? '(ISNULL(advsca.`id_category`) AND ISNULL(advsc.`id_cms`) AND ISNULL(advssu.`id_supplier`) AND ISNULL(advsm.`id_manufacturer`) AND ISNULL(advsp.`id_product`) AND ISNULL(advssp.`page`))' : '1') . ') OR (' . ($include_cms && $curIdCms ? 'advsc.`id_cms` = ' . intval($curIdCms) . ' OR ' : '') . (!Tools::getValue('id_seo') ? '(ISNULL(advsca.`id_category`) AND ISNULL(advsc.`id_cms`) AND ISNULL(advssu.`id_supplier`) AND ISNULL(advsm.`id_manufacturer`) AND ISNULL(advsp.`id_product`) AND ISNULL(advssp.`page`))' : '1') . ') OR (' . ($include_supplier && $curIdSupplier ? 'advssu.`id_supplier` = ' . intval($curIdSupplier) . ' OR ' : '') . (!Tools::getValue('id_seo') ? '(ISNULL(advsca.`id_category`) AND ISNULL(advsc.`id_cms`) AND ISNULL(advssu.`id_supplier`) AND ISNULL(advsm.`id_manufacturer`) AND ISNULL(advsp.`id_product`) AND ISNULL(advssp.`page`))' : '1') . ') OR (' . ($include_manufacturer && $curIdManufacturer ? 'advsm.`id_manufacturer` = ' . intval($curIdManufacturer) . ' OR ' : '') . (!Tools::getValue('id_seo') ? '(ISNULL(advsca.`id_category`) AND ISNULL(advsc.`id_cms`) AND ISNULL(advssu.`id_supplier`) AND ISNULL(advsm.`id_manufacturer`) AND ISNULL(advsp.`id_product`) AND ISNULL(advssp.`page`))' : '1') . ') OR (' . ($include_product && $curIdProduct ? 'advsp.`id_product` = ' . intval($curIdProduct) . ' OR ' : '') . (!Tools::getValue('id_seo') ? '(ISNULL(advsca.`id_category`) AND ISNULL(advsc.`id_cms`) AND ISNULL(advssu.`id_supplier`) AND ISNULL(advsm.`id_manufacturer`) AND ISNULL(advsp.`id_product`) AND ISNULL(advssp.`page`))' : '1') . ') OR (' . ($include_special_page && $curSpecialPage ? 'advssp.`page` = "' . pSQL($curSpecialPage) . '" OR ' : '') . (!Tools::getValue('id_seo') ? '(ISNULL(advsca.`id_category`) AND ISNULL(advsc.`id_cms`) AND ISNULL(advssu.`id_supplier`) AND ISNULL(advsm.`id_manufacturer`) AND ISNULL(advsp.`id_product`) AND ISNULL(advssp.`page`))' : '1') . ') )') . '')); return $result; }