public function process() { $seo_url = Tools::getValue('seo_url', false); if ($seo_url == 'products-comparison') { ob_end_clean(); header("Status: 301 Moved Permanently", false, 301); Tools::redirect('products-comparison.php?ajax=' . (int) Tools::getValue('ajax') . '&action=' . Tools::getValue('action') . '&id_product=' . (int) Tools::getValue('id_product')); die; } if ($seo_url && $this->id_seo && !Tools::getValue('getShareBlock')) { $resultSeoUrl = AdvancedSearchSeoClass::getSeoSearchByIdSeo((int) $this->id_seo, (int) $this->context->cookie->id_lang); if (!$resultSeoUrl) { Tools::redirect('404.php'); die; } if ($resultSeoUrl[0]['deleted']) { header("Status: 301 Moved Permanently", false, 301); Tools::redirect('index.php'); die; } $currentUri = explode('?', $_SERVER['REQUEST_URI']); $currentUri = $currentUri[0]; $this->realURI = __PS_BASE_URI__ . (Language::countActiveLanguages() > 1 ? Language::getIsoById($this->context->cookie->id_lang) . '/' : '') . 's/' . $resultSeoUrl[0]['id_seo'] . '/' . $resultSeoUrl[0]['seo_url']; if (!preg_match('#([a-z]{2})?/?s/([0-9]+)/([a-zA-Z0-9/_-]*)#', $_SERVER['REQUEST_URI'])) { header("Status: 301 Moved Permanently", false, 301); header("Location: " . $this->realURI . ((int) Tools::getValue('p') > 1 ? '?p=' . (int) Tools::getValue('p') : '')); die; } if (!Tools::getValue('id_seo_id_search') && ($resultSeoUrl[0]['seo_url'] != $seo_url || $currentUri != $this->realURI)) { header("Status: 301 Moved Permanently", false, 301); header("Location: " . $this->realURI); die; } $this->id_search = $resultSeoUrl[0]['id_search']; $AdvancedSearchClass = new AdvancedSearchClass((int) $this->id_search, (int) $this->context->cookie->id_lang); if (!$AdvancedSearchClass->active) { header("Status: 302 Moved Temporarily", false, 302); Tools::redirect('index.php'); die; } $criteria = unserialize($resultSeoUrl[0]['criteria']); if (is_array($criteria) && sizeof($criteria)) { $this->criterions = PM_AdvancedSearch4::getArrayCriteriaFromSeoArrayCriteria($criteria); } $_GET['id_seo_id_search'] = (int) $this->id_search; $_GET['as4c'] = $this->criterions; $this->hookName = AdvancedSearchClass::getHookName($AdvancedSearchClass->id_hook); $hasPriceCriterionGroup = false; if (is_array($this->criterions) && sizeof($this->criterions)) { $selected_criteria_groups_type = AdvancedSearchClass::getCriterionGroupsTypeAndDisplay((int) $this->id_search, array_keys($this->criterions)); if (is_array($selected_criteria_groups_type) && sizeof($selected_criteria_groups_type)) { foreach ($selected_criteria_groups_type as $criterionGroup) { if ($criterionGroup['criterion_group_type'] == 'price') { $hasPriceCriterionGroup = true; break; } } } } if ($hasPriceCriterionGroup && $resultSeoUrl[0]['id_currency'] && $this->context->cookie->id_currency != (int) $resultSeoUrl[0]['id_currency']) { $this->context->cookie->id_currency = $resultSeoUrl[0]['id_currency']; header('Refresh: 1; URL=' . $_SERVER['REQUEST_URI']); die; } $this->context->smarty->assign('as_cross_links', AdvancedSearchSeoClass::getCrossLinksSeo($this->context->cookie->id_lang, $resultSeoUrl[0]['id_seo'])); } else { if (Tools::getValue('setCollapseGroup')) { ob_end_clean(); $this->id_search = (int) Tools::getValue('id_search'); $id_criterion_group = (int) Tools::getValue('id_criterion_group'); $state = (int) Tools::getValue('state'); $id_criterion_group = $this->id_search . '_' . $id_criterion_group; $criterion_state = array($id_criterion_group => $state); $previous_criterion = array(); if (isset($this->context->cookie->criterion_group_state)) { $previous_criterion = unserialize($this->context->cookie->criterion_group_state); if (is_array($previous_criterion) && sizeof($previous_criterion)) { foreach ($previous_criterion as $k => $v) { if ($k == $id_criterion_group) { $criterion_state[$k] = (int) $state; } else { $criterion_state[$k] = (int) $v; } } $this->context->cookie->criterion_group_state = serialize($criterion_state); die; } else { $this->context->cookie->criterion_group_state = serialize($criterion_state); } die; } else { $this->context->cookie->criterion_group_state = serialize($criterion_state); } die; } elseif (Tools::getValue('setHideCriterionStatus')) { ob_end_clean(); $this->id_search = (int) Tools::getValue('id_search'); $state = (int) Tools::getValue('state'); if (isset($this->context->cookie->hidden_criteria_state)) { $hidden_criteria_state = unserialize($this->context->cookie->hidden_criteria_state); if (is_array($hidden_criteria_state)) { $hidden_criteria_state[$this->id_search] = $state; } else { $hidden_criteria_state = array(); } $this->context->cookie->hidden_criteria_state = serialize($hidden_criteria_state); } else { $this->context->cookie->hidden_criteria_state = serialize(array($this->id_search => $state)); } die; } elseif (Tools::getValue('getShareBlock')) { ob_end_clean(); echo Module::getInstanceByName('pm_advancedsearch4')->getShareBlock(Tools::safeOutput(Tools::getValue('ASSearchTitle')), Tools::safeOutput(Tools::getValue('ASSearchUrl'))); die; } else { if (Tools::getValue('resetSearchSelection')) { ob_end_clean(); $this->id_search = (int) Tools::getValue('id_search'); Module::getInstanceByName('pm_advancedsearch4')->resetSearchSelection($this->id_search); die('1'); } } $this->criterions = Tools::getValue('as4c', array()); if (is_array($this->criterions)) { $this->criterions = AdvancedSearchClass::cleanArrayCriterion($this->criterions); } else { $this->criterions = array(); } $this->criterions_hidden = Tools::getValue('as4c_hidden', array()); if (is_array($this->criterions_hidden)) { $this->criterions_hidden = AdvancedSearchClass::cleanArrayCriterion($this->criterions_hidden); } else { $this->criterions_hidden = array(); } $this->next_id_criterion_group = (int) Tools::getValue('next_id_criterion_group', false); $this->reset = (int) Tools::getValue('reset', false); $this->reset_group = (int) Tools::getValue('reset_group', false); if ($this->reset) { $this->criterions = array(); } if ($this->reset_group && isset($this->criterions[$this->reset_group])) { unset($this->criterions[$this->reset_group]); } $this->hookName = Tools::getValue('hookName'); if (!Validate::isHookName($this->hookName)) { die('Invalid hook name'); } $this->id_search = (int) Tools::getValue('id_search'); $this->context->cookie->{'next_id_criterion_group_' . (int) $this->id_search} = $this->next_id_criterion_group; } }