Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 602 → Rev 603

/trunk/jrest/services/CelSyndicationImage.php
322,7 → 322,11
}
private function creerTitreSimple($element) {
$titre = $element['nom_sel'].' [nn'.$element['num_nom_sel'].'] par '.$this->creerAuteur($element['identifiant'], $this->etreFluxAdmin());
if ($this->etreNull($element['nom_sel']) && $this->etreNull($element['num_nom_sel'])) {
$titre = "Ajout d'une photo par ".$this->creerAuteur($element['ci_ce_utilisateur'], $this->etreFluxAdmin());
} else {
$titre = $element['nom_sel'].' [nn'.$element['num_nom_sel'].'] par '.$this->creerAuteur($element['ci_ce_utilisateur'], $this->etreFluxAdmin());
}
return $titre;
}
334,7 → 338,7
private function getServiceComplet() {
// Construction de la requête
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
' ci_id_image, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
' ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
'FROM cel_images AS cim '.
' LEFT JOIN cel_obs_images AS coi '.
' ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
357,39 → 361,36
}
private function getServiceMultiCriteres() {
if(!$this->estUneRechercheGenerale()) {
 
if (! $this->estUneRechercheGenerale()) {
$criteres = $this->traiterCriteresMultiples($_GET);
if(empty($criteres)) {
if (empty($criteres)) {
return $contenu = $this->executerService(array());
}
}
if(isset($_GET['debut'])) {
if (isset($_GET['debut'])) {
$this->start = $_GET['debut'];
}
if(isset($_GET['limite'])) {
if (isset($_GET['limite'])) {
$this->limite = $_GET['limite'];
}
// Construction de la requête
$requete = 'SELECT * ';
$jointure = 'FROM cel_obs_images a '.
'INNER JOIN cel_inventory b '.
'ON a.coi_ce_observation = b.ordre AND a.coi_ce_utilisateur = b.identifiant '.
'INNER JOIN cel_images c '.
'ON a.coi_ce_image = c.ci_id_image AND a.coi_ce_utilisateur = c.ci_ce_utilisateur '.
'WHERE b.transmission = 1 AND b.identifiant = c.ci_ce_utilisateur AND ';
$requete = 'SELECT * '.
'FROM cel_obs_images a '.
' INNER JOIN cel_inventory b '.
' ON (a.coi_ce_observation = b.ordre AND a.coi_ce_utilisateur = b.identifiant) '.
' INNER JOIN cel_images c '.
' ON (a.coi_ce_image = c.ci_id_image AND a.coi_ce_utilisateur = c.ci_ce_utilisateur) '.
'WHERE b.transmission = 1 '.
' AND b.identifiant = c.ci_ce_utilisateur '.
' AND ';
$requete .= $jointure;
if($this->estUneRechercheGenerale()) {
if ($this->estUneRechercheGenerale()) {
$chaine_requete = $_GET['recherche'];
$sous_requete = $this->creerSousRequeteRechercheGenerale($chaine_requete) ;
$sous_requete = $this->creerSousRequeteRechercheGenerale($chaine_requete);
} else {
$criteres = $this->traiterCriteresMultiples($_GET) ;
$sous_requete = $this->creerSousRequeteRechercheParCriteres($criteres);
396,9 → 397,7
}
$requete .= $sous_requete;
$requete= rtrim($requete,'AND ');
 
$requete = rtrim($requete, 'AND ');
$requete .= ' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'c.ci_meta_date_ajout DESC').' ';
$requete .= "LIMIT $this->start,$this->limit ";
415,108 → 414,74
}
private function creerSousRequeteRechercheParCriteres($criteres) {
$requete = '';
foreach($criteres as $pair)
{
$nom_valeur = explode("=",$pair) ;
foreach ($criteres as $pair) {
$nom_valeur = explode("=",$pair);
if (sizeof($nom_valeur) != 0) {
if ($nom_valeur[0] == "ci_limite") {
$this->limite = $this->bdd->quote($nom_valeur[1]);
} elseif ($nom_valeur[0] == "c.ci_numero_page") {
$this->start = $this->limite*$this->bdd->quote($nom_valeur[1]);
} elseif ($nom_valeur[0] == "c.ci_meta_mots_cles") {
$mots_cles = rtrim($nom_valeur[1], ',');
$mots_cles_liste = explode("," , $mots_cles);
 
if(sizeof($nom_valeur) != 0)
{
if($nom_valeur[0] == "ci_limite")
{
$this->limite = $this->bdd->quote($nom_valeur[1]) ;
foreach ($mots_cles_liste as $mot_cle) {
$requete .= $nom_valeur[0].' LIKE "%'.$this->bdd->quote($mot_cle).'%"';
$requete .= ' AND ';
}
elseif($nom_valeur[0] == "c.ci_numero_page")
{
$this->start = $this->limite*$this->bdd->quote($nom_valeur[1]) ;
}
elseif($nom_valeur[0] == "c.ci_meta_mots_cles")
{
$mots_cles = rtrim($nom_valeur[1], ',') ;
$mots_cles_liste = explode("," , $mots_cles) ;
} elseif ($nom_valeur[0] == "c.ci_meta_comment") {
$mots_comment_liste = explode(" " , $nom_valeur[1]);
 
foreach($mots_cles_liste as $mot_cle)
{
$requete .= $nom_valeur[0].' LIKE "%'.$this->bdd->quote($mot_cle).'%"' ;
$requete .= ' AND ' ;
}
foreach($mots_comment_liste as $mot_comment) {
$mot_comment = trim($mot_comment) ;
$requete .= $nom_valeur[0].' LIKE "%'.$this->bdd->quote($mot_comment).'%"';
$requete .= ' AND ';
}
elseif($nom_valeur[0] == "c.ci_meta_comment")
{
$mots_comment_liste = explode(" " , $nom_valeur[1]) ;
 
foreach($mots_comment_liste as $mot_comment)
{
$mot_comment = trim($mot_comment) ;
$requete .= $nom_valeur[0].' LIKE "%'.$this->bdd->quote($mot_comment).'%"' ;
$requete .= ' AND ' ;
}
} elseif ($nom_valeur[0] == "c.ci_meta_date") {
$requete .= 'DATE_FORMAT( '.$nom_valeur[0].', \'%Y-%m-%d\' ) = "'.$this->bdd->quote($nom_valeur[1]).'"';
$requete .= ' AND ';
} elseif ($nom_valeur[0] == "c.ci_id_tampon") {
$ids_tampon = rtrim($nom_valeur[1], ',');
$requete .= 'c.ci_id_image IN ( '.$this->bdd->quote($ids_tampon).')' ;
} elseif ($nom_valeur[0] == "b.nom_ret") {
if ($nom_valeur[1] == "indetermine") {
$nom_valeur[1] = 'null';
}
elseif($nom_valeur[0] == "c.ci_meta_date")
{
$requete .= 'DATE_FORMAT( '.$nom_valeur[0].', \'%Y-%m-%d\' ) = "'.$this->bdd->quote($nom_valeur[1]).'"' ;
$requete .= ' AND ' ;
}
elseif($nom_valeur[0] == "c.ci_id_tampon")
{
$ids_tampon = rtrim($nom_valeur[1], ',') ;
$requete .= 'c.ci_id_image IN ( '.$this->bdd->quote($ids_tampon).')' ;
}
elseif($nom_valeur[0] == "b.nom_ret")
{
if($nom_valeur[1] == "indetermine") {
$nom_valeur[1] = 'null';
}
$requete .= ' (';
$requete .= $nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%"' ;
$requete .= ' OR ' ;
$requete .= 'b.nom_sel LIKE "%'.$nom_valeur[1].'%"' ;
$requete .= ') AND ' ;
} else
{
$requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'"' ;
$requete .= '" AND ' ;
}
$requete .= ' (';
$requete .= $nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%"';
$requete .= ' OR ';
$requete .= 'b.nom_sel LIKE "%'.$nom_valeur[1].'%"';
$requete .= ') AND ';
} else {
$requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'"';
$requete .= '" AND ';
}
}
}
$requete = rtrim($requete,' AND ') ;
$requete = rtrim($requete,' AND ');
return $requete;
}
private function creerSousRequeteRechercheGenerale($chaine_requete) {
if(trim($chaine_requete) == '') {
return '';
$requete = '';
if (trim($chaine_requete) != '') {
$chaine_requete = strtolower($chaine_requete);
$chaine_requete = str_replace(' ', '_', $chaine_requete);
$requete = ' ('.
'b.nom_ret LIKE "'.$chaine_requete.'%"'.
' OR '.
'b.nom_sel LIKE "'.$chaine_requete.'%"'.
' OR '.
'b.location LIKE "'.$chaine_requete.'%" '.
' OR '.
'b.id_location LIKE "'.$chaine_requete.'%" '.
' OR '.
'c.ci_ce_utilisateur LIKE "'.$chaine_requete.'%" '.
') ';
}
$chaine_requete = strtolower($chaine_requete);
$chaine_requete = str_replace(' ','_',$chaine_requete);
$requete = ' (';
$requete .= 'b.nom_ret LIKE "'.$chaine_requete.'%"' ;
$requete .= ' OR ' ;
$requete .= 'b.nom_sel LIKE "'.$chaine_requete.'%"' ;
$requete .= ' OR ' ;
 
$requete .= 'b.location LIKE "'.$chaine_requete.'%" ' ;
$requete .= ' OR ' ;
$requete .= 'b.id_location LIKE "'.$chaine_requete.'%" ' ;
$requete .= ' OR ' ;
$requete .= 'c.ci_ce_utilisateur LIKE "'.$chaine_requete.'%" ' ;
$requete .= ') ';
return $requete;
}
525,21 → 490,18
}
private function traiterCriteresMultiples($tableau_criteres) {
$tableau_criteres_pour_bdd = array();
foreach($tableau_criteres as $nom_critere => $valeur_critere) {
if(isset($this->criteres[$nom_critere])) {
if (isset($this->criteres[$nom_critere])) {
$tableau_criteres_pour_bdd[] = $this->criteres[$nom_critere].'='.$valeur_critere;
}
}
return $tableau_criteres_pour_bdd;
}
 
private function creerDescriptionComplet($donnees, $item) {
$auteur = $this->creerAuteur($donnees['identifiant'], $this->etreFluxAdmin());
$auteur = $this->creerAuteur($donnees['ci_ce_utilisateur'], $this->etreFluxAdmin());
$id_img = $donnees['ci_id_image'];
$nom_fichier = $donnees['ci_nom_original'];
564,7 → 526,7
$transmission = $donnees['transmission'] == 1 ? "oui ($date_transmission)" : 'non';
$description = '<style>.champ{color:grey} .gauche{float:left;padding:0 20px 0 0;} ul{list-style-type:none;padding:0;}</style>'.
'<h2>'."Image #$id_img liée à l'observation #$id_obs".'</h2>'.
'<h2>'.(!$this->etreNull($id_obs) ? "Image #$id_img liée à l'observation #$id_obs" : "Image #$id_img non liée à une observation.").'</h2>'.
'<img class="gauche" src="'.$url_img.'" alt="'.$nom_fichier.'" />'.
'<div class="gauche">'.
'<h3>'.'Image'.'</h3>'.
578,25 → 540,28
'<li>'.'<span class="champ">Commentaires :</span> '.$commentaire_img.'</li>'.
'<li>'.'<span class="champ">Mots-clés :</span> '.implode(', ', $mots_cles_image).'</li>'.
'</ul>'.
'</div>'.
'</div>';
// TODO : ajouter le champ commentaire EXIF.
'<div class="gauche">'.
'<h3>'.'Observation'.'</h3>'.
'<ul>'.
'<li>'.'<span class="champ">Famille :</span> '.$famille.'</li>'.
'<li>'.'<span class="champ">Nom saisi :</span> '.$nom_saisi.'</li>'.
'<li>'.'<span class="champ">Nom retenu :</span> '.$nom_retenu.'</li>'.
'<li>'.'<span class="champ">Observée le :</span> '.$date_observation.'</li>'.
'<li>'.'<span class="champ">Lieu :</span> '.$lieu.'</li>'.
'<li>'.'<span class="champ">Milieu :</span> '.$milieu.'</li>'.
(($this->etreFluxAdmin()) ? '<li><span class="champ">Coordonnées (Lat/Long) :</span> '.$coordonnees.'</li>' : '').
'<li>'.'<span class="champ">Commentaire :</span> '.$commentaire_obs.'</li>'.
'<li>'.'<span class="champ">Mots-clés :</span> '.implode(', ', $mots_cles_obs).'</li>'.
(($this->etreFluxAdmin()) ? '<li><span class="champ">Transmis (= public) :</span> '.$transmission.'</li>' : '').
'<li><span class="champ">Modifiée le :</span> '.$date_modification.'</li>'.
'<li><span class="champ">Créée le :</span> '.$date_creation.'</li>'.
'</ul>'.
'</div>';
if (! $this->etreNull($id_obs)) {
$description .=
'<div class="gauche">'.
'<h3>'.'Observation'.'</h3>'.
'<ul>'.
'<li>'.'<span class="champ">Famille :</span> '.$famille.'</li>'.
'<li>'.'<span class="champ">Nom saisi :</span> '.$nom_saisi.'</li>'.
'<li>'.'<span class="champ">Nom retenu :</span> '.$nom_retenu.'</li>'.
'<li>'.'<span class="champ">Observée le :</span> '.$date_observation.'</li>'.
'<li>'.'<span class="champ">Lieu :</span> '.$lieu.'</li>'.
'<li>'.'<span class="champ">Milieu :</span> '.$milieu.'</li>'.
(($this->etreFluxAdmin()) ? '<li><span class="champ">Coordonnées (Lat/Long) :</span> '.$coordonnees.'</li>' : '').
'<li>'.'<span class="champ">Commentaire :</span> '.$commentaire_obs.'</li>'.
'<li>'.'<span class="champ">Mots-clés :</span> '.implode(', ', $mots_cles_obs).'</li>'.
(($this->etreFluxAdmin()) ? '<li><span class="champ">Transmis (= public) :</span> '.$transmission.'</li>' : '').
'<li><span class="champ">Modifiée le :</span> '.$date_modification.'</li>'.
'<li><span class="champ">Créée le :</span> '.$date_creation.'</li>'.
'</ul>'.
'</div>';
}
$description = $this->nettoyerTexte($description);
return $description;
}
624,7 → 589,7
// Construction de la requête
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
' ci_id_image, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
' ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
'FROM cel_images AS cim '.
' LEFT JOIN cel_obs_images AS coi '.
' ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
655,7 → 620,7
// Construction de la requête
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
' ci_id_image, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
' ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
'FROM cel_images AS cim '.
' LEFT JOIN cel_obs_images AS coi '.
' ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.