id=$id; $this->n_ligne=$n_ligne; $this->params=$params; $this->search=&$search; } //fonction de récupération des opérateurs disponibles pour ce champ spécial (renvoie un tableau d'opérateurs) public function get_op() { global $msg; $operators = array(); $operators["CONTAINS"]=$msg['284']; $operators["INTERSECTS"]=$msg['map_multisearch_intersects']; return $operators; } //fonction de récupération de l'affichage de la saisie du critère public function get_input_box() { global $msg; global $charset; global $get_input_box_id; global $base_path; //$this->s = new search(false,"search_simple_fields.xml"); //Récupération de la valeur de saisie $valeur_="field_".$this->n_ligne."_s_".$this->id; global ${$valeur_}; $valeur=${$valeur_}; $r ="
"; return $r; } //fonction de conversion de la saisie en quelque chose de compatible avec l'environnement public function transform_input() { } //fonction de création de la requête (retourne une table temporaire) public function make_search() { global $search; global $base_path; //Récupération de la valeur de saisie $address_="field_".$this->n_ligne."_s_".$this->id; global ${$address_}; $address=${$address_}; $op_ = "op_".$this->n_ligne."_s_".$this->id; global ${$op_}; $op=${$op_}; if( count($address)) { $url = "https://nominatim.openstreetmap.org/search?format=json&addressdetails=1&limit=1&polygon_text=1&q=".urlencode($address[0]); $curl = new Curl(); $response = $curl->get($url); $body = encoding_normalize::json_decode($response->body, true); if (!empty($body)) { switch($op) { case "CONTAINS" : $query = " SELECT DISTINCT map_emprise_obj_num AS notice_id FROM map_emprises WHERE map_emprise_type=11 AND CONTAINS(GEOMFROMTEXT('".$body[0]["geotext"]."'),map_emprise_data) = 1 UNION SELECT DISTINCT notcateg_notice AS notice_id FROM notices_categories JOIN map_emprises ON num_noeud = map_emprises.map_emprise_obj_num WHERE map_emprise_type = 2 AND CONTAINS(GEOMFROMTEXT('".$body[0]["geotext"]."'),map_emprise_data) = 1"; break; case "INTERSECTS" : $query = " SELECT DISTINCT map_emprise_obj_num AS notice_id FROM map_emprises WHERE map_emprise_type=11 AND INTERSECTS(GEOMFROMTEXT('".$body[0]["geotext"]."'),map_emprise_data) = 1 UNION SELECT DISTINCT notcateg_notice AS notice_id FROM notices_categories JOIN map_emprises ON num_noeud = map_emprises.map_emprise_obj_num WHERE map_emprise_type = 2 AND INTERSECTS(GEOMFROMTEXT('".$body[0]["geotext"]."'),map_emprise_data) = 1"; break; } pmb_mysql_query("create temporary table t_s_map_address (notice_id integer unsigned not null)"); $requete="insert into t_s_map_address " . $query; pmb_mysql_query($requete); pmb_mysql_query("alter table t_s_map_address add primary key(notice_id)"); return "t_s_map_address"; } } return ''; } public function make_unimarc_query() { return array(); } //fonction de traduction littérale de la requête effectuée (renvoie un tableau des termes saisis) public function make_human_query() { global $search; global $base_path,$charset; global $msg; //Récupération de la valeur de saisie $address_="field_".$this->n_ligne."_s_".$this->id; global ${$address_}; $address=${$address_}; $litteral = array(); if( count($address) ) { $litteral[0] = $address[0]; } return $litteral; } //fonction de vérification du champ saisi ou sélectionné public function is_empty($valeur) { } //fonction de découpage d'une chaine trop longue public function cutlongwords($valeur,$size=50) { if (strlen($valeur)>=$size) { $pos=strrpos(substr($valeur,0,$size)," "); if ($pos) { $valeur=substr($valeur,0,$pos+1)."..."; } } return $valeur; } public static function check_visibility() { global $pmb_map_activate; if($pmb_map_activate) { return true; } else { return false; } } }