Subversion Repositories eFlore/Applications.cel

Rev

Rev 528 | Rev 568 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 528 Rev 536
1
<?php
1
<?php
2
/**
2
/**
3
 * Service fournissant des informations concernant les images du CEL au format RSS1, RSS2 ou ATOM.
3
 * Service fournissant des informations concernant les images du CEL au format RSS1, RSS2 ou ATOM.
4
 * Encodage en entrée : utf8
4
 * Encodage en entrée : utf8
5
 * Encodage en sortie : utf8
5
 * Encodage en sortie : utf8
6
 * 
6
 * 
7
 * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
7
 * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
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
// TODO : résoudre le problème des images liées à plusieurs obs. Cela créé plusieurs item avec le même id pour atom...
14
class CelSyndicationImage extends Cel {
14
class CelSyndicationImage extends Cel {
15
	
15
	
16
	private $parametres_origines = null;
16
	private $parametres_origines = null;
17
	private $format = null;
17
	private $format = null;
18
	private $service = null;
18
	private $service = null;
19
	private $squelette = null;
19
	private $squelette = null;
20
	private $squelette_dossier = null;
20
	private $squelette_dossier = null;
21
	private $flux = array();
21
	private $flux = array();
22
	
22
	
23
	private $format_image = 'L';
23
	private $format_image = 'L';
24
	
24
	
25
	/**
25
	/**
26
	 * Méthode appelée avec une requête de type GET.
26
	 * Méthode appelée avec une requête de type GET.
27
	 */
27
	 */
28
	public function getElement($params = array()) {
28
	public function getElement($params = array()) {
29
		// Initialisation des variables
29
		// Initialisation des variables
30
		$this->parametres_origines = $params;
30
		$this->parametres_origines = $params;
31
		$info = array();
31
		$info = array();
32
		$contenu = '';
32
		$contenu = '';
33
		
33
		
34
		if (! $this->etreFluxAdmin() || $this->authentifier()) {
34
		if (! $this->etreFluxAdmin() || $this->authentifierAdmin()) {
35
			// Pré traitement des paramêtres
35
			// Pré traitement des paramêtres
36
			$pour_bdd = false;
36
			$pour_bdd = false;
37
			$p = $this->traiterParametres(array('service', 'format'), $params, $pour_bdd);
37
			$p = $this->traiterParametres(array('service', 'format'), $params, $pour_bdd);
38
			extract($p);
38
			extract($p);
39
			$this->parametres = $params;
39
			$this->parametres = $params;
40
			$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
40
			$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
41
			
41
			
42
			// Récupération de la liste des flux
42
			// Récupération de la liste des flux
43
			$this->chargerListeDesFlux();
43
			$this->chargerListeDesFlux();
44
			
44
			
45
			// Chargement du bon type de service demandé
45
			// Chargement du bon type de service demandé
46
			if (isset($service)) {
46
			if (isset($service)) {
47
				$this->service = $this->traiterNomService($service);
47
				$this->service = $this->traiterNomService($service);
48
				$methode = $this->getNomMethodeService();
48
				$methode = $this->getNomMethodeService();
49
				if (method_exists($this, $methode)) {
49
				if (method_exists($this, $methode)) {
50
					if (isset($format) && preg_match('/^(?:rss1|rss2|atom)$/i', $format)) {
50
					if (isset($format) && preg_match('/^(?:rss1|rss2|atom)$/i', $format)) {
51
						// Mise en minuscule de l'indication du format
51
						// Mise en minuscule de l'indication du format
52
						$this->format = strtolower($format);
52
						$this->format = strtolower($format);
53
						// Définition du fichier squelette demandé
53
						// Définition du fichier squelette demandé
54
						$this->squelette = $this->squelette_dossier.$this->format.'.tpl.xml';
54
						$this->squelette = $this->squelette_dossier.$this->format.'.tpl.xml';
55
					} else if (isset($this->flux[$this->service])) {
55
					} else if (isset($this->flux[$this->service])) {
56
						$this->format = '';
56
						$this->format = '';
57
						$this->messages[] = "Le service CEL Syndication nécessite d'indiquer en second paramètre le format : rss1, rss2 ou atom.";
57
						$this->messages[] = "Le service CEL Syndication nécessite d'indiquer en second paramètre le format : rss1, rss2 ou atom.";
58
					}
58
					}
59
					
59
					
60
					if (!isset($this->flux[$this->service]) || isset($this->format)) {
60
					if (!isset($this->flux[$this->service]) || isset($this->format)) {
61
						// Suppression des paramêtres inutile pour le reste des méthodes
61
						// Suppression des paramêtres inutile pour le reste des méthodes
62
						array_shift($this->parametres);
62
						array_shift($this->parametres);
63
						array_shift($this->parametres);
63
						array_shift($this->parametres);
64
						
64
						
65
						// Récupération du contenu à renvoyer
65
						// Récupération du contenu à renvoyer
66
						$contenu = $this->$methode();
66
						$contenu = $this->$methode();
67
					}
67
					}
68
				} else {
68
				} else {
69
					$this->messages[] = "Le type d'information demandé '$this->service' n'est pas disponible.";
69
					$this->messages[] = "Le type d'information demandé '$this->service' n'est pas disponible.";
70
				}
70
				}
71
			} else {
71
			} else {
72
				$this->messages[] = "Le service CEL Syndication Image nécessite d'indiquer en premier paramètre le type d'information demandé.";
72
				$this->messages[] = "Le service CEL Syndication Image nécessite d'indiquer en premier paramètre le type d'information demandé.";
73
			}
73
			}
74
		}
74
		}
75
		
75
		
76
		// Envoie sur la sortie standard
76
		// Envoie sur la sortie standard
77
		$encodage = 'utf-8';
77
		$encodage = 'utf-8';
78
		$mime = $this->getTypeMime();
78
		$mime = $this->getTypeMime();
79
		$formatage_json = $this->getFormatageJson();
79
		$formatage_json = $this->getFormatageJson();
80
		$this->envoyer($contenu, $mime, $encodage, $formatage_json);
80
		$this->envoyer($contenu, $mime, $encodage, $formatage_json);
81
	}
81
	}
