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>' : '').
|