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; |