Subversion Repositories eFlore/Applications.del

Compare Revisions

Ignore whitespace Rev 468 → Rev 486

/trunk/jrest/services/Images.php
1,6 → 1,8
<?php
class Images extends Del {
private $format = 'json';
private $debut = 0;
private $limite = 50;
8,6 → 10,21
private $ordre = 'desc';
private $tri_demande = false;
private $criteres_acceptes = array(
"recherche",
"dpt",
"taxon",
"genre",
"mot_clef",
"date",
"commune",
"famille",
"tag",
"auteur"
);
private $criteres = array();
/**
* Méthode appelée avec une requête de type GET avec une url de la forme
* http://localhost/jrest/ExempleService/
34,22 → 51,10
*
*/
public function getElement($uid)
{
$format = 'json';
{
$this->collecterCriteresRecherche();
$this->debut = isset($_GET['debut']) ? $_GET['debut'] : $this->debut;
$this->limite = isset($_GET['limite']) ? $_GET['limite'] : $this->limite;
$this->champ_tri = isset($_GET['tri']) ? $_GET['tri'] : $this->champ_tri;
$this->ordre = isset($_GET['ordre']) ? $_GET['ordre'] : $this->ordre;
$this->tri_demande = isset($_GET['tri']) ? true : false;
if(isset($_GET['format'])) {
$format = strtolower($_GET['format']);
}
switch ($format) {
switch ($this->format) {
case 'html':
56,11 → 61,22
case 'json':
$images = $this->obtenirImagesAvecObservations();
$total = count($images);
if(!empty($this->criteres)) {
$images_filtrees = array();
foreach($images as $ligne_image) {
if($this->ligneCorrespondAuxCriteres($ligne_image)) {
$images_filtrees[] = $ligne_image;
}
}
} else {
$images_filtrees = $images;
}
$total = count($images_filtrees);
if($this->tri_demande) {
usort($images, array($this,'comparerObservations'));
usort($images_filtrees, array($this,'comparerObservations'));
}
$tranche = array_slice($images,$this->debut,$this->limite);
$tranche = array_slice($images_filtrees,$this->debut,$this->limite);
$retour = array('total' => $total,
'contenu' => $tranche
77,6 → 93,87
$this->envoyer($retour,$mime);
}
private function collecterCriteresRecherche() {
$this->debut = isset($_GET['debut']) ? $_GET['debut'] : $this->debut;
$this->limite = isset($_GET['limite']) ? $_GET['limite'] : $this->limite;
$this->champ_tri = isset($_GET['tri']) ? $_GET['tri'] : $this->champ_tri;
$this->ordre = isset($_GET['ordre']) ? $_GET['ordre'] : $this->ordre;
$this->tri_demande = isset($_GET['tri']) ? true : false;
if(isset($_GET['format'])) {
$this->format = strtolower($_GET['format']);
}
foreach($_GET as $cle => $valeur) {
if(in_array(strtolower(trim($cle)), $this->criteres_acceptes)) {
$this->criteres[$cle] = $valeur;
}
}
}
private function ligneCorrespondAuxCriteres($ligne_image) {
$correspond = true;
foreach($this->criteres as $critere => $valeur) {
switch($critere) {
case "recherche":
$correspond = (substr($ligne_image->observation->ce_zone_geo, 0, 2) == $valeur) |
stristr($ligne_image->observation->nom_sel, $valeur) != '' |
stristr($ligne_image->observation->nom_ret, $valeur) != '' |
stristr($ligne_image->observation->nom_sel, $valeur) != '' |
stristr($ligne_image->observation->nom_ret, $valeur) != '' |
stristr($ligne_image->observation->mots_cles_texte, $valeur) != '' |
stristr($ligne_image->observation->date_observation, $valeur) != '' |
stristr($ligne_image->date_prise_de_vue, $valeur) != '' |
stristr($ligne_image->observation->zone_geo, $valeur) != '' |
stristr($ligne_image->observation->famille, $valeur) != '' |
stristr($ligne_image->mots_cles_texte, $valeur) != '' |
stristr($ligne_image->prenom_utilisateur, $valeur) != '' |
stristr($ligne_image->nom_utilisateur, $valeur) != '';
break;
case "dpt":
$correspond = (substr($ligne_image->observation->ce_zone_geo, 0, 2) == $valeur);
break;
case "taxon":
$correspond = stristr($ligne_image->observation->nom_sel, $valeur) != '' |
stristr($ligne_image->observation->nom_ret, $valeur) != '';
break;
case "genre":
$correspond = stristr($ligne_image->observation->nom_sel, $valeur) != '' |
stristr($ligne_image->observation->nom_ret, $valeur) != '';
break;
case "mot_clef":
$correspond = stristr($ligne_image->observation->mot_cles_texte, $valeur);
break;
case "date":
$correspond = stristr($ligne_image->observation->date_observation, $valeur) != '' |
stristr($ligne_image->date_prise_de_vue, $valeur) != '';
break;
case "commune":
$correspond = stristr($ligne_image->observation->zone_geo, $valeur);
break;
case "famille":
$correspond = stristr($ligne_image->observation->famille, $valeur);
break;
case "tag":
$correspond = stristr($ligne_image->mots_cles_texte, $valeur);
break;
case "auteur":
$correspond = stristr($ligne_image->prenom_utilisateur, $valeur) != '' |
stristr($ligne_image->nom_utilisateur, $valeur) != '';
break;
}
if(!$correspond) break;
}
return $correspond;
}
private function comparerObservations($image_a, $image_b) {
$champ_tri = $this->champ_tri;