82
	
82
	
83
	private function chargerListeDesFlux() {
83
	private function chargerListeDesFlux() {
84
		$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', 
85
			"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.");
86
		$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)', 
87
			"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', 
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 
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.");
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',
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 
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.");
93
			paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
94
	}
94
	}
95
	
95
	
96
	private function setFlux($nom, $titre, $description) {
96
	private function setFlux($nom, $titre, $description) {
97
		$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CoelSyndicationImage/';
97
		$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CoelSyndicationImage/';
98
		$formats = array('atom', 'rss2', 'rss1');
98
		$formats = array('atom', 'rss2', 'rss1');
99
		$flux = array();
99
		$flux = array();
100
		foreach ($formats as $format) {
100
		foreach ($formats as $format) {
101
			$url = $url_base.$nom.'/'.$format;
101
			$url = $url_base.$nom.'/'.$format;
102
			$flux[$format] = $url;
102
			$flux[$format] = $url;
103
		}
103
		}
104
		$this->flux[$nom] = array('titre' => $titre, 'description' => $description, 'urls' => $flux);
104
		$this->flux[$nom] = array('titre' => $titre, 'description' => $description, 'urls' => $flux);
105
	}
105
	}
106
 
106
 
107
	private function getFlux($nom) {
107
	private function getFlux($nom) {
108
		return isset($this->flux[$nom]) ? $this->flux[$nom] : array();
108
		return isset($this->flux[$nom]) ? $this->flux[$nom] : array();
109
	}
109
	}
110
	
110
	
111
	private function traiterNomService($nom) {
111
	private function traiterNomService($nom) {
112
		$nom = strtolower($nom);
112
		$nom = strtolower($nom);
113
		return $nom;
113
		return $nom;
114
	}
114
	}
115
	
115
	
116
	private function getNomMethodeService() {
116
	private function getNomMethodeService() {
117
		$methode = '';
117
		$methode = '';
118
		$service_formate = str_replace(' ', '', ucwords(implode(' ', explode('-', $this->service))));
118
		$service_formate = str_replace(' ', '', ucwords(implode(' ', explode('-', $this->service))));
119
		$methode = 'getService'.$service_formate;
119
		$methode = 'getService'.$service_formate;
120
		return $methode;
120
		return $methode;
121
	}
121
	}
122
	
122
	
123
	private function getUrlBase() {
123
	private function getUrlBase() {
124
		$url_base = sprintf($this->config['settings']['baseURLAbsoluDyn'], get_class($this).'/');
124
		$url_base = sprintf($this->config['settings']['baseURLAbsoluDyn'], get_class($this).'/');
125
		return $url_base;
125
		return $url_base;
126
	}
126
	}
127
	
127
	
128
	private function getUrlServiceBase() {
128
	private function getUrlServiceBase() {
129
		$url_service = $this->getUrlBase().implode('/', $this->parametres_origines);
129
		$url_service = $this->getUrlBase().implode('/', $this->parametres_origines);
130
		return $url_service;
130
		return $url_service;
131
	}
131
	}
132
	
132
	
133
	private function getTypeMime() {
133
	private function getTypeMime() {
134
		$mime = '';
134
		$mime = '';
135
		switch ($this->format) {
135
		switch ($this->format) {
136
			case 'atom' :
136
			case 'atom' :
137
				$mime = 'application/atom+xml';
137
				$mime = 'application/atom+xml';
138
				break;
138
				break;
139
			case 'rss1' :
139
			case 'rss1' :
140
			case 'rss2' :
140
			case 'rss2' :
141
				$mime = 'application/rss+xml';
141
				$mime = 'application/rss+xml';
142
				break;
142
				break;
143
			case 'opml' :
143
			case 'opml' :
144
				$mime = 'text/x-opml';
144
				$mime = 'text/x-opml';
145
				break;
145
				break;
146
			default:
146
			default:
147
				$mime = 'text/html';
147
				$mime = 'text/html';
148
		}
148
		}
149
		return $mime;
149
		return $mime;
150
	}
150
	}
