config=$config; } // renvoie le nombre d' observation correspondant aux criteres function getElement($uid) { // uid[0] : utilisateur obligatoire // uid[1] : criteres de filtrage de la forme critere1:valeur1;critere2:valeur2 // Controle detournement utilisateur $this->controleUtilisateur($uid[0]); $DB=$this->connectDB($this->config,'database_cel'); $criteres = array() ; if(isset($uid[1])) { $criteres = explode("&", $uid[1]) ; } $query="SELECT count(*) as count FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($uid[0])."' AND " ; foreach($criteres as $pair) { $nom_valeur = explode("=",$pair) ; if(sizeof($nom_valeur) != 0) { if($nom_valeur[0] == 'annee') { $query .= "year(date_observation) = '".$DB->escapeSimple($nom_valeur[1])."'" ; $query .= ' AND ' ; } elseif($nom_valeur[0] == 'mois') { $query .= "month(date_observation) = '".$DB->escapeSimple($nom_valeur[1])."'" ; $query .= ' AND ' ; } elseif($nom_valeur[0] == 'jour') { $query .= "day(date_observation) = '".$DB->escapeSimple($nom_valeur[1])."'" ; $query .= ' AND ' ; } elseif($nom_valeur[0] == 'mots_cles') { $liste_mc = explode(";",$nom_valeur[1]); $query .= '(' ; foreach($liste_mc as $mot) { if(trim($mot) != '') { $query .= "mots_cles LIKE '%".$DB->escapeSimple($mot)."%' OR " ; } } $query = rtrim($query,' OR '); $query .= ') AND ' ; } elseif ($nom_valeur[0] == 'nom_taxon') { $nom_valeur[1] = str_replace("*","%",$nom_valeur[1]); $query .= "(nom_sel LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR identifiant LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR ordre LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR nom_sel LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR num_nom_sel LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR nom_ret LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR num_nom_ret LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR num_taxon LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR location LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR id_location LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR date_observation LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR lieudit LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR station LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR milieu LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR commentaire LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR transmission LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR coord_x LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%' OR coord_y LIKE '%".$DB->escapeSimple($nom_valeur[1]). "%')"; //"%' OR famille LIKE '%".$DB->escapeSimple($nom_valeur[1]). } else { if(trim($nom_valeur[0]) != '') { $query .= $nom_valeur[0]." = '".$DB->escapeSimple($nom_valeur[1])."'" ; $query .= ' AND ' ; } } } } $query = rtrim($query,' AND ') ; $res =& $DB->query($query); if (PEAR::isError($res)) { $erreur = 'ERROR : probleme de liste des observations' ; $this->logger('CEL_bugs',$erreur.' '.$query); } $results = array() ; while($observation = $res->fetchrow(DB_FETCHMODE_ORDERED)) { $result[] = $observation[0] ; } $res = json_encode($result) ; print($res); exit() ; } } ?>