/DEV/DISPLAY/redirect.v5.php
PHP | 542 lines | 339 code | 95 blank | 108 comment | 89 complexity | 37124039df8162fafcd0f9b064a13f19 MD5 | raw file
- <?php
- include($_SERVER['DOCUMENT_ROOT'] . '/../LIB/common.functions.php');
- include_once(URL_LIB . '/session.settings.php');
- include_once(URL_LIB . '/rates.settings.php');
- include_once(URL_LIB . '/encoding.functions.php');
- include_once(URL_LIB . '/rw.encode.php');
- include_once(URL_LIB . "/db.functions.php");
- //echo "<pre>redirect.v5.php : GET = "; print_r($_GET); echo "</pre>"; //exit;
- //////////////////////// PROCESS FREE T9 //////////////////////////////////
- /* On verifie les loc_id Postés par le moteur dans le cas d'un T9 ouvert
- On attend deux chaines numériques séparés par un underscore "_" */
- $flag_ambigu = false;
- $flag_some_found = false;
- $loc_not_found = 0;
- $cnt = 1;
- $req_loc = array();
- $check_search = array();
- # Utilise COOKIE aulieu de SESSION
- $cookieExpires = mktime(0, 0, 0, 1, 1, 1970); # For delete cookie
- setcookie("AMBIGUITE_LOC_NAME", "", $cookieExpires);
- unset($_COOKIE["AMBIGUITE_LOC_NAME"]);
- setcookie("AMBIGUITE_CRITERIONS", "", $cookieExpires);
- unset($_COOKIE["AMBIGUITE_CRITERIONS"]);
- /*
- $tab_query_string = explode("&", $_SERVER["QUERY_STRING"]);
- $tab_result_query = array();
- for ($cpt=0; $cpt < count($tab_query_string); $cpt++)
- {
- $tab_result_query[$cpt] = explode("=",$tab_query_string[$cpt]);
- $tab_new_query[$tab_result_query[$cpt][0]] = $tab_result_query[$cpt][1];
- }
- */
- $tab_new_query = $_GET;
- /*
- // Ajouter villa si l'utilisateur a saisi maison
- if(is_array($_GET['ck_property_type']))
- {
- if (($_GET['univers']==1 || $_GET['univers']==2) && in_array('2', $_GET['ck_property_type']) && !in_array('7', $_GET['ck_property_type'])) {
- $tab_new_query['ck_property_type'][] = '7';
- }
- }
- */
- // Colocation - Checkboxes types de bien Maison / Villa et Immeubles / Appart cochées
- //echo "<br>Avant : "; print_r($_GET['ck_property_type']);
- if (
- ($_global['univers'] == '8') &&
- (isset($_GET['ck_property_type'][0]) && !empty($_GET['ck_property_type'][0])) &&
- (isset($_GET['ck_property_type'][1]) && !empty($_GET['ck_property_type'][1]))) {
- $ck_property_type_unique = $_GET['ck_property_type'][0] . ',' . $_GET['ck_property_type'][1];
- $_GET['ck_property_type'] = array($ck_property_type_unique);
- }
- //echo "<br>Apres : "; print_r($_GET['ck_property_type']);
- // Page Vente ou Location
- $array_page_ambg = array(
- 1 => "ambiguous_vente_fr.php",
- 2 => "ambiguous_location_fr.php",
- 8 => "ambiguous_colocation_fr.php"
- );
- $array_special_cp = array('2a', '2b', '971', '972', '973', '974', '975', '976', '984', '986', '987', '988');
- for ($cntfields = 1; $cntfields <= SEARCH_FIELDS_NUMBER; $cntfields++) {
- // cas particulier de la ville Y, seule ville à 1 caractère
- if ($_REQUEST["loc_name" . $cntfields] == 'y') {
- $_GET["loc_name" . $cntfields] = $_REQUEST["loc_name" . $cntfields] = $tab_new_query["loc_name" . $cntfields] = 'Y (80190)';
- $_GET["loc_key" . $cntfields] = $_REQUEST["loc_key" . $cntfields] = $tab_new_query["loc_key" . $cntfields] = '36006_2';
- }
- if (empty($_REQUEST["loc_key" . $cntfields]))
- continue;
- $current_lockey = strtolower(trim($_REQUEST["loc_key" . $cntfields]));
- $current_locname = string_cleaner($_REQUEST["loc_name" . $cntfields]);
- // Si c'est un doublon, on ne le prend pas en compte
- if (in_array($current_lockey, $check_search))
- continue;
- // Ajouter au tableau des doublons
- $check_search[$cnt] = $current_lockey;
- $req_loc[$cnt]["loc_name"] = string_cleaner($current_locname);
- $req_loc[$cnt]["loc_key"] = 0;
- $req_loc[$cnt]["level"] = 0;
- $req_loc[$cnt]["ambigue"] = 0;
- $req_loc[$cnt]["loc_get"] = $current_lockey;
- // La clé de localité n'a pas le bon format
- if (isWrongLocKey($current_lockey)) {
- require_once(URL_LIB . "/db.functions.php");
- // Si c'est un code postal spécial (domtom ou corse), c'est ok
- if (in_array($current_lockey, $array_special_cp)) {
- // On récupère les infos de la localité
- $res_search = find_locname_by_czip($current_lockey, 1);
- $flag_some_found = true;
- $result = $res_search['res'][0];
- $lct_name = strtoupper(strtolower($result['lct_name_fr']));
- $lct_zip = $result['lct_post_code'];
- $lockey = $result['lct_id'] . "_" . $result['lct_level'];
- $req_loc[$cnt]["loc_key"] = $result['lct_id'];
- $req_loc[$cnt]["level"] = $result['lct_level'];
- $req_loc[$cnt]["loc_get"] = $lockey;
- $req_loc[$cnt]["loc_name"] = $lct_name . " (" . $lct_zip . ")"; //(strtolower($lct_name));
- $tab_new_query["loc_name" . $cnt] = urlencode($lct_name . "-" . $lct_zip);
- $tab_new_query["loc_key" . $cnt] = $lockey;
- ++$cnt;
- // Passer au champ suivant
- continue;
- }
- // On vérifie si la saisie est un code postal
- if (preg_match('`^[0-9]{2,5}$`', $current_lockey)) {
- if (strlen($current_lockey) == 2) {
- $mode_departement = 1;
- $current_lockey .= '000';
- } else {
- $mode_departement = 0;
- // Remplir à droite avec des 0 pour obtenir 5 caractères
- $current_lockey = str_pad($current_lockey, 5, 0);
- }
- $res_search = find_locname_by_czip($current_lockey, 1);
- //var_dump($res_search);
- $res_nb_results = $res_search['count'][0]['count'];
- if ($res_nb_results >= 1) {
- //Modification par Soflou pour gérer les villes dont le CP est égal XX000
- //
- //On vérifie si on a un level 2 (ville)
- $count_ville = 0;
- for ($cnt_res = 0; $cnt_res < $nb_results; $cnt_res++) {
- if ($res_search['res'][$cnt_res]['lct_level'] == 2)
- $count_ville++;
- }
- //Si une seule ville trouvée on affiche les resultats pour cette ville
- if ($count_ville == 1 && !$mode_departement == 1) {
- $last_id = count($res_search['res']) - 1;
- $res_ville = $res_search['res'][$last_id];
- // Remplacer les resultats par le dernier
- $res_search['res'] = array(0 => $res_ville);
- $res_nb_results = 1;
- }
- //On force pour gérer le département
- if ($res_search['res'][0]['lct_level'] == 1 && $count_ville == 0) {
- $res_nb_results = 1;
- }
- }
- // Gérer les différents cas du nombre de résultats
- switch ($res_nb_results) {
- case 0: //Aucun résultat
- // "No ZIP relationship"
- $loc_not_found++;
- $req_loc[$cnt]["loc_key"] = ""; //$val_zip_code;
- $req_loc[$cnt]["loc_get"] = ""; //$val_zip_code;
- $req_loc[$cnt]["level"] = 0;
- $req_loc[$cnt]["loc_get"] = "";
- $tab_new_query["loc_key" . $cnt] = "";
- break;
- case 1: //Un résultat unique
- $flag_some_found = true;
- $result = $res_search['res'][0];
- $lct_name = strtoupper(strtolower($result['lct_name_fr']));
- $lct_zip = $result['lct_post_code'];
- if ($result['lct_level'] == 1) { // Dépt
- if (string_begins_with($lct_zip, '97') || string_begins_with($lct_zip, '98')) { // Dom-Tom
- $lct_zip = substr($lct_zip, 0, 3);
- } else {
- $lct_zip = substr($lct_zip, 0, 2);
- }
- }
- $lockey = $result['lct_id'] . "_" . $result['lct_level'];
- $req_loc[$cnt]["loc_key"] = $result['lct_id'];
- $req_loc[$cnt]["level"] = $result['lct_level'];
- $req_loc[$cnt]["loc_get"] = $lockey;
- $req_loc[$cnt]["loc_name"] = $lct_name . " (" . $lct_zip . ")";
- $tab_new_query["loc_name" . $cnt] = urlencode($lct_name . "-" . $lct_zip);
- $tab_new_query["loc_key" . $cnt] = $lockey;
- break;
- default: //Multi résultat
- $flag_some_found = true;
- if ($mode_departement == 1) {
- $result = $res_search['res'][0];
- $lct_name = strtoupper(strtolower($result['lct_name_fr']));
- $lct_zip = substr($result['lct_post_code'], 0, 2);
- $lgc_id = ($result['lgc_id'] == 0 ? $result['lct_id'] : $result['lgc_id']);
- $lockey = $lgc_id . "_1";
- $req_loc[$cnt]["level"] = 1;
- } else {
- $result = $res_search['res'][1];
- $lct_name = "TOUTES-COMMUNES";
- $lct_zip = ($result['lct_post_code'] == '75000' ? '75' : $result['lct_post_code']);
- $lgc_id = empty($result['lgc_id']) ? $result['lct_id'] : $result['lgc_id'];
- $lockey = $lgc_id . "_98";
- $req_loc[$cnt]["level"] = "98";
- }
- $req_loc[$cnt]["loc_key"] = $lgc_id;
- $req_loc[$cnt]["loc_get"] = $lockey;
- $req_loc[$cnt]["loc_name"] = $lct_name . " (" . $lct_zip . ")"; //(strtolower($lct_name));
- $tab_new_query["loc_name" . $cnt] = urlencode($lct_name . "-" . $lct_zip);
- $tab_new_query["loc_key" . $cnt] = $lockey;
- break;
- }
- if ($cnt <> $cntfields) {
- $_GET["loc_name" . $cntfields] = LABEL_DEFAULT_LOCALITY;
- $_GET["loc_key" . $cntfields] = "";
- }
- }
- // Sinon, on vérifie si la saisie est bien une localité
- else {
- //saisie mode text
- // Supprimer la chaine de la localité par défaut
- // => Beaucoup d'url sont en erreur car la localité contenait cette chaine
- // => C'est dû à la durée avant effacement du t9 en entrant dans le champ pour modification
- $current_locname = str_ireplace(LABEL_DEFAULT_LOCALITY, '', $current_locname);
- // Gérer le cas où il y a le code postal dans la localité (entre parentheses)
- // On récupère la chaine qui se trouve avant la paranthese ouvrante.
- if (($pos = strpos($current_locname, '(')) > 3)
- $current_locname = substr($current_locname, 0, $pos);
- // Chercher par une requete du type " ='LOCNAME' "
- $res_search = find_locname_by_name($current_locname, 0);
- $liste_villes = $res_search['res'];
- $count_list_ville_total = $res_search['count'];
- $flag_count_over = in_array(strtoupper($current_locname), $no_freeT9_cities);
- // "Rien trouvé..."
- if (count($liste_villes) == 0) {
- // Chercher par une requete du type " LIKE 'LOCNAME' "
- $res_search = find_locname_by_name($current_locname, 1);
- $liste_villes = $res_search['res'];
- $count_list_ville_total = $res_search['count'];
- }
- $count_total_ville = $count_list_ville_total[0]['count'];
- $res_nb_results = count($liste_villes);
- if ($res_nb_results == 0) {
- //Si la localité n'existe pas on forme l'URL avec les parametre recu
- //J'ai détaché le fait que ca peut etre ambigue ou non trouvé
- $loc_not_found++;
- //$flag_ambigu=true;
- $locname = strtoupper(strtolower($current_locname));
- $req_loc[$cnt]["loc_name"] = $locname;
- $req_loc[$cnt]["loc_key"] = "0";
- $req_loc[$cnt]["level"] = "0";
- $req_loc[$cnt]["loc_get"] = "";
- $tab_new_query["loc_name" . $cnt] = $locname . "-";
- $tab_new_query["loc_key" . $cnt] = "";
- } elseif ($res_nb_results > 1) {
- //Rajout d'une fonction d'agrégation des codes postaux
- //On peut avoir des regroupement de code postaux pour une même ville
- $tab_grp_zip = array();
- $lgn_sav = $liste_villes[0]['lgn_id'];
- $cnt_lgn = 0;
- if ($lgn_sav <> 0) {
- for ($cnt_zip = 0; $cnt_zip < $res_nb_results; $cnt_zip++) {
- if ($liste_villes[$cnt_zip]['lgn_id'] == $lgn_sav)
- ++$cnt_lgn;
- }
- }
- // si $cnt_lgn = count(list_ville) alors regroupement sinon ambiguité
- if ($cnt_lgn == $res_nb_results) {
- $flag_some_found = true;
- $locname = strtoupper(strtolower($liste_villes[0]['lct_name_fr']));
- //Simili cas unique regroupement cpostaux
- $lct_id = $liste_villes[0]['lgn_id'];
- $req_loc[$cnt]["loc_name"] = $locname . " (" . LABEL_LGN_ALL . ")";
- $req_loc[$cnt]["loc_key"] = $lct_id;
- $req_loc[$cnt]["level"] = 99;
- $req_loc[$cnt]["loc_get"] = $_GET["loc_key" . $cnt];
- $tab_new_query["loc_name" . $cnt] = urlencode($locname . "-" . str_replace(" ", "-", LABEL_LGN_ALL));
- $tab_new_query["loc_key" . $cnt] = $lct_id . "_99";
- if ($cnt <> $cntfields) {
- $_GET["loc_name" . $cntfields] = LABEL_DEFAULT_LOCALITY;
- $_GET["loc_key" . $cntfields] = "";
- }
- } else {
- /////sinon ambiguité de niveau 1
- //Si la localité n'existe pas on forme l'URL avec les parametre recu
- //J'ai détaché le fait que ca peut etre ambigue ou non trouvé
- $loc_not_found++;
- //$flag_ambigu=true;
- $locname = strtoupper(strtolower($current_locname));
- $req_loc[$cnt]["loc_name"] = $locname;
- $req_loc[$cnt]["loc_key"] = "0";
- $req_loc[$cnt]["level"] = "0";
- $req_loc[$cnt]["ambigue"] = 1;
- $tab_new_query["loc_name" . $cnt] = urlencode($locname) . "-";
- $tab_new_query["loc_key" . $cnt] = ""; //urlencode("0_0");
- $flag_ambigu = true;
- }
- } elseif ($res_nb_results > 19999999) {
- // 1 - Ambiguité simple
- // 2 - Trop de résultats
- if ($flag_count_over) {
- $req_loc[$cnt]["ambigue"] = 1;
- //Trop de résultats normalement = 2
- $flag_ambigu = true;
- } else {
- //On peut avoir des regroupement de code pôstaux pour une même ville
- $tab_grp_zip = array();
- $lgn_sav = $liste_villes[0]['lgn_id'];
- $cnt_lgn = 0;
- if ($lgn_sav <> 0) {
- for ($cnt_zip = 0; $cnt_zip < $res_nb_results; $cnt_zip++) {
- if ($liste_villes[$cnt_zip]['lgn_id'] == $lgn_sav)
- ++$cnt_lgn;
- }
- }
- // si $cnt_lgn = count(list_ville) alors regroupement sinon ambiguité
- if ($cnt_lgn == $res_nb_results) {
- $flag_some_found = true;
- $locname = strtoupper(strtolower($liste_villes[0][1]));
- $lockey = $liste_villes[0]['lgn_id'] . "_99";
- //Simili cas unique regroupement cpostaux
- $lct_post_code = $liste_villes[0][3];
- if ($lct_level == 1) { // Dépt
- if (string_begins_with($lct_post_code, '97') || string_begins_with($lct_post_code, '98')) { // Dom-Tom
- $lct_post_code = substr($lct_post_code, 0, 3);
- } else {
- $lct_post_code = substr($lct_post_code, 0, 2);
- }
- }
- $req_loc[$cnt]["loc_name"] = $locname . " (" . $lct_post_code . ")";
- $req_loc[$cnt]["loc_key"] = $liste_villes[0]['lgn_id'];
- $req_loc[$cnt]["level"] = 99; //$liste_villes[0][2];
- $req_loc[$cnt]["loc_get"] = $lockey;
- $tab_new_query["loc_name" . $cnt] = urlencode($locname . "_TOUS-CODES-POSTAUX");
- $tab_new_query["loc_key" . $cnt] = $lockey;
- if ($cnt <> $cntfields) {
- $_GET["loc_name" . $cntfields] = LABEL_DEFAULT_LOCALITY;
- $_GET["loc_key" . $cntfields] = "";
- }
- } else {
- /////sinon ambiguité de niveau 1
- $req_loc[$cnt]["ambigue"] = 1;
- $flag_ambigu = true;
- }
- }
- } else {
- ////////////////////////
- //Résultat Unique
- ////////////////////////
- $flag_some_found = true;
- $locname = strtoupper(strtolower($liste_villes[0][1]));
- $lct_id = $liste_villes[0][0];
- $lct_level = $liste_villes[0][2];
- $lockey = $lct_id . '_' . $lct_level;
- $lct_post_code = $liste_villes[0][3];
- if ($lct_level == 1) { // Dépt
- if (string_begins_with($lct_post_code, '97') || string_begins_with($lct_post_code, '98')) { // Dom-Tom
- $lct_post_code = substr($lct_post_code, 0, 3);
- } else {
- $lct_post_code = substr($lct_post_code, 0, 2);
- }
- }
- $req_loc[$cnt]["loc_name"] = $locname . " (" . $lct_post_code . ")";
- $req_loc[$cnt]["loc_key"] = $lct_id;
- $req_loc[$cnt]["level"] = $lct_level;
- $req_loc[$cnt]["loc_get"] = $lockey;
- $tab_new_query["loc_name" . $cnt] = urlencode($locname . "-" . $lct_post_code);
- $tab_new_query["loc_key" . $cnt] = $lockey;
- if ($cnt <> $cntfields) {
- $_GET["loc_name" . $cntfields] = LABEL_DEFAULT_LOCALITY;
- $_GET["loc_key" . $cntfields] = "";
- }
- }
- }
- } else {
- $flag_some_found = true;
- //Value from Closed-T9
- $tab_lockey = explode("_", $current_lockey);
- $req_loc[$cnt]["loc_key"] = $tab_lockey[0];
- $req_loc[$cnt]["level"] = $tab_lockey[1];
- }
- $cnt++;
- }
- if ($_REQUEST['dbg'] == 'flo') {
- echo '<pre>$_GET :<br />';
- var_export($_GET);
- echo '</pre><pre>$tab_new_query (utilise si OK) :<br />';
- var_export($tab_new_query);
- echo '</pre><pre>$req_loc (utilise si NOK) :<br />';
- var_export($req_loc);
- echo '</pre>';
- if ($flag_ambigu == true || $loc_not_found > 0)
- echo '<p style="color:red">Ambiguite ou localite non trouvee => Page ambiguite</p>';
- else
- echo '<p style="color:green">Aucune ambiguite => Page de resultats</p>';
- die();
- }
- if ($flag_ambigu == true || $loc_not_found > 0) {
- //On rajoute les critères
- /*
- if(isset($_GET['ck_property_group']) && is_array($_GET['ck_property_group']) ) {
- $property_types = $_GET['ck_property_group'];
- $property_type = str_repeat('0',40 );
- foreach($property_types as $type_id) $property_type[$type_id-1] = '1';
- $req_criterion['property_type'] = $property_type;
- }
- */
- $req_criterion['price'] = $_GET['price'];
- $req_criterion['price_min'] = $_GET['price_min'];
- $req_criterion['price_max'] = $_GET['price_max'];
- $req_criterion['area'] = $_GET['area'];
- $req_criterion['area_min'] = $_GET['area_min'];
- $req_criterion['area_max'] = $_GET['area_max'];
- $req_criterion['ck_nb_rooms'] = $_GET['ck_nb_rooms'];
- $req_criterion['ck_property_type'] = $_GET['ck_property_type'];
- setcookie("AMBIGUITE_LOC_NAME", serialize($req_loc));
- $_COOKIE["AMBIGUITE_LOC_NAME"] = serialize($req_loc);
- setcookie("AMBIGUITE_CRITERIONS", serialize($req_criterion));
- $_COOKIE["AMBIGUITE_CRITERIONS"] = serialize($req_criterion);
- //On ne redirige vers pas d'ambiguité que si aucun resultat direct
- if ($flag_some_found == false) {
- redirection(URL_SITE . $array_page_ambg[$_GET["univers"]]);
- }
- }
- /* FIN VERIF du T9 ouvert */
- switch ($_global['site']) {
- case "be":
- /* NE PAS EFFACER */
- $page = explode('/', $page);
- $page = $page[count($page) - 1];
- //list($trash, $page) = explode('/', $page);
- break;
- default:
- list($trash, $page) = explode('/', $page);
- break;
- }
- list($page) = explode('_', $page, 2);
- // On check si ca existe ou pas encore
- // Par défault si l'univers est location, on trie par date
- $saved_searches = fetchcookie(SEARCH_HISTORY_COOKIE_NAME);
- $saved_search = unserialize($saved_searches[0]);
- /*if ((!$saved_search || ($saved_search && ($saved_search['univers'] != $_global['univers']))) && $_global['univers'] == '2') {
- $tab_new_query['ordre'] = 'update_date';
- $tab_new_query['hi_order'] = '1';
- $tab_new_query['ck_property_type'] = '0000000000000000000000000000000000000000';
- } else if ((!$saved_search || ($saved_search && ($saved_search['univers'] != $_global['univers']))) && $_global['univers'] == '1') {
- $tab_new_query['ck_property_type'] = '1100001000000000000000000000000000000000';
- }*/
- if ($_REQUEST['nb_results'] != $saved_search['nb_results']) {
- $saved_search['nb_results'] = $_REQUEST['nb_results'];
- }
- $saved_searches[0] = serialize($saved_search);
- $expires = time() + (86400 * COOKIE_DURATION);
- $site_domain = $_SERVER['HTTP_HOST']; //substr(URL_SITE_FR,7,strlen(URL_SITE_FR)-8);
- storecookie(SEARCH_HISTORY_COOKIE_NAME,$saved_searches,$expires);
- //echo "<pre>redirect.v5.php : tab_new_query = "; print_r($tab_new_query); echo "</pre>"; //exit;
- // Générer la nouvelle url seo correspondant à la recherche
- //$url_seo = to_nat($tab_new_query, $page, $_global['dns']);
- //echo "[url_seo = $url_seo]"; exit;
- // Génère l'url de la page résultats annonces à partir du moteur de recherche
- // (url courte ou longue selon les crièteres de recherche)
- //echo "[GET = <pre>".print_r($_GET, true)."</pre>]"; //exit;
- $url = uriToFinalFromSearchEngine($_GET);
- // echo "[url = $url]"; exit;
- header("Location: " . $url, true, 301);
- exit;
- ?>