Rev 798 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/**David Delon 2008Cecill / GPL V3*/// in : utf8// out : utf8/** InventoryObservationCount.php** Cas d'utilisation :* Service recherche du nombre a partir de divers crit�res** 2: Le service recherche le nombre d'images correspondant au crit�res demand�* 3: Le service renvoie le nombre calcule*/Class InventoryObservationCount extends DBAccessor {var $config;function InventoryObservationCount($config) {$this->config=$config;}// renvoie le nombre d' observation correspondant aux criteresfunction getElement($uid){// uid[0] : utilisateur obligatoire// uid[1] : criteres de filtrage de la forme critere1:valeur1;critere2:valeur2// Controle detournement utilisateurif(!isset($_SESSION)) {session_start();}$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() ;}}?>