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() { $operators = array(); $operators["EQ"]="="; 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_}; $radius_="fieldvar_".$this->n_ligne."_s_".$this->id; global ${$radius_}; $radius=${$radius_}[0][0]; $r.=" " . $msg['search_extended_map_circle_center'] . "
" . $msg['search_extended_map_circle_radius'] . "
"; 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 $center_="field_".$this->n_ligne."_s_".$this->id; $radius_="fieldvar_".$this->n_ligne."_s_".$this->id; global ${$center_}; global ${$radius_}; $center=${$center_}; $radius = ${$radius_}[0][0]; if( count($center) && $radius) { $center_coords = explode(',', $center[0]); $x = $center_coords[0]; $y = $center_coords[1]; if ($x && $y && $radius) { //['x'=> -74.00597,'y'=>40.71427] $wkt = map_hold_circle::getWKT(map_hold_circle::createRegularPolygon(['x'=> $x,'y'=> $y], $radius, 32),true); if($wkt) { $query = "select distinct map_emprise_obj_num as notice_id from map_emprises where map_emprise_type=11 and intersects(geomfromtext('!!p!!'),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('!!p!!'),map_emprise_data)"; $query = str_replace('!!p!!', $wkt, $query); pmb_mysql_query("create temporary table t_s_map_circle (notice_id integer unsigned not null)"); $requete="insert into t_s_map_circle " . $query; pmb_mysql_query($requete); pmb_mysql_query("alter table t_s_map_circle add primary key(notice_id)"); return "t_s_map_circle"; } } } 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 $center_ = "field_".$this->n_ligne."_s_".$this->id; $radius_ = "fieldvar_".$this->n_ligne."_s_".$this->id; global ${$center_}; global ${$radius_}; $center = ${$center_}; $radius = ${$radius_}[0][0]; $litteral = array(); if( count($center) && $radius) { $center_coords = explode(',', $center[0]); $x = $center_coords[0]; $y = $center_coords[1]; if ($x && $y && $radius) { $litteral[0] = $msg['search_extended_map_circle_center'] . ' ' . $center[0] . ', ' . $msg['search_extended_map_circle_radius'] . ' ' . $radius; } } 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 $opac_map_activate; if($opac_map_activate) { return true; } else { return false; } } }