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() ; |
} |
} |