Line 24... |
Line 24... |
24 |
|
24 |
|
25 |
private $criteres = array(
|
25 |
private $criteres = array(
|
26 |
'auteur' => 'c.ci_ce_utilisateur',
|
26 |
'auteur' => 'c.ci_ce_utilisateur',
|
27 |
'commune' => 'b.location',
|
27 |
'commune' => 'b.location',
|
28 |
'departement' => 'b.id_location',
|
28 |
'departement' => 'b.id_location',
|
- |
|
29 |
'taxon' => 'b.nom_ret',
|
- |
|
30 |
'commentaire' => 'c.ci_meta_comment',
|
Line 29... |
Line 31... |
29 |
'taxon' => 'b.nom_ret');
|
31 |
'date' => 'c.ci_meta_date');
|
30 |
|
32 |
|
31 |
/**
|
33 |
/**
|
32 |
* Méthode appelée avec une requête de type GET.
|
34 |
* Méthode appelée avec une requête de type GET.
|
Line 62... |
Line 64... |
62 |
$this->format = '';
|
64 |
$this->format = '';
|
63 |
$this->messages[] = "Le service CEL Syndication nécessite d'indiquer en second paramètre le format : rss1, rss2 ou atom.";
|
65 |
$this->messages[] = "Le service CEL Syndication nécessite d'indiquer en second paramètre le format : rss1, rss2 ou atom.";
|
64 |
}
|
66 |
}
|
Line 65... |
Line 67... |
65 |
|
67 |
|
66 |
if (!isset($this->flux[$this->service]) || isset($this->format)) {
|
68 |
if (!isset($this->flux[$this->service]) || isset($this->format)) {
|
67 |
// Suppression des paramêtres inutile pour le reste des méthodes
|
69 |
// Suppression des deux premiers paramètres (service et format) pour le reste des méthodes
|
68 |
array_shift($this->parametres);
|
70 |
array_shift($this->parametres);
|
Line 69... |
Line 71... |
69 |
array_shift($this->parametres);
|
71 |
array_shift($this->parametres);
|
70 |
|
72 |
|
Line 89... |
Line 91... |
89 |
private function chargerListeDesFlux() {
|
91 |
private function chargerListeDesFlux() {
|
90 |
$this->setFlux('simple', 'Nouvelles images liées à une observation dans le CEL',
|
92 |
$this->setFlux('simple', 'Nouvelles images liées à une observation dans le CEL',
|
91 |
"Ce flux fournit l'url des nouvelles images du CEL liées à une observation.");
|
93 |
"Ce flux fournit l'url des nouvelles images du CEL liées à une observation.");
|
92 |
$this->setFlux('complet', 'Nouvelles images liées à une observation dans le CEL (détails)',
|
94 |
$this->setFlux('complet', 'Nouvelles images liées à une observation dans le CEL (détails)',
|
93 |
"Ce flux fournit les informations sur les nouvelles images du CEL liées à une observation.");
|
95 |
"Ce flux fournit les informations sur les nouvelles images du CEL liées à une observation.");
|
94 |
$this->setFlux('par-mots-cles', 'Flux de syndication des nouvelles images liées à une observation publique du CEL filtrées par mots clés',
|
96 |
$this->setFlux('par-mots-cles', 'Flux de syndication des nouvelles images liées à une observation publique du CEL ".
|
- |
|
97 |
"filtrées par mots clés',
|
95 |
"Ce flux fournit des informations sur les nouvelles images du CEL liées à une observation du CEL filtrées par mots-clés. Il nécessite d'être
|
98 |
"Ce flux fournit des informations sur les nouvelles images du CEL liées à une observation du CEL filtrées par ".
|
96 |
paramétré en indiquant en dernier position de l'url le mot-clé à rechercher.");
|
99 |
"mots-clés. Il nécessite d'être paramétré en indiquant en dernier position de l'url le mot-clé à rechercher.");
|
97 |
$this->setFlux('par-commune','Flux de syndication des nouvelles images liées à une observation publique du CEL filtrées par commune',
|
100 |
$this->setFlux('par-commune','Flux de syndication des nouvelles images liées à une observation publique du CEL ".
|
- |
|
101 |
"filtrées par commune',
|
98 |
"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par commune. Il nécessite d'être
|
102 |
"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par commune. ".
|
- |
|
103 |
"Il nécessite d'être paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
|
- |
|
104 |
$this->setFlux('multicriteres','Flux de syndication des nouvelles images liées à une observation publique du CEL '.
|
- |
|
105 |
'filtrées par un ou plusieurs critères',
|
- |
|
106 |
"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par ".
|
- |
|
107 |
"auteur (mail), commune (nom), departement (code postal), taxon (nom scientifique), commentaire, mots-clés ".
|
- |
|
108 |
"et/ou date. Il nécessite d'être
|
99 |
paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
|
109 |
paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
|
100 |
}
|
110 |
}
|
Line 101... |
Line 111... |
101 |
|
111 |
|
102 |
private function setFlux($nom, $titre, $description) {
|
112 |
private function setFlux($nom, $titre, $description) {
|
103 |
$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CoelSyndicationImage/';
|
113 |
$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CelSyndicationImage/';
|
104 |
$formats = array('atom', 'rss2', 'rss1');
|
114 |
$formats = array('atom', 'rss2', 'rss1');
|
105 |
$flux = array();
|
115 |
$flux = array();
|
106 |
foreach ($formats as $format) {
|
116 |
foreach ($formats as $format) {
|
107 |
$url = $url_base.$nom.'/'.$format;
|
117 |
$url = $url_base.$nom.'/'.$format;
|
Line 173... |
Line 183... |
173 |
$categorie = $this->nettoyerTexte($categorie);
|
183 |
$categorie = $this->nettoyerTexte($categorie);
|
174 |
return $categorie;
|
184 |
return $categorie;
|
175 |
}
|
185 |
}
|
Line 176... |
Line 186... |
176 |
|
186 |
|
177 |
private function etreFluxAdmin() {
|
187 |
private function etreFluxAdmin() {
|
178 |
return ($_GET['admin'] == '1') ? true : false;
|
188 |
return (isset($_GET['admin']) && $_GET['admin'] == '1') ? true : false;
|
Line 179... |
Line 189... |
179 |
}
|
189 |
}
|
180 |
|
190 |
|
181 |
private function creerUrlService() {
|
191 |
private function creerUrlService() {
|
Line 188... |
Line 198... |
188 |
$url_service .= '?'.implode('&', $parametres_get);
|
198 |
$url_service .= '?'.implode('&', $parametres_get);
|
189 |
}
|
199 |
}
|
190 |
return $url_service;
|
200 |
return $url_service;
|
191 |
}
|
201 |
}
|
Line 192... |
Line 202... |
192 |
|
202 |
|
193 |
protected function executerRequete($requete) {
|
203 |
protected function executerRequete($requete, $retour = 'All', $mode = PDO::FETCH_ASSOC) {
|
194 |
try {
|
204 |
try {
|
195 |
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
|
205 |
$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
|
196 |
if ($infos === false) {
|
206 |
if ($infos === false) {
|
197 |
$this->messages[] = "La requête suivante a retourné aucun résultat :\n$requete";
|
207 |
$this->messages[] = "La requête suivante a retourné aucun résultat :\n$requete";
|
Line 218... |
Line 228... |
218 |
|
228 |
|
219 |
private function construireDonneesCommunesAuFlux($infos) {
|
229 |
private function construireDonneesCommunesAuFlux($infos) {
|
220 |
$donnees = $this->getFlux($this->service);
|
230 |
$donnees = $this->getFlux($this->service);
|
221 |
$donnees['guid'] = $this->getUrlServiceBase();
|
231 |
$donnees['guid'] = $this->getUrlServiceBase();
|
- |
|
232 |
$donnees['lien_service'] = $this->creerUrlService();
|
222 |
$donnees['lien_service'] = $this->creerUrlService();
|
233 |
$donnees['lien_cel'] = (isset($infos['num_nom_sel'])) ?
|
223 |
$donnees['lien_cel'] = sprintf($this->config['settings']['efloreUrlTpl'], $infos['num_nom_sel'], 'illustration');
|
234 |
sprintf($this->config['settings']['efloreUrlTpl'], $infos['num_nom_sel'], 'illustration') : '';
|
224 |
$donnees['editeur'] = $this->config['settings']['editeur'];
|
235 |
$donnees['editeur'] = $this->config['settings']['editeur'];
|
225 |
$derniere_info_en_date = reset($infos);
|
236 |
$derniere_info_en_date = reset($infos);
|
226 |
$date_modification_timestamp = strtotime($derniere_info_en_date['ci_meta_date_ajout']);
|
237 |
$date_modification_timestamp = strtotime($derniere_info_en_date['ci_meta_date_ajout']);
|
227 |
$donnees['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
|
238 |
$donnees['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
|
228 |
$donnees['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
|
239 |
$donnees['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
|
229 |
$donnees['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
|
240 |
$donnees['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
|
230 |
$donnees['annee_courante'] = date('Y');
|
241 |
$donnees['annee_courante'] = date('Y');
|
231 |
$donnees['generateur'] = 'CEL - Jrest - CelSyndicationImage';
|
242 |
$donnees['generateur'] = 'CEL - Jrest - CelSyndicationImage';
|
232 |
preg_match('/([0-9]+)/', '$Revision$', $match);
|
- |
|
233 |
$donnees['generateur_version'] = $match[1];
|
243 |
$donnees['generateur_version'] = (preg_match('/([0-9]+)/', '$Revision$', $match)) ? $match[1] : '0';
|
234 |
return $donnees;
|
244 |
return $donnees;
|
Line 235... |
Line 245... |
235 |
}
|
245 |
}
|
236 |
|
246 |
|
Line 345... |
Line 355... |
345 |
return $description;
|
355 |
return $description;
|
346 |
}
|
356 |
}
|
Line 347... |
Line 357... |
347 |
|
357 |
|
348 |
private function getServiceComplet() {
|
358 |
private function getServiceComplet() {
|
349 |
// Construction de la requête
|
359 |
// Construction de la requête
|
350 |
$requete = (($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
|
360 |
$requete = (isset($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
|
351 |
' ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
|
361 |
' ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
|
352 |
'FROM cel_images AS cim '.
|
362 |
'FROM cel_images AS cim '.
|
353 |
' LEFT JOIN cel_obs_images AS coi '.
|
363 |
' LEFT JOIN cel_obs_images AS coi '.
|
354 |
' ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
|
364 |
' ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
|
355 |
' LEFT JOIN cel_inventory AS ci '.
|
365 |
' LEFT JOIN cel_inventory AS ci '.
|
356 |
' ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
|
366 |
' ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
|
357 |
(($this->etreFluxAdmin()) ? '' : 'WHERE ci.transmission = 1 ').
|
367 |
(($this->etreFluxAdmin()) ? '' : 'WHERE ci.transmission = 1 ').
|
358 |
'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'ci_meta_date_ajout DESC').' '.
|
368 |
'ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby : 'ci_meta_date_ajout DESC').' '.
|
Line 359... |
Line 369... |
359 |
"LIMIT $this->start, $this->limit ";
|
369 |
"LIMIT $this->start, $this->limit ";
|
Line 360... |
Line 370... |
360 |
|
370 |
|
Line 369... |
Line 379... |
369 |
|
379 |
|
370 |
return $contenu;
|
380 |
return $contenu;
|
Line 371... |
Line 381... |
371 |
}
|
381 |
}
|
372 |
|
- |
|
373 |
private function getServiceMultiCriteres() {
|
- |
|
374 |
if (! $this->estUneRechercheGenerale()) {
|
- |
|
375 |
$criteres = $this->traiterCriteresMultiples($_GET);
|
382 |
|
376 |
|
- |
|
377 |
if (empty($criteres)) {
|
- |
|
378 |
return $contenu = $this->executerService(array());
|
- |
|
379 |
}
|
- |
|
380 |
}
|
383 |
private function getServiceMultiCriteres() {
|
381 |
|
384 |
$contenu = '';
|
382 |
if (isset($_GET['debut'])) {
|
385 |
if (isset($_GET['debut'])) {
|
Line 383... |
Line 386... |
383 |
$this->start = $_GET['debut'];
|
386 |
$this->start = $_GET['debut'];
|
Line 401... |
Line 404... |
401 |
if ($this->estUneRechercheGenerale()) {
|
404 |
if ($this->estUneRechercheGenerale()) {
|
402 |
$chaine_requete = $_GET['recherche'];
|
405 |
$chaine_requete = $_GET['recherche'];
|
403 |
$sous_requete = $this->creerSousRequeteRechercheGenerale($chaine_requete);
|
406 |
$sous_requete = $this->creerSousRequeteRechercheGenerale($chaine_requete);
|
404 |
} else {
|
407 |
} else {
|
405 |
$criteres = $this->traiterCriteresMultiples($_GET) ;
|
408 |
$criteres = $this->traiterCriteresMultiples($_GET) ;
|
- |
|
409 |
if (empty($criteres)) {
|
- |
|
410 |
$sous_requete = '';
|
- |
|
411 |
}
|
406 |
$sous_requete = $this->creerSousRequeteRechercheParCriteres($criteres);
|
412 |
$sous_requete = $this->creerSousRequeteRechercheParCriteres($criteres);
|
407 |
}
|
413 |
}
|
Line 408... |
Line 414... |
408 |
|
414 |
|
409 |
$requete .= $sous_requete;
|
415 |
$requete .= $sous_requete;
|
410 |
$requete = rtrim($requete, 'AND ');
|
416 |
$requete = rtrim($requete, 'AND ');
|
411 |
$requete .= ' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby : 'c.ci_meta_date_ajout DESC').' ';
|
417 |
$requete .= ' ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby :
|
Line 412... |
Line 418... |
412 |
$requete .= "LIMIT $this->start,$this->limit ";
|
418 |
'c.ci_meta_date_ajout DESC').' '."LIMIT $this->start,$this->limit ";
|
Line 413... |
Line 419... |
413 |
|
419 |
|
414 |
$elements = $this->executerRequete($requete);
|
420 |
$elements = $this->executerRequete($requete);
|
415 |
|
421 |
|
416 |
// Création du contenu
|
422 |
// Création du contenu
|
417 |
if ($elements != false && count($elements) > 0) {
|
423 |
if ($elements != false && count($elements) > 0) {
|
418 |
$contenu = $this->executerService($elements);
|
424 |
$contenu = $this->executerService($elements);
|
Line 419... |
Line 425... |
419 |
} else {
|
425 |
} else {
|
420 |
$this->messages[] = "Aucune image disponible.";
|
426 |
$this->messages[] = "Aucune image disponible.$requete";
|
Line 421... |
Line 427... |
421 |
}
|
427 |
}
|
422 |
|
428 |
|
423 |
return $contenu;
|
429 |
return $contenu;
|
424 |
}
|
430 |
}
|
425 |
|
431 |
|
426 |
private function creerSousRequeteRechercheParCriteres($criteres) {
|
432 |
private function creerSousRequeteRechercheParCriteres($criteres) {
|
427 |
$requete = '';
|
433 |
$requete = '';
|
428 |
foreach ($criteres as $pair) {
|
- |
|
429 |
$nom_valeur = explode("=",$pair);
|
434 |
foreach ($criteres as $pair) {
|
430 |
if (sizeof($nom_valeur) != 0) {
|
- |
|
431 |
if ($nom_valeur[0] == "ci_limite") {
|
435 |
$nom_valeur = explode("=",$pair);
|
432 |
$this->limite = $this->bdd->quote($nom_valeur[1]);
|
- |
|
433 |
} elseif ($nom_valeur[0] == "c.ci_numero_page") {
|
436 |
if (sizeof($nom_valeur) != 0) {
|
434 |
$this->start = $this->limite*$this->bdd->quote($nom_valeur[1]);
|
437 |
switch ($nom_valeur[0]) {
|
435 |
} elseif ($nom_valeur[0] == "c.ci_meta_comment") {
|
438 |
case "ci_limite" : $this->limite = $this->bdd->quote($nom_valeur[1]); break;
|
436 |
$mots_comment_liste = explode(" " , $nom_valeur[1]);
|
- |
|
437 |
|
439 |
case "c.ci_numero_page" : $this->limite*$this->bdd->quote($nom_valeur[1]); break;
|
438 |
foreach($mots_comment_liste as $mot_comment) {
|
440 |
case "c.ci_meta_comment" : $mots_comment_liste = explode(" " , $nom_valeur[1]);
|
439 |
$mot_comment = trim($mot_comment) ;
|
- |
|
440 |
$requete .= $nom_valeur[0].' LIKE "%'.$this->bdd->quote($mot_comment).'%"';
|
441 |
foreach($mots_comment_liste as $mot_comment) {
|
441 |
$requete .= ' AND ';
|
442 |
$mot_comment = trim($mot_comment) ;
|
442 |
}
|
- |
|
443 |
} elseif ($nom_valeur[0] == "c.ci_meta_date") {
|
443 |
$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote('%'.$mot_comment.'%').' AND ';
|
444 |
$requete .= 'DATE_FORMAT( '.$nom_valeur[0].', \'%Y-%m-%d\' ) = "'.$this->bdd->quote($nom_valeur[1]).'"';
|
444 |
}
|
445 |
$requete .= ' AND ';
|
445 |
break;
|
446 |
} elseif ($nom_valeur[0] == "b.nom_ret") {
|
- |
|
447 |
|
- |
|
448 |
if ($nom_valeur[1] == "indetermine") {
|
446 |
case "c.ci_meta_date" :
|
449 |
$nom_valeur[1] = 'null';
|
447 |
$nom_valeur[1] = str_replace('/', '-', $nom_valeur[1]);
|
- |
|
448 |
if (preg_match('/(^[0-9]{2})-([0-9]{2})-([0-9]{4}$)/', $nom_valeur[1], $matches)) {
|
450 |
}
|
449 |
$nom_valeur[1] = $matches[3].'-'.$matches[2].'-'.$matches[1];
|
451 |
|
450 |
}
|
452 |
$requete .= ' (';
|
- |
|
453 |
$requete .= $nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%"';
|
- |
|
454 |
$requete .= ' OR ';
|
451 |
$requete .= $nom_valeur[0].'='.$this->bdd->quote($nom_valeur[1]).' AND '; break;
|
455 |
$requete .= 'b.nom_sel LIKE "%'.$nom_valeur[1].'%"';
|
- |
|
456 |
$requete .= ') AND ';
|
452 |
case "b.nom_ret" :
|
457 |
|
453 |
if ($nom_valeur[1] == "indetermine") $nom_valeur[1] = 'null';
|
458 |
} else {
|
454 |
$requete .= ' ('.$nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%" OR b.nom_sel LIKE "%'.
|
459 |
$requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'"';
|
455 |
$nom_valeur[1].'%") AND '; break;
|
460 |
$requete .= ' AND ';
|
456 |
default : $requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'" AND '; break;
|