151
	
151
	
152
	private function getFormatageJson() {
152
	private function getFormatageJson() {
153
		$json = false;
153
		$json = false;
154
		switch ($this->service) {
154
		switch ($this->service) {
155
			case 'liste-des-flux' :
155
			case 'liste-des-flux' :
156
				$json = true;
156
				$json = true;
157
				break;
157
				break;
158
			default:
158
			default:
159
				$json = false;
159
				$json = false;
160
		}
160
		}
161
		return $json;
161
		return $json;
162
	}
162
	}
163
	
163
	
164
	private function creerCategorie($element) {
164
	private function creerCategorie($element) {
165
		$categorie = '';
165
		$categorie = '';
166
		$categorie = 'Image';
166
		$categorie = 'Image';
167
		$categorie = $this->nettoyerTexte($categorie);
167
		$categorie = $this->nettoyerTexte($categorie);
168
		return $categorie;
168
		return $categorie;
169
	}
169
	}
170
		
170
		
171
	private function etreFluxAdmin() {
171
	private function etreFluxAdmin() {
172
		return ($_GET['admin'] == '1') ? true : false;
172
		return ($_GET['admin'] == '1') ? true : false;
173
	}
173
	}
174
	
174
	
175
	private function creerUrlService() {
175
	private function creerUrlService() {
176
		$url_service = $this->getUrlServiceBase();
176
		$url_service = $this->getUrlServiceBase();
177
		if (count($_GET) > 0) {
177
		if (count($_GET) > 0) {
178
			$url_service .= '?'.implode('&', $_GET);
178
			$url_service .= '?'.implode('&', $_GET);
179
		}
179
		}
180
		return $url_service;
180
		return $url_service;
181
	}
181
	}
182
	
182
	
183
	protected function executerRequete($requete) {
183
	protected function executerRequete($requete) {
184
		try {
184
		try {
185
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
185
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
186
			if ($infos === false) {
186
			if ($infos === false) {
187
				$this->messages[] = "La requête suivante a retourné aucun résultat :\n$requete";
187
				$this->messages[] = "La requête suivante a retourné aucun résultat :\n$requete";
188
			}
188
			}
189
		} catch (PDOException $e) {
189
		} catch (PDOException $e) {
190
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
190
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
191
		}
191
		}
192
		return $infos;
192
		return $infos;
193
	}
193
	}
194
	
194
	
195
	private function executerService($elements) {
195
	private function executerService($elements) {
196
		// Prétraitement des données
196
		// Prétraitement des données
197
		$donnees = $this->construireDonneesCommunesAuFlux($elements);
197
		$donnees = $this->construireDonneesCommunesAuFlux($elements);
198
		
198
		
199
		foreach ($elements as $element) {
199
		foreach ($elements as $element) {
200
			$donnees['items'][] = $this->construireDonneesCommunesAuxItems($element);
200
			$donnees['items'][] = $this->construireDonneesCommunesAuxItems($element);
201
		}
201
		}
202
		
202
		
203
		// Création du contenu à partir d'un template PHP
203
		// Création du contenu à partir d'un template PHP
204
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
204
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
205
		
205
		
206
		return $contenu;
206
		return $contenu;
207
	}
207
	}
208
	
208
	
