Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 858 → Rev 859

/trunk/jrest/services/InventoryObservationCount.php
1,4 → 1,5
<?php
// ATTENTION ! Classe compatible uniquement avec nouveau format de bdd du cel //
/**
 
David Delon 2008
7,7 → 8,6
 
*/
 
 
// in : utf8
// out : utf8
/*
14,126 → 14,38
* InventoryObservationCount.php
*
* Cas d'utilisation :
* Service recherche du nombre a partir de divers crit�res
* Service recherche du nombre a partir de divers critères
*
* 2: Le service recherche le nombre d'images correspondant au crit�res demand�
* 2: Le service recherche le nombre d'images correspondant au critères demandé
* 3: Le service renvoie le nombre calcule
*/
*/
class InventoryObservationCount extends Cel {
 
Class InventoryObservationCount extends DBAccessor {
 
var $config;
 
function InventoryObservationCount($config) {
 
$this->config=$config;
}
 
 
// renvoie le nombre d' observation correspondant aux criteres
 
/**
* renvoie le nombre d' observations correspondant aux criteres
* uid[0] : utilisateur obligatoire
* uid[1] : criteres de filtrage de la forme critere1=valeur1&critere2=valeur2
*
*/
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');
$chercheur_observations = new RechercheObservation($this->config);
 
$criteres = array();
 
$criteres = array() ;
 
if(isset($uid[1]))
{
$criteres = explode("&", $uid[1]) ;
$criteres = $chercheur_observations->parserRequeteCriteres($uid[1]) ;
}
 
$query="SELECT count(*) as count FROM cel_inventory WHERE identifiant='".$DB->escapeSimple($uid[0])."' AND " ;
$retour = $chercheur_observations->compterObservations($uid[0], $criteres);
 
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);
$retour_encode = json_encode($retour) ;
header("content-type: application/json") ;
print $retour_encode ;
exit() ;
}
}