Subversion Repositories eFlore/Applications.cel

Rev

Rev 525 | Rev 536 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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