209
	private function construireDonneesCommunesAuFlux($infos) {
209
	private function construireDonneesCommunesAuFlux($infos) {
210
		$donnees = $this->getFlux($this->service);
210
		$donnees = $this->getFlux($this->service);
211
		$donnees['guid'] = $this->getUrlServiceBase();
211
		$donnees['guid'] = $this->getUrlServiceBase();
212
		$donnees['lien_service'] = $this->creerUrlService();
212
		$donnees['lien_service'] = $this->creerUrlService();
213
		$donnees['lien_cel'] = sprintf($this->config['settings']['efloreUrlTpl'], $infos['num_nom_sel']);
213
		$donnees['lien_cel'] = sprintf($this->config['settings']['efloreUrlTpl'], $infos['num_nom_sel']);
214
		$donnees['editeur'] = $this->config['settings']['editeur'];
214
		$donnees['editeur'] = $this->config['settings']['editeur'];
215
		$derniere_info_en_date = reset($infos);
215
		$derniere_info_en_date = reset($infos);
216
		$date_modification_timestamp = strtotime($derniere_info_en_date['ci_meta_date_ajout']);
216
		$date_modification_timestamp = strtotime($derniere_info_en_date['ci_meta_date_ajout']);
217
		$donnees['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
217
		$donnees['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
218
		$donnees['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
218
		$donnees['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
219
		$donnees['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
219
		$donnees['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
220
		$donnees['annee_courante'] = date('Y');
220
		$donnees['annee_courante'] = date('Y');
221
		$donnees['generateur'] = 'CEL - Jrest - CelSyndicationImage';
221
		$donnees['generateur'] = 'CEL - Jrest - CelSyndicationImage';
222
		preg_match('/([0-9]+)/', '$Revision$', $match);
222
		preg_match('/([0-9]+)/', '$Revision$', $match);
223
		$donnees['generateur_version'] = $match[1];
223
		$donnees['generateur_version'] = $match[1];
224
		return $donnees; 
224
		return $donnees; 
225
	}
225
	}
226
	
226
	
227
	private function construireDonneesCommunesAuxItems($info) {
227
	private function construireDonneesCommunesAuxItems($info) {
228
		$item = array();
228
		$item = array();
229
		$date_modification_timestamp = $this->convertirDateHeureMysqlEnTimestamp($info['ci_meta_date_ajout']);
229
		$date_modification_timestamp = $this->convertirDateHeureMysqlEnTimestamp($info['ci_meta_date_ajout']);
230
		$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);
231
		$item['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
231
		$item['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
232
		$item['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
232
		$item['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
233
		$item['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
233
		$item['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
234
		$item['titre'] = $this->creerTitre($info);
234
		$item['titre'] = $this->creerTitre($info);
235
		$item['guid'] = $this->creerGuidItem($info);
235
		$item['guid'] = $this->creerGuidItem($info);
236
		$item['lien'] = $this->creerLienItem($info);
236
		$item['lien'] = $this->creerLienItem($info);
237
		$item['categorie'] = $this->creerCategorie($item);
237
		$item['categorie'] = $this->creerCategorie($item);
238
		$item['description'] = $this->creerDescription($this->protegerCaracteresHtmlDansChamps($info), $item);
238
		$item['description'] = $this->creerDescription($this->protegerCaracteresHtmlDansChamps($info), $item);
239
		$item['description_encodee'] = htmlspecialchars($this->creerDescription($info, $item));
239
		$item['description_encodee'] = htmlspecialchars($this->creerDescription($info, $item));
240
		$item['modifier_par'] = $this->creerAuteur($info['identifiant'], $this->etreFluxAdmin());
240
		$item['modifier_par'] = $this->creerAuteur($info['identifiant'], $this->etreFluxAdmin());
241
		return $item;
241
		return $item;
242
	}
242
	}
243
	
243
	
244
	private function creerGuidItem($element) {
244
	private function creerGuidItem($element) {
245
		$guid = $this->getUrlImage($element['ci_id_image']);
245
		$guid = $this->getUrlImage($element['ci_id_image']);
246
		return $guid;
246
		return $guid;
247
	}
247
	}
248
	
248
	
249
	private function creerTitre($element) {
249
	private function creerTitre($element) {
250
		$methode = 'creerTitre'.$this->service;
250
		$methode = 'creerTitre'.$this->service;
251
		$methode = (method_exists($this, $methode)) ? $methode : 'creerTitreSimple';
251
		$methode = (method_exists($this, $methode)) ? $methode : 'creerTitreSimple';
252
		$titre = $this->$methode($element);
252
		$titre = $this->$methode($element);
253
		$titre = $this->nettoyerTexte($titre);
253
		$titre = $this->nettoyerTexte($titre);
254
		return $titre;
254
		return $titre;
255
	}
255
	}
256
	
256
	
257
	private function creerDescription($donnees, $item) {
257
	private function creerDescription($donnees, $item) {
258
		$methode = 'creerDescription'.$this->service;
258
		$methode = 'creerDescription'.$this->service;
259
		$methode = (method_exists($this, $methode)) ? $methode : 'creerDescriptionComplet';
259
		$methode = (method_exists($this, $methode)) ? $methode : 'creerDescriptionComplet';
260
		$description = $this->$methode($donnees, $item);
260
		$description = $this->$methode($donnees, $item);
261
		$description = $this->nettoyerTexte($description);
261
		$description = $this->nettoyerTexte($description);
262
		return $description;
262
		return $description;
263
	}
263
	}
264
 
264
 
265
	private function creerLienItem($element) {
265
	private function creerLienItem($element) {
266
		$lien = $this->getUrlImage($element['ci_id_image'], $this->format_image);
266
		$lien = $this->getUrlImage($element['ci_id_image'], $this->format_image);
267
		return $lien;
267
		return $lien;
268
	}
268
	}
269
	
269
	
270
	private function getServiceListeDesFlux() {
270
	private function getServiceListeDesFlux() {
271
		return $this->flux;
271
		return $this->flux;
272
	}
272
	}
273
	
273
	
274
	private function getServiceOpml() {
274
	private function getServiceOpml() {
275
		$donnees = array();
275
		$donnees = array();
276
		$id = 1;
276
		$id = 1;
277
		foreach ($this->flux as $flux_nom => $flux){
277
		foreach ($this->flux as $flux_nom => $flux){
278
			$info = array();
278
			$info = array();
279
			$info['type'] = 'atom';
279
			$info['type'] = 'atom';
280
			$info['titre'] = $flux['titre'];
280
			$info['titre'] = $flux['titre'];
281
			$info['texte'] = "CEL - Images - $flux_nom";
281
			$info['texte'] = "CEL - Images - $flux_nom";
282
			$info['description'] = $flux['description'];
282
			$info['description'] = $flux['description'];
283
			$info['url_xml'] = $this->getUrlBase().$flux_nom.'/atom';
283
			$info['url_xml'] = $this->getUrlBase().$flux_nom.'/atom';
284
			$info['url_html'] = $this->config['settings']['aideCelUrl'].'FluxSyndication';
284
			$info['url_html'] = $this->config['settings']['aideCelUrl'].'FluxSyndication';
285
			$donnees['liste_flux'][] = $info;
285
			$donnees['liste_flux'][] = $info;
286
		}
286
		}
287
		
287
		
288
		$this->squelette = $this->squelette_dossier.'opml.tpl.xml';
288
		$this->squelette = $this->squelette_dossier.'opml.tpl.xml';
289
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
289
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
290
		return $contenu;
290
		return $contenu;
291
	}
291
	}
292
	
292
	
293
	private function getServiceSimple() {
293
	private function getServiceSimple() {
294
		if (isset($this->parametres[0])) {
294
		if (isset($this->parametres[0])) {
295
			$this->format_image = $this->parametres[0];
295
			$this->format_image = $this->parametres[0];
296
		}
296
		}
297
		
297
		
298
		// Construction de la requête
298
		// Construction de la requête
299
		$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, ci_id_image, ci_nom_original '.
299
		$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, ci_id_image, ci_nom_original '.
300
			'FROM cel_obs_images AS coi '.
300
			'FROM cel_obs_images AS coi '.
301
			'LEFT JOIN cel_inventory AS ci '.
301
			'LEFT JOIN cel_inventory AS ci '.
302
				'ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
302
				'ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
303
			'LEFT JOIN cel_images AS cim '.
303
			'LEFT JOIN cel_images AS cim '.
304
				'ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.  
304
				'ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.  
305
			'WHERE ci.transmission = 1 '.
305
			'WHERE ci.transmission = 1 '.
306
			'	AND ci.identifiant = cim.ci_ce_utilisateur '.
306
			'	AND ci.identifiant = cim.ci_ce_utilisateur '.
307
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
307
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
308
			"LIMIT $this->start, $this->limit ";
308
			"LIMIT $this->start, $this->limit ";
309
		
309
		
310
		$elements = $this->executerRequete($requete);
310
		$elements = $this->executerRequete($requete);
311
		
311
		
312
		// Création du contenu
312
		// Création du contenu
313
		$contenu = $this->executerService($elements);
313
		$contenu = $this->executerService($elements);
314
		return $contenu;
314
		return $contenu;
315
	}
315
	}
316
	
316
	
317
	private function creerTitreSimple($element) {
317
	private function creerTitreSimple($element) {
318
		$titre = $element['nom_sel'].' [nn'.$element['num_nom_sel'].'] par '.$this->creerAuteur($element['identifiant'], $this->etreFluxAdmin());
318
		$titre = $element['nom_sel'].' [nn'.$element['num_nom_sel'].'] par '.$this->creerAuteur($element['identifiant'], $this->etreFluxAdmin());
319
		return $titre;
319
		return $titre;
320
	}
320
	}
321
	
321
	
322
	private function creerDescriptionSimple($donnees, $item) {
322
	private function creerDescriptionSimple($donnees, $item) {
323
		$description = sprintf($this->config['settings']['efloreUrlTpl'], urlencode($donnees['num_nom_sel']));
323
		$description = sprintf($this->config['settings']['efloreUrlTpl'], urlencode($donnees['num_nom_sel']));
324
		return $description;
324
		return $description;
325
	}
325
	}
326
	
326
	
327
	private function getServiceComplet() {
327
	private function getServiceComplet() {
328
		// Construction de la requête
328
		// Construction de la requête
329
		$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
329
		$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
330
			'	ci_id_image, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
330
			'	ci_id_image, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
331
			'FROM cel_images AS cim '.
331
			'FROM cel_images AS cim '.
332
			'	LEFT JOIN cel_obs_images AS coi '.
332
			'	LEFT JOIN cel_obs_images AS coi '.
333
			'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
333
			'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
334
			'	LEFT JOIN cel_inventory AS ci '.
334
			'	LEFT JOIN cel_inventory AS ci '.
335
			'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
335
			'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
336
			(($this->etreFluxAdmin()) ? '' : 'WHERE ci.transmission = 1 ').
336
			(($this->etreFluxAdmin()) ? '' : 'WHERE ci.transmission = 1 ').
337
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
337
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
338
			"LIMIT $this->start, $this->limit ";
338
			"LIMIT $this->start, $this->limit ";
339
		
339
		
340
		$elements = $this->executerRequete($requete);
340
		$elements = $this->executerRequete($requete);
341
 
341
 
342
		// Création du contenu
342
		// Création du contenu
343
		if ($elements != false && count($elements) > 0) {
343
		if ($elements != false && count($elements) > 0) {
344
			$contenu = $this->executerService($elements);
344
			$contenu = $this->executerService($elements);
345
		} else {
345
		} else {
346
			$this->messages[] = "Aucune image disponible.";
346
			$this->messages[] = "Aucune image disponible.";
347
		}
347
		}
348
 
348
 
349
		return $contenu;
349
		return $contenu;
350
	}
350
	}
351
 
351
 
352
	private function creerDescriptionComplet($donnees, $item) {
352
	private function creerDescriptionComplet($donnees, $item) {
353
		$auteur = $this->creerAuteur($donnees['identifiant'], $this->etreFluxAdmin());
353
		$auteur = $this->creerAuteur($donnees['identifiant'], $this->etreFluxAdmin());
354
		
354
		
355
		$id_img = $donnees['ci_id_image'];
355
		$id_img = $donnees['ci_id_image'];
356
		$nom_fichier = $donnees['ci_nom_original'];
356
		$nom_fichier = $donnees['ci_nom_original'];
357
		$url_img = $this->getUrlImage($donnees['ci_id_image'], 'M');
357
		$url_img = $this->getUrlImage($donnees['ci_id_image'], 'M');
358
		$mots_cles_image = $this->decoderMotsClesImg($donnees['identifiant'], $donnees['ci_meta_mots_cles']);
358
		$mots_cles_image = $this->decoderMotsClesImg($donnees['identifiant'], $donnees['ci_meta_mots_cles']);
359
		$note = ($donnees['ci_note_image'] +1).'/5';
359
		$note = ($donnees['ci_note_image'] +1).'/5';
360
		$commentaire_img = $donnees['ci_meta_comment'];
360
		$commentaire_img = $donnees['ci_meta_comment'];
361
		
361
		
362
		$id_obs = $donnees['id'];
362
		$id_obs = $donnees['id'];
363
		$famille = $donnees['famille'];
363
		$famille = $donnees['famille'];
364
		$nom_saisi = $donnees['nom_sel'];
364
		$nom_saisi = $donnees['nom_sel'];
365
		$nom_retenu = $donnees['nom_ret'];
365
		$nom_retenu = $donnees['nom_ret'];
366
		$mots_cles_obs = $this->decoderMotsClesObs($donnees['identifiant'], $donnees['mots_cles']);
366
		$mots_cles_obs = $this->decoderMotsClesObs($donnees['identifiant'], $donnees['mots_cles']);
367
		$lieu =  $donnees['location'].' ('.$donnees['id_location'].') > '.$donnees['lieudit'].' > '.$donnees['station'];
367
		$lieu =  $donnees['location'].' ('.$donnees['id_location'].') > '.$donnees['lieudit'].' > '.$donnees['station'];
368
		$milieu = $donnees['milieu'];
368
		$milieu = $donnees['milieu'];
369
		$coordonnees = ($this->etreNull($donnees['coord_x']) && $this->etreNull($donnees['coord_y'])) ? '' : $donnees['coord_x'].'/'.$donnees['coord_y'];
369
		$coordonnees = ($this->etreNull($donnees['coord_x']) && $this->etreNull($donnees['coord_y'])) ? '' : $donnees['coord_x'].'/'.$donnees['coord_y'];
370
		$commentaire_obs = $donnees['commentaire'];
370
		$commentaire_obs = $donnees['commentaire'];
371
		$date_observation = $this->formaterDate($donnees['date_observation'], '%A %d %B %Y');
371
		$date_observation = $this->formaterDate($donnees['date_observation'], '%A %d %B %Y');
372
		$date_transmission = $this->formaterDate($donnees['date_transmission']);
372
		$date_transmission = $this->formaterDate($donnees['date_transmission']);
373
		$date_modification = $this->formaterDate($donnees['date_modification']);
373
		$date_modification = $this->formaterDate($donnees['date_modification']);
374
		$date_creation = $this->formaterDate($donnees['date_creation']);
374
		$date_creation = $this->formaterDate($donnees['date_creation']);
375
		$transmission = $donnees['transmission'] == 1 ? "oui ($date_transmission)" : 'non';
375
		$transmission = $donnees['transmission'] == 1 ? "oui ($date_transmission)" : 'non';
376
		
376
		
377
		$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>'.
378
			'<h2>'."Image #$id_img liée à l'observation #$id_obs".'</h2>'.
378
			'<h2>'."Image #$id_img liée à l'observation #$id_obs".'</h2>'.
379
			'<img class="gauche" src="'.$url_img.'" alt="'.$nom_fichier.'" />'.
379
			'<img class="gauche" src="'.$url_img.'" alt="'.$nom_fichier.'" />'.
380
			'<div class="gauche">'.
380
			'<div class="gauche">'.
381
			'<h3>'.'Image'.'</h3>'.
381
			'<h3>'.'Image'.'</h3>'.
382
			'<ul>'.
382
			'<ul>'.
383
			'<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>'.
384
			'<li>'.'<span class="champ">Par :</span> '.
384
			'<li>'.'<span class="champ">Par :</span> '.
385
				(($this->etreFluxAdmin()) ? '<a href="mailto:'.$auteur.'">'.$auteur.'</a>' : $auteur).
385
				(($this->etreFluxAdmin()) ? '<a href="mailto:'.$auteur.'">'.$auteur.'</a>' : $auteur).
386
			'</li>'.
386
			'</li>'.
387
			'<li>'.'<span class="champ">Nom du fichier :</span> '.$nom_fichier.'</li>'.
387
			'<li>'.'<span class="champ">Nom du fichier :</span> '.$nom_fichier.'</li>'.
388
			'<li>'.'<span class="champ">Note qualité :</span> '.$note.'</li>'.
388
			'<li>'.'<span class="champ">Note qualité :</span> '.$note.'</li>'.
389
			'<li>'.'<span class="champ">Commentaires :</span> '.$commentaire_img.'</li>'.
389
			'<li>'.'<span class="champ">Commentaires :</span> '.$commentaire_img.'</li>'.
390
			'<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>'.
391
			'</ul>'.
391
			'</ul>'.
392
			'</div>'.
392
			'</div>'.
393
			// TODO : ajouter le champ commentaire EXIF.
393
			// TODO : ajouter le champ commentaire EXIF.
394
			'<div class="gauche">'.
394
			'<div class="gauche">'.
395
			'<h3>'.'Observation'.'</h3>'.
395
			'<h3>'.'Observation'.'</h3>'.
396
			'<ul>'.
396
			'<ul>'.
397
			'<li>'.'<span class="champ">Famille :</span> '.$famille.'</li>'.
397
			'<li>'.'<span class="champ">Famille :</span> '.$famille.'</li>'.
398
			'<li>'.'<span class="champ">Nom saisi :</span> '.$nom_saisi.'</li>'.
398
			'<li>'.'<span class="champ">Nom saisi :</span> '.$nom_saisi.'</li>'.
399
			'<li>'.'<span class="champ">Nom retenu :</span> '.$nom_retenu.'</li>'.
399
			'<li>'.'<span class="champ">Nom retenu :</span> '.$nom_retenu.'</li>'.
400
			'<li>'.'<span class="champ">Observée le :</span> '.$date_observation.'</li>'.
400
			'<li>'.'<span class="champ">Observée le :</span> '.$date_observation.'</li>'.
401
			'<li>'.'<span class="champ">Lieu :</span> '.$lieu.'</li>'.
401
			'<li>'.'<span class="champ">Lieu :</span> '.$lieu.'</li>'.
402
			'<li>'.'<span class="champ">Milieu :</span> '.$milieu.'</li>'.
402
			'<li>'.'<span class="champ">Milieu :</span> '.$milieu.'</li>'.
403
			(($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>' : '').
404
			'<li>'.'<span class="champ">Commentaire :</span> '.$commentaire_obs.'</li>'.
404
			'<li>'.'<span class="champ">Commentaire :</span> '.$commentaire_obs.'</li>'.
405
			'<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>'.
406
			(($this->etreFluxAdmin()) ? '<li><span class="champ">Transmis (= public) :</span> '.$transmission.'</li>' : '').
406
			(($this->etreFluxAdmin()) ? '<li><span class="champ">Transmis (= public) :</span> '.$transmission.'</li>' : '').
407
			'<li><span class="champ">Modifiée le :</span> '.$date_modification.'</li>'.
407
			'<li><span class="champ">Modifiée le :</span> '.$date_modification.'</li>'.
408
			'<li><span class="champ">Créée le :</span> '.$date_creation.'</li>'.
408
			'<li><span class="champ">Créée le :</span> '.$date_creation.'</li>'.
409
			'</ul>'.
409
			'</ul>'.
410
			'</div>';
410
			'</div>';
411
		$description = $this->nettoyerTexte($description);
411
		$description = $this->nettoyerTexte($description);
412
		return $description;
412
		return $description;
413
	}
413
	}
414
	
414
	
415
	private function getServiceParMotsCles() {
415
	private function getServiceParMotsCles() {
416
		$contenu = '';
416
		$contenu = '';
417
		$mot_cle = $this->parametres[0];
417
		$mot_cle = $this->parametres[0];
418
 
418
 
419
		if (isset($mot_cle)) {
419
		if (isset($mot_cle)) {
420
			$mot_cle_encode = $this->bdd->quote($this->encoderMotCle($mot_cle));
420
			$mot_cle_encode = $this->bdd->quote($this->encoderMotCle($mot_cle));
421
 
421
 
422
			// Construction de la requête
422
			// Construction de la requête
423
			$requete = 	'SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire '.
423
			$requete = 	'SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire '.
424
				'FROM cel_mots_cles_images '.
424
				'FROM cel_mots_cles_images '.
425
				"WHERE cmc_id_mot_cle_general = $mot_cle_encode ";
425
				"WHERE cmc_id_mot_cle_general = $mot_cle_encode ";
426
			$elements = $this->executerRequete($requete);
426
			$elements = $this->executerRequete($requete);
427
			
427
			
428
			if ($elements != false && count($elements) > 0) {
428
			if ($elements != false && count($elements) > 0) {
429
				// Pré-construction du where de la requête
429
				// Pré-construction du where de la requête
430
				$tpl_where = '(ci_meta_mots_cles LIKE "%%%s%%" AND ci_ce_utilisateur = %s )';
430
				$tpl_where = '(ci_meta_mots_cles LIKE "%%%s%%" AND ci_ce_utilisateur = %s )';
431
				$requete_where = array();
431
				$requete_where = array();
432
				foreach ($elements as $occurence) {
432
				foreach ($elements as $occurence) {
433
					$requete_where[] = sprintf($tpl_where, $occurence['cmc_id_mot_cle_utilisateur'], $this->bdd->quote($occurence['cmc_id_proprietaire']));
433
					$requete_where[] = sprintf($tpl_where, $occurence['cmc_id_mot_cle_utilisateur'], $this->bdd->quote($occurence['cmc_id_proprietaire']));
434
				}
434
				}
435
				
435
				
436
				// Construction de la requête
436
				// Construction de la requête
437
				$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
437
				$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
438
					'	ci_id_image, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
438
					'	ci_id_image, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
439
					'FROM cel_images AS cim '.
439
					'FROM cel_images AS cim '.
440
					'	LEFT JOIN cel_obs_images AS coi '.
440
					'	LEFT JOIN cel_obs_images AS coi '.
441
					'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
441
					'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
442
					'	LEFT JOIN cel_inventory AS ci '.
442
					'	LEFT JOIN cel_inventory AS ci '.
443
					'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
443
					'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
444
					'WHERE '.implode(" \nOR ", $requete_where).' '.
444
					'WHERE '.implode(" \nOR ", $requete_where).' '.
445
					'	'.(($this->etreFluxAdmin()) ? '' : 'AND ci.transmission = 1').' '.
445
					'	'.(($this->etreFluxAdmin()) ? '' : 'AND ci.transmission = 1').' '.
446
					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
446
					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
447
					"LIMIT $this->start, $this->limit ";
447
					"LIMIT $this->start, $this->limit ";
448
				$elements = $this->executerRequete($requete);
448
				$elements = $this->executerRequete($requete);
449
				
449
				
450
				// Création du contenu
450
				// Création du contenu
451
				$contenu = $this->executerService($elements);
451
				$contenu = $this->executerService($elements);
452
			} else {
452
			} else {
453
				$this->messages[] = "Aucune image ne correspond à ce mot clé.";
453
				$this->messages[] = "Aucune image ne correspond à ce mot clé.";
454
			}
454
			}
455
		} else {
455
		} else {
456
			$this->messages[] = "Le service demandé nécessite d'indiquer un mot-clé en dernier paramêtre.";
456
			$this->messages[] = "Le service demandé nécessite d'indiquer un mot-clé en dernier paramêtre.";
457
		}
457
		}
458
		return $contenu;
458
		return $contenu;
459
	}
459
	}
460
	
460
	
461
	private function getServiceParCommune() {
461
	private function getServiceParCommune() {
462
		$contenu = '';
462
		$contenu = '';
463
		$commune = $this->parametres[0];
463
		$commune = $this->parametres[0];
464
		if (isset($commune)) {
464
		if (isset($commune)) {
465
			$commune = $this->bdd->quote($commune);
465
			$commune = $this->bdd->quote($commune);
466
			
466
			
467
			// Construction de la requête
467
			// Construction de la requête
468
			$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
468
			$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
469
			'	ci_id_image, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
469
			'	ci_id_image, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
470
			'FROM cel_images AS cim '.
470
			'FROM cel_images AS cim '.
471
			'	LEFT JOIN cel_obs_images AS coi '.
471
			'	LEFT JOIN cel_obs_images AS coi '.
472
			'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
472
			'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
473
			'	LEFT JOIN cel_inventory AS ci '.
473
			'	LEFT JOIN cel_inventory AS ci '.
474
			'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
474
			'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
475
			"WHERE ci.location = $commune ".	
475
			"WHERE ci.location = $commune ".	
476
			'	'.(($this->etreFluxAdmin()) ? '' : 'AND ci.transmission = 1').' '.
476
			'	'.(($this->etreFluxAdmin()) ? '' : 'AND ci.transmission = 1').' '.
477
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
477
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
478
			"LIMIT $this->start,$this->limit ";
478
			"LIMIT $this->start,$this->limit ";
479
			$elements = $this->executerRequete($requete);
479
			$elements = $this->executerRequete($requete);
480
			
480
			
481
			// Création du contenu
481
			// Création du contenu
482
			if ($elements != false && count($elements) > 0) {
482
			if ($elements != false && count($elements) > 0) {
483
				$contenu = $this->executerService($elements);
483
				$contenu = $this->executerService($elements);
484
			} else {
484
			} else {
485
				$this->messages[] = "Aucune image ne correspond à cette commune.";
485
				$this->messages[] = "Aucune image ne correspond à cette commune.";
486
			}
486
			}
487
		} else {
487
		} else {
488
			$this->messages[] = "Le service demandé nécessite d'indiquer une nom de commune en dernier paramêtre.";
488
			$this->messages[] = "Le service demandé nécessite d'indiquer une nom de commune en dernier paramêtre.";
489
		}
489
		}
490
		return $contenu;
490
		return $contenu;
491
	}
491
	}
492
}	
492
}