| Line 8... |
Line 8... |
| 8 |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
|
8 |
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
|
| 9 |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
|
9 |
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
|
| 10 |
* @version $Id$
|
10 |
* @version $Id$
|
| 11 |
* @copyright 2010
|
11 |
* @copyright 2010
|
| 12 |
*/
|
12 |
*/
|
| - |
|
13 |
// TODO : résoudre le problème des images liées à plusieurs obs. Cela créé plusieurs item avec le même id pour atom...
|
| 13 |
class CelSyndicationImage extends Cel {
|
14 |
class CelSyndicationImage extends Cel {
|
| Line -... |
Line 15... |
| - |
|
15 |
|
| 14 |
|
16 |
private $parametres_origines = null;
|
| 15 |
private $format = null;
|
17 |
private $format = null;
|
| 16 |
private $service = null;
|
18 |
private $service = null;
|
| 17 |
private $squelette = null;
|
19 |
private $squelette = null;
|
| 18 |
private $squelette_dossier = null;
|
20 |
private $squelette_dossier = null;
|
| Line 23... |
Line 25... |
| 23 |
/**
|
25 |
/**
|
| 24 |
* Méthode appelée avec une requête de type GET.
|
26 |
* Méthode appelée avec une requête de type GET.
|
| 25 |
*/
|
27 |
*/
|
| 26 |
public function getElement($params = array()) {
|
28 |
public function getElement($params = array()) {
|
| 27 |
// Initialisation des variables
|
29 |
// Initialisation des variables
|
| - |
|
30 |
$this->parametres_origines = $params;
|
| 28 |
$info = array();
|
31 |
$info = array();
|
| 29 |
$contenu = '';
|
32 |
$contenu = '';
|
| Line 30... |
Line 33... |
| 30 |
|
33 |
|
| 31 |
if (! $this->etreFluxAdmin() || $this->authentifier()) {
|
34 |
if (! $this->etreFluxAdmin() || $this->authentifier()) {
|
| Line 80... |
Line 83... |
| 80 |
private function chargerListeDesFlux() {
|
83 |
private function chargerListeDesFlux() {
|
| 81 |
$this->setFlux('simple', 'Nouvelles images liées à une observation dans le CEL',
|
84 |
$this->setFlux('simple', 'Nouvelles images liées à une observation dans le CEL',
|
| 82 |
"Ce flux fournit l'url des nouvelles images du CEL liées à une observation.");
|
85 |
"Ce flux fournit l'url des nouvelles images du CEL liées à une observation.");
|
| 83 |
$this->setFlux('complet', 'Nouvelles images liées à une observation dans le CEL (détails)',
|
86 |
$this->setFlux('complet', 'Nouvelles images liées à une observation dans le CEL (détails)',
|
| 84 |
"Ce flux fournit les informations sur les nouvelles images du CEL liées à une observation.");
|
87 |
"Ce flux fournit les informations sur les nouvelles images du CEL liées à une observation.");
|
| - |
|
88 |
$this->setFlux('par-mots-cles', 'Flux de syndication des nouvelles images liées à une observation publique du CEL filtrées par mots clés',
|
| - |
|
89 |
"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
|
| - |
|
90 |
paramétré en indiquant en dernier position de l'url le mot-clé à rechercher.");
|
| - |
|
91 |
$this->setFlux('par-commune','Flux de syndication des nouvelles images liées à une observation publique du CEL filtrées par commune',
|
| - |
|
92 |
"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par commune. Il nécessite d'être
|
| - |
|
93 |
paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
|
| 85 |
}
|
94 |
}
|
| Line 86... |
Line 95... |
| 86 |
|
95 |
|
| 87 |
private function setFlux($nom, $titre, $description) {
|
96 |
private function setFlux($nom, $titre, $description) {
|
| 88 |
$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CoelSyndicationImage/';
|
97 |
$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CoelSyndicationImage/';
|
| Line 115... |
Line 124... |
| 115 |
$url_base = sprintf($this->config['settings']['baseURLAbsoluDyn'], get_class($this).'/');
|
124 |
$url_base = sprintf($this->config['settings']['baseURLAbsoluDyn'], get_class($this).'/');
|
| 116 |
return $url_base;
|
125 |
return $url_base;
|
| 117 |
}
|
126 |
}
|
| Line 118... |
Line 127... |
| 118 |
|
127 |
|
| 119 |
private function getUrlServiceBase() {
|
128 |
private function getUrlServiceBase() {
|
| 120 |
$url_service = $this->getUrlBase().$this->service.'/'.$this->format;
|
129 |
$url_service = $this->getUrlBase().implode('/', $this->parametres_origines);
|
| 121 |
return $url_service;
|
130 |
return $url_service;
|
| Line 122... |
Line 131... |
| 122 |
}
|
131 |
}
|
| 123 |
|
132 |
|
| Line 149... |
Line 158... |
| 149 |
default:
|
158 |
default:
|
| 150 |
$json = false;
|
159 |
$json = false;
|
| 151 |
}
|
160 |
}
|
| 152 |
return $json;
|
161 |
return $json;
|
| 153 |
}
|
162 |
}
|
| - |
|
163 |
|
| - |
|
164 |
private function creerCategorie($element) {
|
| - |
|
165 |
$categorie = '';
|
| - |
|
166 |
$categorie = 'Image';
|
| - |
|
167 |
$categorie = $this->nettoyerTexte($categorie);
|
| - |
|
168 |
return $categorie;
|
| - |
|
169 |
}
|
| Line 154... |
Line 170... |
| 154 |
|
170 |
|
| 155 |
private function etreFluxAdmin() {
|
171 |
private function etreFluxAdmin() {
|
| 156 |
return ($_GET['admin'] == '1') ? true : false;
|
172 |
return ($_GET['admin'] == '1') ? true : false;
|
| Line 157... |
Line 173... |
| 157 |
}
|
173 |
}
|
| 158 |
|
174 |
|
| 159 |
private function creerUrlService() {
|
- |
|
| 160 |
$url_service = $this->getUrlServiceBase();
|
- |
|
| 161 |
if (isset($this->start) || isset($this->limit)) {
|
- |
|
| 162 |
$arguments = array();
|
- |
|
| 163 |
if (isset($this->start) && isset($_GET['start'])) {
|
- |
|
| 164 |
$arguments[] = 'start='.$this->start;
|
- |
|
| 165 |
}
|
- |
|
| 166 |
if (isset($this->limit) && isset($_GET['limit'])) {
|
- |
|
| 167 |
$arguments[] = 'limit='.$this->limit;
|
175 |
private function creerUrlService() {
|
| 168 |
}
|
176 |
$url_service = $this->getUrlServiceBase();
|
| 169 |
if (count($arguments) > 0) {
|
- |
|
| 170 |
$url_service .= '?'.implode('&', $arguments);
|
177 |
if (count($_GET) > 0) {
|
| 171 |
}
|
178 |
$url_service .= '?'.implode('&', $_GET);
|
| 172 |
}
|
179 |
}
|
| Line 173... |
Line 180... |
| 173 |
return $url_service;
|
180 |
return $url_service;
|
| Line 217... |
Line 224... |
| 217 |
return $donnees;
|
224 |
return $donnees;
|
| 218 |
}
|
225 |
}
|
| Line 219... |
Line 226... |
| 219 |
|
226 |
|
| 220 |
private function construireDonneesCommunesAuxItems($info) {
|
227 |
private function construireDonneesCommunesAuxItems($info) {
|
| 221 |
$item = array();
|
228 |
$item = array();
|
| 222 |
$date_modification_timestamp = strtotime($info['ci_meta_date_ajout']);
|
229 |
$date_modification_timestamp = $this->convertirDateHeureMysqlEnTimestamp($info['ci_meta_date_ajout']);
|
| 223 |
$item['date_maj_simple'] = strftime('%A %d %B %Y à %H:%M', $date_modification_timestamp);
|
230 |
$item['date_maj_simple'] = strftime('%A %d %B %Y à %H:%M', $date_modification_timestamp);
|
| 224 |
$item['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
|
231 |
$item['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
|
| 225 |
$item['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
|
232 |
$item['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
|
| 226 |
$item['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
|
233 |
$item['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
|
| 227 |
$item['titre'] = $this->creerTitre($info);
|
234 |
$item['titre'] = $this->creerTitre($info);
|
| 228 |
$item['guid'] = $this->creerGuidItem($info);
|
235 |
$item['guid'] = $this->creerGuidItem($info);
|
| 229 |
$item['lien'] = $this->creerLienItem($info);
|
236 |
$item['lien'] = $this->creerLienItem($info);
|
| - |
|
237 |
$item['categorie'] = $this->creerCategorie($item);
|
| 230 |
$item['description'] = $this->creerDescription($info, $item);
|
238 |
$item['description'] = $this->creerDescription($this->protegerCaracteresHtmlDansChamps($info), $item);
|
| - |
|
239 |
$item['description_encodee'] = htmlspecialchars($this->creerDescription($info, $item));
|
| 231 |
$item['description_encodee'] = htmlspecialchars($item['description']);
|
240 |
$item['modifier_par'] = $this->creerAuteur($info['identifiant'], $this->etreFluxAdmin());
|
| 232 |
return $item;
|
241 |
return $item;
|
| Line 233... |
Line 242... |
| 233 |
}
|
242 |
}
|
| 234 |
|
243 |
|
| 235 |
private function creerGuidItem($element) {
|
244 |
private function creerGuidItem($element) {
|
| 236 |
$guid = sprintf($this->config['settings']['guidImgTpl'], $element['ci_id_image']);
|
245 |
$guid = $this->getUrlImage($element['ci_id_image']);
|
| Line 237... |
Line 246... |
| 237 |
return $guid;
|
246 |
return $guid;
|
| 238 |
}
|
247 |
}
|
| Line 339... |
Line 348... |
| 339 |
|
348 |
|
| 340 |
return $contenu;
|
349 |
return $contenu;
|
| Line 341... |
Line 350... |
| 341 |
}
|
350 |
}
|
| - |
|
351 |
|
| - |
|
352 |
private function creerDescriptionComplet($donnees, $item) {
|
| 342 |
|
353 |
$auteur = $this->creerAuteur($donnees['identifiant'], $this->etreFluxAdmin());
|
| 343 |
private function creerDescriptionComplet($donnees, $item) {
|
354 |
|
| 344 |
$id_img = $donnees['ci_id_image'];
|
355 |
$id_img = $donnees['ci_id_image'];
|
| 345 |
$id_obs = $donnees['id'];
|
- |
|
| 346 |
$url_img = $this->getUrlImage($donnees['ci_id_image'], 'M');
|
- |
|
| 347 |
$auteur = $this->creerAuteur($donnees['identifiant'], $this->etreFluxAdmin());
|
356 |
$nom_fichier = $donnees['ci_nom_original'];
|
| - |
|
357 |
$url_img = $this->getUrlImage($donnees['ci_id_image'], 'M');
|
| - |
|
358 |
$mots_cles_image = $this->decoderMotsClesImg($donnees['identifiant'], $donnees['ci_meta_mots_cles']);
|
| - |
|
359 |
$note = ($donnees['ci_note_image'] +1).'/5';
|
| - |
|
360 |
$commentaire_img = $donnees['ci_meta_comment'];
|
| - |
|
361 |
|
| - |
|
362 |
$id_obs = $donnees['id'];
|
| - |
|
363 |
$famille = $donnees['famille'];
|
| - |
|
364 |
$nom_saisi = $donnees['nom_sel'];
|
| 348 |
$mots_cles_obs = $this->decoderMotsClesObs($donnees['identifiant'], $donnees['mots_cles']);
|
365 |
$nom_retenu = $donnees['nom_ret'];
|
| - |
|
366 |
$mots_cles_obs = $this->decoderMotsClesObs($donnees['identifiant'], $donnees['mots_cles']);
|
| 349 |
$mots_cles_image = $this->decoderMotsClesImg($donnees['identifiant'], $donnees['ci_meta_mots_cles']);
|
367 |
$lieu = $donnees['location'].' ('.$donnees['id_location'].') > '.$donnees['lieudit'].' > '.$donnees['station'];
|
| - |
|
368 |
$milieu = $donnees['milieu'];
|
| 350 |
$lieu = $donnees['location'].' ('.$donnees['id_location'].') > '.$donnees['lieudit'].' > '.$donnees['station'];
|
369 |
$coordonnees = ($this->etreNull($donnees['coord_x']) && $this->etreNull($donnees['coord_y'])) ? '' : $donnees['coord_x'].'/'.$donnees['coord_y'];
|
| 351 |
$coordonnees = ($this->etreNull($donnees['coord_x']) && $this->etreNull($donnees['coord_y'])) ? '' : $donnees['coord_x'].'/'.$donnees['coord_y'];
|
370 |
$commentaire_obs = $donnees['commentaire'];
|
| 352 |
$date_observation = $this->formaterDate($donnees['date_observation'], '%A %d %B %Y');
|
371 |
$date_observation = $this->formaterDate($donnees['date_observation'], '%A %d %B %Y');
|
| 353 |
$date_transmission = $this->formaterDate($donnees['date_transmission']);
|
372 |
$date_transmission = $this->formaterDate($donnees['date_transmission']);
|
| 354 |
$date_modification = $this->formaterDate($donnees['date_modification']);
|
373 |
$date_modification = $this->formaterDate($donnees['date_modification']);
|
| Line 355... |
Line 374... |
| 355 |
$date_creation = $this->formaterDate($donnees['date_creation']);
|
374 |
$date_creation = $this->formaterDate($donnees['date_creation']);
|
| 356 |
$transmission = $donnees['transmission'] == 1 ? "oui ($date_transmission)" : 'non';
|
375 |
$transmission = $donnees['transmission'] == 1 ? "oui ($date_transmission)" : 'non';
|
| 357 |
|
376 |
|
| 358 |
$description = '<style>.champ{color:grey} .gauche{float:left;padding:0 20px 0 0;} ul{list-style-type:none;padding:0;}</style>'.
|
377 |
$description = '<style>.champ{color:grey} .gauche{float:left;padding:0 20px 0 0;} ul{list-style-type:none;padding:0;}</style>'.
|
| 359 |
'<h2>'."Image #$id_img liée à l'observation #$id_obs".'</h2>'.
|
378 |
'<h2>'."Image #$id_img liée à l'observation #$id_obs".'</h2>'.
|
| 360 |
'<img class="gauche" src="'.$url_img.'" alt="'.$donnees['ci_nom_original'].'" />'.
|
379 |
'<img class="gauche" src="'.$url_img.'" alt="'.$nom_fichier.'" />'.
|
| 361 |
'<div class="gauche">'.
|
380 |
'<div class="gauche">'.
|
| 362 |
'<h3>'.'Image'.'</h3>'.
|
381 |
'<h3>'.'Image'.'</h3>'.
|
| 363 |
'<ul>'.
|
382 |
'<ul>'.
|
| 364 |
'<li>'.'<span class="champ">Importée le :</span> '.$item['date_maj_simple'].'</li>'.
|
383 |
'<li>'.'<span class="champ">Importée le :</span> '.$item['date_maj_simple'].'</li>'.
|
| 365 |
'<li>'.'<span class="champ">Par :</span> '.
|
384 |
'<li>'.'<span class="champ">Par :</span> '.
|
| 366 |
(($this->etreFluxAdmin()) ? '<a href="mailto:'.$auteur.'">'.$auteur.'</a>' : $auteur).
|
385 |
(($this->etreFluxAdmin()) ? '<a href="mailto:'.$auteur.'">'.$auteur.'</a>' : $auteur).
|
| 367 |
'</li>'.
|
386 |
'</li>'.
|
| 368 |
'<li>'.'<span class="champ">Nom du fichier :</span> '.$donnees['ci_nom_original'].'</li>'.
|
387 |
'<li>'.'<span class="champ">Nom du fichier :</span> '.$nom_fichier.'</li>'.
|
| 369 |
'<li>'.'<span class="champ">Note qualité :</span> '.($donnees['ci_note_image'] +1).'/5</li>'.
|
388 |
'<li>'.'<span class="champ">Note qualité :</span> '.$note.'</li>'.
|
| 370 |
'<li>'.'<span class="champ">Commentaires :</span> '.$donnees['ci_meta_comment'].'</li>'.
|
389 |
'<li>'.'<span class="champ">Commentaires :</span> '.$commentaire_img.'</li>'.
|
| 371 |
'<li>'.'<span class="champ">Mots-clés :</span> '.implode(', ', $mots_cles_image).'</li>'.
|
390 |
'<li>'.'<span class="champ">Mots-clés :</span> '.implode(', ', $mots_cles_image).'</li>'.
|
| 372 |
'</ul>'.
|
391 |
'</ul>'.
|
| 373 |
'</div>'.
|
392 |
'</div>'.
|
| 374 |
// TODO : ajouter le champ commentaire EXIF.
|
393 |
// TODO : ajouter le champ commentaire EXIF.
|
| 375 |
'<div class="gauche">'.
|
394 |
'<div class="gauche">'.
|
| 376 |
'<h3>'.'Observation'.'</h3>'.
|
395 |
'<h3>'.'Observation'.'</h3>'.
|
| 377 |
'<ul>'.
|
396 |
'<ul>'.
|
| 378 |
'<li>'.'<span class="champ">Famille :</span> '.$donnees['famille'].'</li>'.
|
397 |
'<li>'.'<span class="champ">Famille :</span> '.$famille.'</li>'.
|
| 379 |
'<li>'.'<span class="champ">Nom saisi :</span> '.$donnees['nom_sel'].'</li>'.
|
398 |
'<li>'.'<span class="champ">Nom saisi :</span> '.$nom_saisi.'</li>'.
|
| 380 |
'<li>'.'<span class="champ">Nom retenu :</span> '.$donnees['nom_ret'].'</li>'.
|
399 |
'<li>'.'<span class="champ">Nom retenu :</span> '.$nom_retenu.'</li>'.
|
| 381 |
'<li>'.'<span class="champ">Observée le :</span> '.$date_observation.'</li>'.
|
400 |
'<li>'.'<span class="champ">Observée le :</span> '.$date_observation.'</li>'.
|
| 382 |
'<li>'.'<span class="champ">Lieu :</span> '.$lieu.'</li>'.
|
401 |
'<li>'.'<span class="champ">Lieu :</span> '.$lieu.'</li>'.
|
| 383 |
'<li>'.'<span class="champ">Milieu :</span> '.$donnees['milieu'].'</li>'.
|
402 |
'<li>'.'<span class="champ">Milieu :</span> '.$milieu.'</li>'.
|
| 384 |
(($this->etreFluxAdmin()) ? '<li><span class="champ">Coordonnées (Lat/Long) :</span> '.$coordonnees.'</li>' : '').
|
403 |
(($this->etreFluxAdmin()) ? '<li><span class="champ">Coordonnées (Lat/Long) :</span> '.$coordonnees.'</li>' : '').
|
| 385 |
'<li>'.'<span class="champ">Commentaire :</span> '.$donnees['commentaire'].'</li>'.
|
404 |
'<li>'.'<span class="champ">Commentaire :</span> '.$commentaire_obs.'</li>'.
|
| 386 |
'<li>'.'<span class="champ">Mots-clés :</span> '.implode(', ', $mots_cles_obs).'</li>'.
|
405 |
'<li>'.'<span class="champ">Mots-clés :</span> '.implode(', ', $mots_cles_obs).'</li>'.
|
| 387 |
(($this->etreFluxAdmin()) ? '<li><span class="champ">Transmis (= public) :</span> '.$transmission.'</li>' : '').
|
406 |
(($this->etreFluxAdmin()) ? '<li><span class="champ">Transmis (= public) :</span> '.$transmission.'</li>' : '').
|