Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 714 Rev 716
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 = 'XL';
23
	private $format_image = 'XL';
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',
29
		'taxon' => 'b.nom_ret',
30
		'commentaire' => 'c.ci_meta_comment',
30
		'commentaire' => 'c.ci_meta_comment',
31
		'date' => 'c.ci_meta_date',
31
		'date' => 'c.ci_meta_date',
32
		'mots-cles' => 'mots-cles');
32
		'mots-cles' => 'mots-cles');
33
	
33
	
34
	/**
34
	/**
35
	 * Méthode appelée avec une requête de type GET.
35
	 * Méthode appelée avec une requête de type GET.
36
	 */
36
	 */
37
	public function getElement($params = array()) {
37
	public function getElement($params = array()) {
38
		// Initialisation des variables
38
		// Initialisation des variables
39
		$this->parametres_origines = $params;
39
		$this->parametres_origines = $params;
40
		$info = array();
40
		$info = array();
41
		$contenu = '';
41
		$contenu = '';
42
		
42
		
43
		if (! $this->etreFluxAdmin() || $this->authentifierAdmin()) {
43
		if (! $this->etreFluxAdmin() || $this->authentifierAdmin()) {
44
			// Pré traitement des paramêtres
44
			// Pré traitement des paramêtres
45
			$pour_bdd = false;
45
			$pour_bdd = false;
46
			$p = $this->traiterParametres(array('service', 'format'), $params, $pour_bdd);
46
			$p = $this->traiterParametres(array('service', 'format'), $params, $pour_bdd);
47
			extract($p);
47
			extract($p);
48
			$this->parametres = $params;
48
			$this->parametres = $params;
49
			$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
49
			$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
50
			
50
			
51
			// Récupération de la liste des flux
51
			// Récupération de la liste des flux
52
			$this->chargerListeDesFlux();
52
			$this->chargerListeDesFlux();
53
			
53
			
54
			// Chargement du bon type de service demandé
54
			// Chargement du bon type de service demandé
55
			if (isset($service)) {
55
			if (isset($service)) {
56
				$this->service = $this->traiterNomService($service);
56
				$this->service = $this->traiterNomService($service);
57
				$methode = $this->getNomMethodeService();
57
				$methode = $this->getNomMethodeService();
58
				if (method_exists($this, $methode)) {
58
				if (method_exists($this, $methode)) {
59
					if (isset($format) && preg_match('/^(?:rss1|rss2|atom)$/i', $format)) {
59
					if (isset($format) && preg_match('/^(?:rss1|rss2|atom)$/i', $format)) {
60
						// Mise en minuscule de l'indication du format
60
						// Mise en minuscule de l'indication du format
61
						$this->format = strtolower($format);
61
						$this->format = strtolower($format);
62
						// Définition du fichier squelette demandé
62
						// Définition du fichier squelette demandé
63
						$this->squelette = $this->squelette_dossier.$this->format.'.tpl.xml';
63
						$this->squelette = $this->squelette_dossier.$this->format.'.tpl.xml';
64
					} else if (isset($this->flux[$this->service])) {
64
					} else if (isset($this->flux[$this->service])) {
65
						$this->format = '';
65
						$this->format = '';
66
						$this->messages[] = "Le service CEL Syndication nécessite d'indiquer en second paramètre le format : rss1, rss2 ou atom.";
66
						$this->messages[] = "Le service CEL Syndication nécessite d'indiquer en second paramètre le format : rss1, rss2 ou atom.";
67
					}
67
					}
68
					
68
					
69
					if (!isset($this->flux[$this->service]) || isset($this->format)) {
69
					if (!isset($this->flux[$this->service]) || isset($this->format)) {
70
						// Suppression des deux premiers paramètres (service et format)  pour le reste des méthodes
70
						// Suppression des deux premiers paramètres (service et format)  pour le reste des méthodes
71
						array_shift($this->parametres);
71
						array_shift($this->parametres);
72
						array_shift($this->parametres);
72
						array_shift($this->parametres);
73
						
73
						
74
						// Récupération du contenu à renvoyer
74
						// Récupération du contenu à renvoyer
75
						$contenu = $this->$methode();
75
						$contenu = $this->$methode();
76
					}
76
					}
77
				} else {
77
				} else {
78
					$this->messages[] = "Le type d'information demandé '$this->service' n'est pas disponible.";
78
					$this->messages[] = "Le type d'information demandé '$this->service' n'est pas disponible.";
79
				}
79
				}
80
			} else {
80
			} else {
81
				$this->messages[] = "Le service CEL Syndication Image nécessite d'indiquer en premier paramètre le type d'information demandé.";
81
				$this->messages[] = "Le service CEL Syndication Image nécessite d'indiquer en premier paramètre le type d'information demandé.";
82
			}
82
			}
83
		}
83
		}
84
		
84
		
85
		// Envoie sur la sortie standard
85
		// Envoie sur la sortie standard
86
		$encodage = 'utf-8';
86
		$encodage = 'utf-8';
87
		$mime = $this->getTypeMime();
87
		$mime = $this->getTypeMime();
88
		$formatage_json = $this->getFormatageJson();
88
		$formatage_json = $this->getFormatageJson();
89
		$this->envoyer($contenu, $mime, $encodage, $formatage_json);
89
		$this->envoyer($contenu, $mime, $encodage, $formatage_json);
90
	}
90
	}
91
	
91
	
92
	private function chargerListeDesFlux() {
92
	private function chargerListeDesFlux() {
93
		$this->setFlux('simple', 'Nouvelles images liées à une observation dans le CEL', 
93
		$this->setFlux('simple', 'Nouvelles images liées à une observation dans le CEL', 
94
			"Ce flux fournit l'url des nouvelles images du CEL liées à une observation.");
94
			"Ce flux fournit l'url des nouvelles images du CEL liées à une observation.");
95
		$this->setFlux('complet', 'Nouvelles images liées à une observation dans le CEL (détails)', 
95
		$this->setFlux('complet', 'Nouvelles images liées à une observation dans le CEL (détails)', 
96
			"Ce flux fournit les informations sur les nouvelles images du CEL liées à une observation.");
96
			"Ce flux fournit les informations sur les nouvelles images du CEL liées à une observation.");
97
		$this->setFlux('par-mots-cles', 'Flux de syndication des nouvelles images liées à une observation publique du CEL ".
97
		$this->setFlux('par-mots-cles', 'Flux de syndication des nouvelles images liées à une observation publique du CEL ".
98
			"filtrées par mots clés',
98
			"filtrées par mots clés',
99
			"Ce flux fournit des informations sur les nouvelles images du CEL liées à une observation du CEL filtrées par ".
99
			"Ce flux fournit des informations sur les nouvelles images du CEL liées à une observation du CEL filtrées par ".
100
			"mots-clés. Il nécessite d'être paramétré en indiquant en dernier position de l'url le mot-clé à rechercher.");
100
			"mots-clés. Il nécessite d'être paramétré en indiquant en dernier position de l'url le mot-clé à rechercher.");
101
		$this->setFlux('par-commune','Flux de syndication des nouvelles images liées à une observation publique du CEL ".
101
		$this->setFlux('par-commune','Flux de syndication des nouvelles images liées à une observation publique du CEL ".
102
			"filtrées par commune',
102
			"filtrées par commune',
103
			"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par commune. ".
103
			"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par commune. ".
104
			"Il nécessite d'être paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
104
			"Il nécessite d'être paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
105
		$this->setFlux('multicriteres','Flux de syndication des nouvelles images liées à une observation publique du CEL '.
105
		$this->setFlux('multicriteres','Flux de syndication des nouvelles images liées à une observation publique du CEL '.
106
			'filtrées par un ou plusieurs critères',
106
			'filtrées par un ou plusieurs critères',
107
			"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par ".
107
			"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par ".
108
			"auteur (mail), commune (nom), departement (code postal), taxon (nom scientifique), commentaire, mots-clés ".
108
			"auteur (mail), commune (nom), departement (code postal), taxon (nom scientifique), commentaire, mots-clés ".
109
			"et/ou date. Il nécessite d'être 
109
			"et/ou date. Il nécessite d'être 
110
			paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
110
			paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
111
	}
111
	}
112
	
112
	
113
	private function setFlux($nom, $titre, $description) {
113
	private function setFlux($nom, $titre, $description) {
114
		$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CelSyndicationImage/';
114
		$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CelSyndicationImage/';
115
		$formats = array('atom', 'rss2', 'rss1');
115
		$formats = array('atom', 'rss2', 'rss1');
116
		$flux = array();
116
		$flux = array();
117
		foreach ($formats as $format) {
117
		foreach ($formats as $format) {
118
			$url = $url_base.$nom.'/'.$format;
118
			$url = $url_base.$nom.'/'.$format;
119
			$flux[$format] = $url;
119
			$flux[$format] = $url;
120
		}
120
		}
121
		$this->flux[$nom] = array('titre' => $titre, 'description' => $description, 'urls' => $flux);
121
		$this->flux[$nom] = array('titre' => $titre, 'description' => $description, 'urls' => $flux);
122
	}
122
	}
123
 
123
 
124
	private function getFlux($nom) {
124
	private function getFlux($nom) {
125
		return isset($this->flux[$nom]) ? $this->flux[$nom] : array();
125
		return isset($this->flux[$nom]) ? $this->flux[$nom] : array();
126
	}
126
	}
127
	
127
	
128
	private function traiterNomService($nom) {
128
	private function traiterNomService($nom) {
129
		$nom = strtolower($nom);
129
		$nom = strtolower($nom);
130
		return $nom;
130
		return $nom;
131
	}
131
	}
132
	
132
	
133
	private function getNomMethodeService() {
133
	private function getNomMethodeService() {
134
		$methode = '';
134
		$methode = '';
135
		$service_formate = str_replace(' ', '', ucwords(implode(' ', explode('-', $this->service))));
135
		$service_formate = str_replace(' ', '', ucwords(implode(' ', explode('-', $this->service))));
136
		$methode = 'getService'.$service_formate;
136
		$methode = 'getService'.$service_formate;
137
		return $methode;
137
		return $methode;
138
	}
138
	}
139
	
139
	
140
	private function getUrlBase() {
140
	private function getUrlBase() {
141
		$url_base = sprintf($this->config['settings']['baseURLAbsolu'], get_class($this).'/');
141
		$url_base = sprintf($this->config['settings']['baseURLAbsolu'], get_class($this).'/');
142
		return $url_base;
142
		return $url_base;
143
	}
143
	}
144
	
144
	
145
	private function getUrlServiceBase() {
145
	private function getUrlServiceBase() {
146
		$url_service = $this->getUrlBase().implode('/', $this->parametres_origines);
146
		$url_service = $this->getUrlBase().implode('/', $this->parametres_origines);
147
		return $url_service;
147
		return $url_service;
148
	}
148
	}
149
	
149
	
150
	private function getTypeMime() {
150
	private function getTypeMime() {
151
		$mime = '';
151
		$mime = '';
152
		switch ($this->format) {
152
		switch ($this->format) {
153
			case 'atom' :
153
			case 'atom' :
154
				$mime = 'application/atom+xml';
154
				$mime = 'application/atom+xml';
155
				break;
155
				break;
156
			case 'rss1' :
156
			case 'rss1' :
157
			case 'rss2' :
157
			case 'rss2' :
158
				$mime = 'application/rss+xml';
158
				$mime = 'application/rss+xml';
159
				break;
159
				break;
160
			case 'opml' :
160
			case 'opml' :
161
				$mime = 'text/x-opml';
161
				$mime = 'text/x-opml';
162
				break;
162
				break;
163
			default:
163
			default:
164
				$mime = 'text/html';
164
				$mime = 'text/html';
165
		}
165
		}
166
		return $mime;
166
		return $mime;
167
	}
167
	}
168
	
168
	
169
	private function getFormatageJson() {
169
	private function getFormatageJson() {
170
		$json = false;
170
		$json = false;
171
		switch ($this->service) {
171
		switch ($this->service) {
172
			case 'liste-des-flux' :
172
			case 'liste-des-flux' :
173
				$json = true;
173
				$json = true;
174
				break;
174
				break;
175
			default:
175
			default:
176
				$json = false;
176
				$json = false;
177
		}
177
		}
178
		return $json;
178
		return $json;
179
	}
179
	}
180
	
180
	
181
	private function creerCategorie($element) {
181
	private function creerCategorie($element) {
182
		$categorie = '';
182
		$categorie = '';
183
		$categorie = 'Image';
183
		$categorie = 'Image';
184
		$categorie = $this->nettoyerTexte($categorie);
184
		$categorie = $this->nettoyerTexte($categorie);
185
		return $categorie;
185
		return $categorie;
186
	}
186
	}
187
		
187
		
188
	private function etreFluxAdmin() {
188
	private function etreFluxAdmin() {
189
		return (isset($_GET['admin']) && $_GET['admin'] == '1') ? true : false;
189
		return (isset($_GET['admin']) && $_GET['admin'] == '1') ? true : false;
190
	}
190
	}
191
	
191
	
192
	private function creerUrlService() {
192
	private function creerUrlService() {
193
		$url_service = $this->getUrlServiceBase();
193
		$url_service = $this->getUrlServiceBase();
194
		if (count($_GET) > 0) {
194
		if (count($_GET) > 0) {
195
			$parametres_get = array();
195
			$parametres_get = array();
196
			foreach ($_GET as $cle => $valeur) {
196
			foreach ($_GET as $cle => $valeur) {
197
				$parametres_get[] = $cle.'='.$valeur;
197
				$parametres_get[] = $cle.'='.$valeur;
198
			}
198
			}
199
			$url_service .= '?'.implode('&amp;', $parametres_get);
199
			$url_service .= '?'.implode('&amp;', $parametres_get);
200
		}
200
		}
201
		return $url_service;
201
		return $url_service;
202
	}
202
	}
203
	
203
	
204
	protected function executerRequete($requete, $retour = 'All', $mode = PDO::FETCH_ASSOC) {
204
	protected function executerRequete($requete, $retour = 'All', $mode = PDO::FETCH_ASSOC) {
205
		try {
205
		try {
206
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
206
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
207
			if ($infos === false) {
207
			if ($infos === false) {
208
				$this->messages[] = "La requête suivante a retourné aucun résultat :\n$requete";
208
				$this->messages[] = "La requête suivante a retourné aucun résultat :\n$requete";
209
			}
209
			}
210
		} catch (PDOException $e) {
210
		} catch (PDOException $e) {
211
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
211
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
212
		}
212
		}
213
		return $infos;
213
		return $infos;
214
	}
214
	}
215
	
215
	
216
	private function executerService($elements) {
216
	private function executerService($elements) {
217
		// Prétraitement des données
217
		// Prétraitement des données
218
		$donnees = $this->construireDonneesCommunesAuFlux($elements);
218
		$donnees = $this->construireDonneesCommunesAuFlux($elements);
219
		
219
		
220
		foreach ($elements as $element) {
220
		foreach ($elements as $element) {
221
			$donnees['items'][] = $this->construireDonneesCommunesAuxItems($element);
221
			$donnees['items'][] = $this->construireDonneesCommunesAuxItems($element);
222
		}
222
		}
223
		
223
		
224
		// Création du contenu à partir d'un template PHP
224
		// Création du contenu à partir d'un template PHP
225
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
225
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
226
		
226
		
227
		return $contenu;
227
		return $contenu;
228
	}
228
	}
229
	
229
	
230
	private function construireDonneesCommunesAuFlux($infos) {
230
	private function construireDonneesCommunesAuFlux($infos) {
231
		$donnees = $this->getFlux($this->service);
231
		$donnees = $this->getFlux($this->service);
232
		$donnees['guid'] = $this->getUrlServiceBase();
232
		$donnees['guid'] = $this->getUrlServiceBase();
233
		$donnees['lien_service'] = $this->creerUrlService();
233
		$donnees['lien_service'] = $this->creerUrlService();
234
		$donnees['lien_cel'] = (isset($infos['num_nom_sel'])) ? 
234
		$donnees['lien_cel'] = (isset($infos['num_nom_sel'])) ? 
235
			sprintf($this->config['settings']['efloreUrlTpl'], $infos['num_nom_sel'], 'illustration') : '';
235
			sprintf($this->config['settings']['efloreUrlTpl'], $infos['num_nom_sel'], 'illustration') : '';
236
		$donnees['editeur'] = $this->config['settings']['editeur'];
236
		$donnees['editeur'] = $this->config['settings']['editeur'];
237
		$derniere_info_en_date = reset($infos);
237
		$derniere_info_en_date = reset($infos);
238
		$date_modification_timestamp = strtotime($derniere_info_en_date['ci_meta_date_ajout']);
238
		$date_modification_timestamp = strtotime($derniere_info_en_date['ci_meta_date_ajout']);
239
		$donnees['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
239
		$donnees['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
240
		$donnees['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
240
		$donnees['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
241
		$donnees['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
241
		$donnees['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
242
		$donnees['annee_courante'] = date('Y');
242
		$donnees['annee_courante'] = date('Y');
243
		$donnees['generateur'] = 'CEL - Jrest - CelSyndicationImage';
243
		$donnees['generateur'] = 'CEL - Jrest - CelSyndicationImage';
244
		$donnees['generateur_version'] = (preg_match('/([0-9]+)/', '$Revision$', $match)) ?  $match[1] : '0';
244
		$donnees['generateur_version'] = (preg_match('/([0-9]+)/', '$Revision$', $match)) ?  $match[1] : '0';
245
		return $donnees; 
245
		return $donnees; 
246
	}
246
	}
247
	
247
	
248
	private function construireDonneesCommunesAuxItems($info) {
248
	private function construireDonneesCommunesAuxItems($info) {
249
		$item = array();
249
		$item = array();
250
		$date_modification_timestamp = $this->convertirDateHeureMysqlEnTimestamp($info['ci_meta_date_ajout']);
250
		$date_modification_timestamp = $this->convertirDateHeureMysqlEnTimestamp($info['ci_meta_date_ajout']);
251
		$item['date_maj_simple'] = strftime('%A %d %B %Y à %H:%M', $date_modification_timestamp);
251
		$item['date_maj_simple'] = strftime('%A %d %B %Y à %H:%M', $date_modification_timestamp);
252
		$item['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
252
		$item['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
253
		$item['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
253
		$item['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
254
		$item['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
254
		$item['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
255
		$item['titre'] = $this->creerTitre($info);
255
		$item['titre'] = $this->creerTitre($info);
256
		$item['guid'] = $this->creerGuidItem($info);
256
		$item['guid'] = $this->creerGuidItem($info);
257
		$item['lien'] = $this->creerLienItem($info);
257
		$item['lien'] = $this->creerLienItem($info);
258
		$item['categorie'] = $this->creerCategorie($item);
258
		$item['categorie'] = $this->creerCategorie($item);
259
		$item['description'] = $this->creerDescription($this->protegerCaracteresHtmlDansChamps($info), $item);
259
		$item['description'] = $this->creerDescription($this->protegerCaracteresHtmlDansChamps($info), $item);
260
		$item['description_encodee'] = htmlspecialchars($this->creerDescription($info, $item));
260
		$item['description_encodee'] = htmlspecialchars($this->creerDescription($info, $item));
261
		$item['modifier_par'] = $this->creerAuteur($info['identifiant'], $this->etreFluxAdmin());
261
		$item['modifier_par'] = $this->creerAuteur($info['identifiant'], $this->etreFluxAdmin());
262
		return $item;
262
		return $item;
263
	}
263
	}
264
	
264
	
265
	private function creerGuidItem($element) {
265
	private function creerGuidItem($element) {
266
		$guid = $this->getUrlImage($element['ci_id_image']);
266
		$guid = $this->getUrlImage($element['ci_id_image']);
267
		return $guid;
267
		return $guid;
268
	}
268
	}
269
	
269
	
270
	private function creerTitre($element) {
270
	private function creerTitre($element) {
271
		$methode = 'creerTitre'.$this->service;
271
		$methode = 'creerTitre'.$this->service;
272
		$methode = (method_exists($this, $methode)) ? $methode : 'creerTitreSimple';
272
		$methode = (method_exists($this, $methode)) ? $methode : 'creerTitreSimple';
273
		$titre = $this->$methode($element);
273
		$titre = $this->$methode($element);
274
		$titre = $this->nettoyerTexte($titre);
274
		$titre = $this->nettoyerTexte($titre);
275
		return $titre;
275
		return $titre;
276
	}
276
	}
277
	
277
	
278
	private function creerDescription($donnees, $item) {
278
	private function creerDescription($donnees, $item) {
279
		$methode = 'creerDescription'.$this->service;
279
		$methode = 'creerDescription'.$this->service;
280
		$methode = (method_exists($this, $methode)) ? $methode : 'creerDescriptionComplet';
280
		$methode = (method_exists($this, $methode)) ? $methode : 'creerDescriptionComplet';
281
		$description = $this->$methode($donnees, $item);
281
		$description = $this->$methode($donnees, $item);
282
		$description = $this->nettoyerTexte($description);
282
		$description = $this->nettoyerTexte($description);
283
		return $description;
283
		return $description;
284
	}
284
	}
285
 
285
 
286
	private function creerLienItem($element) {
286
	private function creerLienItem($element) {
287
		if ($this->etreNull($element['id'])) {
287
		if ($this->etreNull($element['id'])) {
288
			// Lien vers image grand format
288
			// Lien vers image grand format
289
			$lien = $this->getUrlImage($element['ci_id_image'], $this->format_image);
289
			$lien = $this->getUrlImage($element['ci_id_image'], $this->format_image);
290
		} else {
290
		} else {
291
			// Lien vers fiche eFlore onglet Illustration
291
			// Lien vers fiche eFlore onglet Illustration
292
			$lien = sprintf($this->config['settings']['efloreUrlTpl'], $element['num_nom_sel'], 'illustration');
292
			$lien = sprintf($this->config['settings']['efloreUrlTpl'], $element['num_nom_sel'], 'illustration');
293
		}
293
		}
294
		return $lien;
294
		return $lien;
295
	}
295
	}
296
	
296
	
297
	private function getServiceListeDesFlux() {
297
	private function getServiceListeDesFlux() {
298
		return $this->flux;
298
		return $this->flux;
299
	}
299
	}
300
	
300
	
301
	private function getServiceOpml() {
301
	private function getServiceOpml() {
302
		$donnees = array();
302
		$donnees = array();
303
		$id = 1;
303
		$id = 1;
304
		foreach ($this->flux as $flux_nom => $flux){
304
		foreach ($this->flux as $flux_nom => $flux){
305
			$info = array();
305
			$info = array();
306
			$info['type'] = 'atom';
306
			$info['type'] = 'atom';
307
			$info['titre'] = $flux['titre'];
307
			$info['titre'] = $flux['titre'];
308
			$info['texte'] = "CEL - Images - $flux_nom";
308
			$info['texte'] = "CEL - Images - $flux_nom";
309
			$info['description'] = $flux['description'];
309
			$info['description'] = $flux['description'];
310
			$info['url_xml'] = $this->getUrlBase().$flux_nom.'/atom';
310
			$info['url_xml'] = $this->getUrlBase().$flux_nom.'/atom';
311
			$info['url_html'] = $this->config['settings']['aideCelUrl'].'FluxSyndication';
311
			$info['url_html'] = $this->config['settings']['aideCelUrl'].'FluxSyndication';
312
			$donnees['liste_flux'][] = $info;
312
			$donnees['liste_flux'][] = $info;
313
		}
313
		}
314
		
314
		
315
		$this->squelette = $this->squelette_dossier.'opml.tpl.xml';
315
		$this->squelette = $this->squelette_dossier.'opml.tpl.xml';
316
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
316
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
317
		return $contenu;
317
		return $contenu;
318
	}
318
	}
319
	
319
	
320
	private function getServiceSimple() {
320
	private function getServiceSimple() {
321
		if (isset($this->parametres[0])) {
321
		if (isset($this->parametres[0])) {
322
			$this->format_image = $this->parametres[0];
322
			$this->format_image = $this->parametres[0];
323
		}
323
		}
324
		
324
		
325
		// Construction de la requête
325
		// Construction de la requête
326
		$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
326
		$requete = 	(isset($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
327
			'	ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image  '.
327
			'	ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image  '.
328
			'FROM cel_obs_images AS coi '.
328
			'FROM cel_obs_images AS coi '.
329
			'LEFT JOIN cel_inventory AS ci '.
329
			'LEFT JOIN cel_inventory AS ci '.
330
				'ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
330
				'ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
331
			'LEFT JOIN cel_images AS cim '.
331
			'LEFT JOIN cel_images AS cim '.
332
				'ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.  
332
				'ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.  
333
			'WHERE ci.transmission = 1 '.
333
			'WHERE ci.transmission = 1 '.
334
			'	AND ci.identifiant = cim.ci_ce_utilisateur '.
334
			'	AND ci.identifiant = cim.ci_ce_utilisateur '.
335
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
335
			'ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
336
			"LIMIT $this->start, $this->limit ";
336
			"LIMIT $this->start, $this->limit ";
337
		
337
		
338
		$elements = $this->executerRequete($requete);
338
		$elements = $this->executerRequete($requete);
339
		
339
		
340
		// Création du contenu
340
		// Création du contenu
341
		$contenu = $this->executerService($elements);
341
		$contenu = $this->executerService($elements);
342
		return $contenu;
342
		return $contenu;
343
	}
343
	}
344
	
344
	
345
	private function creerTitreSimple($element) {
345
	private function creerTitreSimple($element) {
346
		if ($this->etreNull($element['nom_sel']) && $this->etreNull($element['num_nom_sel'])) {
346
		if ($this->etreNull($element['nom_sel']) && $this->etreNull($element['num_nom_sel'])) {
347
			$titre = "Ajout d'une photo par ".$this->creerAuteur($element['ci_ce_utilisateur'], $this->etreFluxAdmin());
347
			$titre = "Ajout d'une photo par ".$this->creerAuteur($element['ci_ce_utilisateur'], $this->etreFluxAdmin());
348
		} else {
348
		} else {
349
			$titre = $element['nom_sel'].' [nn'.$element['num_nom_sel'].'] par '.$this->creerAuteur($element['ci_ce_utilisateur'], $this->etreFluxAdmin());
349
			$titre = $element['nom_sel'].' [nn'.$element['num_nom_sel'].'] par '.$this->creerAuteur($element['ci_ce_utilisateur'], $this->etreFluxAdmin());
350
		}
350
		}
351
		return $titre;
351
		return $titre;
352
	}
352
	}
353
	
353
	
354
	private function creerDescriptionSimple($donnees, $item) {
354
	private function creerDescriptionSimple($donnees, $item) {
355
		$description = sprintf($this->config['settings']['efloreUrlTpl'], urlencode($donnees['num_nom_sel']), 'illustration');
355
		$description = sprintf($this->config['settings']['efloreUrlTpl'], urlencode($donnees['num_nom_sel']), 'illustration');
356
		return $description;
356
		return $description;
357
	}
357
	}
358
	
358
	
359
	private function getServiceComplet() {
359
	private function getServiceComplet() {
360
		// Construction de la requête
360
		// Construction de la requête
361
		$requete = 	(isset($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
361
		$requete = 	(isset($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
362
			'	ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
362
			'	ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
363
			'FROM cel_images AS cim '.
363
			'FROM cel_images AS cim '.
364
			'	LEFT JOIN cel_obs_images AS coi '.
364
			'	LEFT JOIN cel_obs_images AS coi '.
365
			'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
365
			'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
366
			'	LEFT JOIN cel_inventory AS ci '.
366
			'	LEFT JOIN cel_inventory AS ci '.
367
			'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
367
			'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
368
			(($this->etreFluxAdmin()) ? '' : 'WHERE ci.transmission = 1 ').
368
			(($this->etreFluxAdmin()) ? '' : 'WHERE ci.transmission = 1 ').
369
			'ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
369
			'ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
370
			"LIMIT $this->start, $this->limit ";
370
			"LIMIT $this->start, $this->limit ";
371
		
371
		
372
		$elements = $this->executerRequete($requete);
372
		$elements = $this->executerRequete($requete);
373
 
373
 
374
		// Création du contenu
374
		// Création du contenu
375
		if ($elements != false && count($elements) > 0) {
375
		if ($elements != false && count($elements) > 0) {
376
			$contenu = $this->executerService($elements);
376
			$contenu = $this->executerService($elements);
377
		} else {
377
		} else {
378
			$this->messages[] = "Aucune image disponible.";
378
			$this->messages[] = "Aucune image disponible.";
379
		}
379
		}
380
 
380
 
381
		return $contenu;
381
		return $contenu;
382
	}
382
	}
383
	
383
	
384
	private function getServiceMultiCriteres() {
384
	private function getServiceMultiCriteres() {
385
		$contenu = '';
385
		$contenu = '';
386
		if (isset($_GET['debut'])) $this->start = $_GET['debut'];		
386
		if (isset($_GET['debut'])) $this->start = $_GET['debut'];		
387
		if (isset($_GET['limite'])) $this->limite = $_GET['limite'];
387
		if (isset($_GET['limite'])) $this->limite = $_GET['limite'];
388
		
388
		
389
		// Construction de la requête
389
		// Construction de la requête
390
		$requete = 'SELECT * '.
390
		$requete = 'SELECT * '.
391
			'FROM cel_obs_images a '.
391
			'FROM cel_obs_images a '.
392
			'	INNER JOIN cel_inventory b '.
392
			'	INNER JOIN cel_inventory b '.
393
			'		ON (a.coi_ce_observation = b.ordre AND a.coi_ce_utilisateur = b.identifiant) '.
393
			'		ON (a.coi_ce_observation = b.ordre AND a.coi_ce_utilisateur = b.identifiant) '.
394
			'	INNER JOIN cel_images c '.
394
			'	INNER JOIN cel_images c '.
395
			'		ON (a.coi_ce_image = c.ci_id_image AND a.coi_ce_utilisateur = c.ci_ce_utilisateur) '.  
395
			'		ON (a.coi_ce_image = c.ci_id_image AND a.coi_ce_utilisateur = c.ci_ce_utilisateur) '.  
396
			'WHERE b.transmission = 1 '.
396
			'WHERE b.transmission = 1 '.
397
			'	AND b.identifiant = c.ci_ce_utilisateur '.
397
			'	AND b.identifiant = c.ci_ce_utilisateur '.
398
			'	AND ';
398
			'	AND ';
399
		
399
		
400
		if ($this->estUneRechercheGenerale()) {
400
		if ($this->estUneRechercheGenerale()) {
401
			$chaine_requete = $_GET['recherche'];
401
			$chaine_requete = $_GET['recherche'];
402
			$requete .= $this->creerSousRequeteRechercheGenerale($chaine_requete);
402
			$requete .= $this->creerSousRequeteRechercheGenerale($chaine_requete);
403
		} else {
403
		} else {
404
			$criteres = $this->traiterCriteresMultiples($_GET) ;
404
			$criteres = $this->traiterCriteresMultiples($_GET) ;
405
			if (!empty($criteres)) {
405
			if (!empty($criteres)) {
406
				$requete .= $this->creerSousRequeteRechercheParCriteres($criteres);
406
				$requete .= $this->creerSousRequeteRechercheParCriteres($criteres);
407
			}	
407
			}	
408
		}
408
		}
409
		$requete = rtrim($requete, 'AND ');
409
		$requete = rtrim($requete, 'AND ');
410
		$requete .= ' ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 
410
		$requete .= ' ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 
411
			'c.ci_meta_date_ajout DESC').' '."LIMIT $this->start,$this->limit ";
411
			'c.ci_meta_date_ajout DESC').' '."LIMIT $this->start,$this->limit ";
412
		
412
		
413
		$elements = $this->executerRequete($requete);
413
		$elements = $this->executerRequete($requete);
414
 
414
 
415
		// Création du contenu
415
		// Création du contenu
416
		if ($elements != false && count($elements) > 0) {
416
		if ($elements != false && count($elements) > 0) {
417
			$contenu = $this->executerService($elements);
417
			$contenu = $this->executerService($elements);
418
		} else {
418
		} else {
419
			$this->messages[] = "Aucune image disponible.";
419
			$this->messages[] = "Aucune image disponible.";
420
		}
420
		}
421
        
421
        
422
        return $contenu;
422
        return $contenu;
423
	}
423
	}
424
	
424
	
425
	private function creerSousRequeteRechercheParCriteres($criteres) {
425
	private function creerSousRequeteRechercheParCriteres($criteres) {
426
		$requete = '';
426
		$requete = '';
427
		foreach ($criteres as $pair) {
427
		foreach ($criteres as $pair) {
428
			$nom_valeur = explode("=",$pair);
428
			$nom_valeur = explode("=",$pair);
429
			if (sizeof($nom_valeur) != 0) {
429
			if (sizeof($nom_valeur) != 0) {
430
				switch ($nom_valeur[0]) {
430
				switch ($nom_valeur[0]) {
431
					case "ci_limite" : $this->limite = $this->bdd->quote($nom_valeur[1]); break;
431
					case "ci_limite" : $this->limite = $this->bdd->quote($nom_valeur[1]); break;
432
					case "c.ci_numero_page" : $this->limite*$this->bdd->quote($nom_valeur[1]); break;
432
					case "c.ci_numero_page" : $this->limite*$this->bdd->quote($nom_valeur[1]); break;
433
					case "c.ci_meta_comment" : $mots_comment_liste = explode(" " , $nom_valeur[1]);
433
					case "c.ci_meta_comment" : $mots_comment_liste = explode(" " , $nom_valeur[1]);
434
						foreach($mots_comment_liste as $mot_comment) {
434
						foreach($mots_comment_liste as $mot_comment) {
435
							$mot_comment = trim($mot_comment) ;
435
							$mot_comment = trim($mot_comment) ;
436
							$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote('%'.$mot_comment.'%').' AND ';
436
							$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote('%'.$mot_comment.'%').' AND ';
437
						}
437
						}
438
						break;
438
						break;
439
					case "c.ci_meta_date" : 
439
					case "c.ci_meta_date" : 
440
						$nom_valeur[1] = str_replace('/', '-', $nom_valeur[1]);
440
						$nom_valeur[1] = str_replace('/', '-', $nom_valeur[1]);
441
						if (preg_match('/(^[0-9]{2})-([0-9]{2})-([0-9]{4}$)/', $nom_valeur[1], $matches)) {
441
						if (preg_match('/(^[0-9]{2})-([0-9]{2})-([0-9]{4}$)/', $nom_valeur[1], $matches)) {
442
							$nom_valeur[1] = $matches[3].'-'.$matches[2].'-'.$matches[1];
442
							$nom_valeur[1] = $matches[3].'-'.$matches[2].'-'.$matches[1];
443
						}
443
						}
444
						$requete .= $nom_valeur[0].'='.$this->bdd->quote($nom_valeur[1]).' AND '; break;
444
						$requete .= $nom_valeur[0].'='.$this->bdd->quote($nom_valeur[1]).' AND '; break;
445
					case "b.nom_ret" : 
445
					case "b.nom_ret" : 
446
						if ($nom_valeur[1] == "indetermine") $nom_valeur[1] = 'null';						
446
						if ($nom_valeur[1] == "indetermine") $nom_valeur[1] = 'null';						
447
						$requete .= ' ('.$nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%" OR b.nom_sel LIKE "%'.
447
						$requete .= ' ('.$nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%" OR b.nom_sel LIKE "%'.
448
							$nom_valeur[1].'%") AND '; break;
448
							$nom_valeur[1].'%") AND '; break;
449
					case "mots-cles" : $requete .= $this->creerSousRequeteMotsCles($nom_valeur[1]); break; 		
449
					case "mots-cles" : $requete .= $this->creerSousRequeteMotsCles($nom_valeur[1]); break; 		
450
					default : $requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'" AND '; break;
450
					default : $requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'" AND '; break;
451
				}
451
				}
452
			}
452
			}
453
		}
453
		}
454
		$requete = rtrim($requete,' AND ');
454
		$requete = rtrim($requete,' AND ');
455
		return $requete;
455
		return $requete;
456
	}
456
	}
457
	
457
	
458
	private function creerSousRequeteMotsCles($mot_cle) {
458
	private function creerSousRequeteMotsCles($mot_cle) {
-
 
459
		$requete = '';
459
		if (preg_match('/.*,.*/', $mot_cle)) {
460
		if (preg_match('/.*,.*/', $mot_cle)) {
460
			$requete = $this->creerSousRequeteMotsClesOu($mot_cle);
461
			$requete = $this->creerSousRequeteMotsClesOu($mot_cle);
461
		} else if (preg_match('/.*ET.*/', $mot_cle)) {
462
		} else if (preg_match('/.*ET.*/', $mot_cle)) {
462
			$requete = $this->creerSousRequeteMotsClesEt($mot_cle);
463
			$requete = $this->creerSousRequeteMotsClesEt($mot_cle);
463
		} else {		
464
		} else {		
464
			// Construction de la requête
465
			// Construction de la requête
465
			$prerequete = 	"SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_images WHERE $where ".
466
			$prerequete = 	"SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_images WHERE $where ".
466
				'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle($mot_cle)); 
467
				'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle($mot_cle)); 
467
			$elements = $this->executerRequete($prerequete);//print_r($elements);
468
			$elements = $this->executerRequete($prerequete);
468
			if ($elements != false && count($elements) > 0) {
469
			if ($elements != false && count($elements) > 0) {
469
				foreach ($elements as $occurence) {
470
				foreach ($elements as $occurence) {
470
					$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
471
					$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
471
						$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';	
472
						$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';	
472
				}
473
				}
473
			}
474
			}
474
		}
475
		}
475
		$requete = rtrim($requete,' OR ').' AND ';
476
		$requete = rtrim($requete,' OR ').' AND ';
476
		return $requete;
477
		return $requete;
477
	}
478
	}
478
	
479
	
479
	private function creerSousRequeteMotsClesOu($mot_cle) {
480
	private function creerSousRequeteMotsClesOu($mot_cle) {
480
		$requete = '';
481
		$requete = '';
481
		
482
		
482
		$tab_mots_cles = explode(',', $mot_cle);
483
		$tab_mots_cles = explode(',', $mot_cle);
483
		$where = '';
484
		$where = '';
484
		foreach ($tab_mots_cles as $mot) {
485
		foreach ($tab_mots_cles as $mot) {
485
			$where .= 'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle($mot)).' OR ';
486
			$where .= 'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle($mot)).' OR ';
486
		}
487
		}
487
		$where = rtrim($where,' OR ');
488
		$where = rtrim($where,' OR ');
488
		
489
		
489
		// Construction de la requête
490
		// Construction de la requête
490
		$prerequete = 	"SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_images WHERE $where "; 
491
		$prerequete = 	"SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_images WHERE $where "; 
491
		$elements = $this->executerRequete($prerequete);//print_r($elements);
492
		$elements = $this->executerRequete($prerequete);//print_r($elements);
492
		if ($elements != false && count($elements) > 0) {
493
		if ($elements != false && count($elements) > 0) {
493
			foreach ($elements as $occurence) {
494
			foreach ($elements as $occurence) {
494
				$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
495
				$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
495
					$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
496
					$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
496
			}
497
			}
497
		}
498
		}
498
		return $requete;
499
		return $requete;
499
	}
500
	}
500
	
501
	
501
	private function creerSousRequeteMotsClesEt($mot_cle) {
502
	private function creerSousRequeteMotsClesEt($mot_cle) {
502
		$requete = '';
503
		$requete = '';
503
		$where = '';
504
		$where = '';
504
		$champs = 'a.cmc_id_proprietaire , ';
505
		$champs = 'a.cmc_id_proprietaire , ';
505
		$table = '';
506
		$table = '';
506
		$i = "a"; $j = "a";
507
		$i = "a"; $j = "a";
507
		
508
		
508
		$tab_mots_cles = explode("ET", $mot_cle); 
509
		$tab_mots_cles = explode("ET", $mot_cle); 
509
		foreach ($tab_mots_cles as $mot) {
510
		foreach ($tab_mots_cles as $mot) {
510
			$champs .= "$i.cmc_id_mot_cle_utilisateur as $i , ";
511
			$champs .= "$i.cmc_id_mot_cle_utilisateur as $i , ";
511
			$table .= "cel_mots_cles_images $i , ";
512
			$table .= "cel_mots_cles_images $i , ";
512
			$where .= "$i.cmc_id_mot_cle_general = ".$this->bdd->quote($this->encoderMotCle($mot)).' AND ';
513
			$where .= "$i.cmc_id_mot_cle_general = ".$this->bdd->quote($this->encoderMotCle($mot)).' AND ';
513
			if ($i !== "a") {
514
			if ($i !== "a") {
514
				$where .= " $i.cmc_id_proprietaire = ".$j.".cmc_id_proprietaire AND ";
515
				$where .= " $i.cmc_id_proprietaire = ".$j.".cmc_id_proprietaire AND ";
515
				$j++;
516
				$j++;
516
			}
517
			}
517
			$i++;
518
			$i++;
518
		}
519
		}
519
		$where = rtrim($where,' AND '); $champs = rtrim($champs,' , '); $table = rtrim($table,' , ');
520
		$where = rtrim($where,' AND '); $champs = rtrim($champs,' , '); $table = rtrim($table,' , ');
520
		
521
		
521
		// Construction de la requête
522
		// Construction de la requête
522
		$prerequete = 	"SELECT $champs FROM $table WHERE $where "; 
523
		$prerequete = 	"SELECT $champs FROM $table WHERE $where "; 
523
		$elements = $this->executerRequete($prerequete);//print_r($elements);
524
		$elements = $this->executerRequete($prerequete);//print_r($elements);
524
		if ($elements != false && count($elements) > 0) {
525
		if ($elements != false && count($elements) > 0) {
525
			foreach ($elements as $occurence) {
526
			foreach ($elements as $occurence) {
526
				$occurence['cmc_id_mot_cle_utilisateur'] = '';
527
				$requete = ' (';
527
				for ($j = 'a'; $j < $i; $j++) {
528
				for ($j = 'a'; $j < $i; $j++) {
528
					$occurence['cmc_id_mot_cle_utilisateur'] .= $occurence[$j].',';
529
					$requete .= 'ci_meta_mots_cles like "%'.$occurence[$j].'%" AND ';
529
				}
530
				}
530
				$requete .= '(ci_meta_mots_cles = "'.$occurence['cmc_id_mot_cle_utilisateur'].'" AND ci_ce_utilisateur = '.
-
 
531
						$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
531
				$requete .= ' ci_ce_utilisateur = '.$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
532
			}
532
			}
533
		}
533
		}
534
		return $requete;
534
		return $requete;
535
	}		
535
	}		
536
	private function creerSousRequeteRechercheGenerale($chaine_requete) {
536
	private function creerSousRequeteRechercheGenerale($chaine_requete) {
537
		$requete = '';
537
		$requete = '';
538
		if (trim($chaine_requete) != '') {	
538
		if (trim($chaine_requete) != '') {	
539
			$chaine_requete = strtolower($chaine_requete);
539
			$chaine_requete = strtolower($chaine_requete);
540
			$chaine_requete = str_replace(' ', '_', $chaine_requete);
540
			$chaine_requete = str_replace(' ', '_', $chaine_requete);
541
			$requete = ' ('.
541
			$requete = ' ('.
542
				'b.nom_ret LIKE "'.$chaine_requete.'%"'.
542
				'b.nom_ret LIKE "'.$chaine_requete.'%"'.
543
				' OR '.
543
				' OR '.
544
				'b.nom_sel LIKE "'.$chaine_requete.'%"'.
544
				'b.nom_sel LIKE "'.$chaine_requete.'%"'.
545
				' OR '.
545
				' OR '.
546
				'b.location LIKE "'.$chaine_requete.'%" '.
546
				'b.location LIKE "'.$chaine_requete.'%" '.
547
				' OR '.
547
				' OR '.
548
				'b.id_location LIKE "'.$chaine_requete.'%" '.
548
				'b.id_location LIKE "'.$chaine_requete.'%" '.
549
				' OR '.
549
				' OR '.
550
				'c.ci_ce_utilisateur LIKE "'.$chaine_requete.'%" '.
550
				'c.ci_ce_utilisateur LIKE "'.$chaine_requete.'%" '.
551
				') ';
551
				') ';
552
		}
552
		}
553
		return $requete;
553
		return $requete;
554
	}
554
	}
555
	
555
	
556
	private function estUneRechercheGenerale() {
556
	private function estUneRechercheGenerale() {
557
		return isset($_GET['recherche']);
557
		return isset($_GET['recherche']);
558
	}
558
	}
559
	
559
	
560
	private function traiterCriteresMultiples($tableau_criteres) {
560
	private function traiterCriteresMultiples($tableau_criteres) {
561
		$tableau_criteres_pour_bdd = array();
561
		$tableau_criteres_pour_bdd = array();
562
				
562
				
563
		foreach($tableau_criteres as $nom_critere => $valeur_critere) {
563
		foreach($tableau_criteres as $nom_critere => $valeur_critere) {
564
			if (isset($this->criteres[$nom_critere])) {
564
			if (isset($this->criteres[$nom_critere])) {
565
				$tableau_criteres_pour_bdd[] = $this->criteres[$nom_critere].'='.$valeur_critere;
565
				$tableau_criteres_pour_bdd[] = $this->criteres[$nom_critere].'='.$valeur_critere;
566
			}
566
			}
567
		}
567
		}
568
		return $tableau_criteres_pour_bdd;
568
		return $tableau_criteres_pour_bdd;
569
	}
569
	}
570
 
570
 
571
	private function creerDescriptionComplet($donnees, $item) {
571
	private function creerDescriptionComplet($donnees, $item) {
572
		$auteur = $this->creerAuteur($donnees['ci_ce_utilisateur'], $this->etreFluxAdmin());
572
		$auteur = $this->creerAuteur($donnees['ci_ce_utilisateur'], $this->etreFluxAdmin());
573
		
573
		
574
		$id_img = $donnees['ci_id_image'];
574
		$id_img = $donnees['ci_id_image'];
575
		$nom_fichier = $donnees['ci_nom_original'];
575
		$nom_fichier = $donnees['ci_nom_original'];
576
		$url_img = $this->getUrlImage($donnees['ci_id_image'], 'CS');
576
		$url_img = $this->getUrlImage($donnees['ci_id_image'], 'CS');
577
		$url_img_normale = $this->getUrlImage($donnees['ci_id_image'], 'XL');
577
		$url_img_normale = $this->getUrlImage($donnees['ci_id_image'], 'XL');
578
		$mots_cles_image = $this->decoderMotsClesImg($donnees['identifiant'], $donnees['ci_meta_mots_cles']);
578
		$mots_cles_image = $this->decoderMotsClesImg($donnees['identifiant'], $donnees['ci_meta_mots_cles']);
579
		$note = ($donnees['ci_note_image'] +1).'/5';
579
		$note = ($donnees['ci_note_image'] +1).'/5';
580
		$commentaire_img = $donnees['ci_meta_comment'];
580
		$commentaire_img = $donnees['ci_meta_comment'];
581
		
581
		
582
		$id_obs = $donnees['id'];
582
		$id_obs = $donnees['id'];
583
		$famille = $donnees['famille'];
583
		$famille = $donnees['famille'];
584
		$nom_saisi = $donnees['nom_sel'];
584
		$nom_saisi = $donnees['nom_sel'];
585
		$nom_retenu = $donnees['nom_ret'];
585
		$nom_retenu = $donnees['nom_ret'];
586
		$mots_cles_obs = $this->decoderMotsClesObs($donnees['identifiant'], $donnees['mots_cles']);
586
		$mots_cles_obs = $this->decoderMotsClesObs($donnees['identifiant'], $donnees['mots_cles']);
587
		$lieu =  $donnees['location'].' ('.$donnees['id_location'].') > '.$donnees['lieudit'].' > '.$donnees['station'];
587
		$lieu =  $donnees['location'].' ('.$donnees['id_location'].') > '.$donnees['lieudit'].' > '.$donnees['station'];
588
		$milieu = $donnees['milieu'];
588
		$milieu = $donnees['milieu'];
589
		$coordonnees = ($this->etreNull($donnees['coord_x']) && $this->etreNull($donnees['coord_y'])) ? '' : $donnees['coord_x'].'/'.$donnees['coord_y'];
589
		$coordonnees = ($this->etreNull($donnees['coord_x']) && $this->etreNull($donnees['coord_y'])) ? '' : $donnees['coord_x'].'/'.$donnees['coord_y'];
590
		$commentaire_obs = $donnees['commentaire'];
590
		$commentaire_obs = $donnees['commentaire'];
591
		$date_observation = $this->formaterDate($donnees['date_observation'], '%A %d %B %Y');
591
		$date_observation = $this->formaterDate($donnees['date_observation'], '%A %d %B %Y');
592
		$date_transmission = $this->formaterDate($donnees['date_transmission']);
592
		$date_transmission = $this->formaterDate($donnees['date_transmission']);
593
		$date_modification = $this->formaterDate($donnees['date_modification']);
593
		$date_modification = $this->formaterDate($donnees['date_modification']);
594
		$date_creation = $this->formaterDate($donnees['date_creation']);
594
		$date_creation = $this->formaterDate($donnees['date_creation']);
595
		$transmission = $donnees['transmission'] == 1 ? "oui ($date_transmission)" : 'non';
595
		$transmission = $donnees['transmission'] == 1 ? "oui ($date_transmission)" : 'non';
596
		
596
		
597
		$description = '<style>.champ{color:grey} .gauche{float:left;padding:0 20px 0 0;} ul{list-style-type:none;padding:0;}</style>'.
597
		$description = '<style>.champ{color:grey} .gauche{float:left;padding:0 20px 0 0;} ul{list-style-type:none;padding:0;}</style>'.
598
			'<h2>'.(!$this->etreNull($id_obs) ? "Image #$id_img liée à l'observation #$id_obs" : "Image #$id_img non liée à une observation.").'</h2>'.
598
			'<h2>'.(!$this->etreNull($id_obs) ? "Image #$id_img liée à l'observation #$id_obs" : "Image #$id_img non liée à une observation.").'</h2>'.
599
			'<a href="'.$url_img_normale.'"><img class="gauche" src="'.$url_img.'" alt="'.$nom_fichier.'" /></a>'.
599
			'<a href="'.$url_img_normale.'"><img class="gauche" src="'.$url_img.'" alt="'.$nom_fichier.'" /></a>'.
600
			'<div class="gauche">'.
600
			'<div class="gauche">'.
601
			'<h3>'.'Image'.'</h3>'.
601
			'<h3>'.'Image'.'</h3>'.
602
			'<ul>'.
602
			'<ul>'.
603
			'<li>'.'<span class="champ">URL :</span> <a href="'.$url_img_normale.'" onclick="javascript:window.open(this.href);return false;">'.$url_img_normale.'</a></li>'.
603
			'<li>'.'<span class="champ">URL :</span> <a href="'.$url_img_normale.'" onclick="javascript:window.open(this.href);return false;">'.$url_img_normale.'</a></li>'.
604
			'<li>'.'<span class="champ">Importée le :</span> '.$item['date_maj_simple'].'</li>'.
604
			'<li>'.'<span class="champ">Importée le :</span> '.$item['date_maj_simple'].'</li>'.
605
			'<li>'.'<span class="champ">Par :</span> '.
605
			'<li>'.'<span class="champ">Par :</span> '.
606
				(($this->etreFluxAdmin()) ? '<a href="mailto:'.$auteur.'">'.$auteur.'</a>' : $auteur).
606
				(($this->etreFluxAdmin()) ? '<a href="mailto:'.$auteur.'">'.$auteur.'</a>' : $auteur).
607
			'</li>'.
607
			'</li>'.
608
			'<li>'.'<span class="champ">Nom du fichier :</span> '.$nom_fichier.'</li>'.
608
			'<li>'.'<span class="champ">Nom du fichier :</span> '.$nom_fichier.'</li>'.
609
			'<li>'.'<span class="champ">Note qualité :</span> '.$note.'</li>'.
609
			'<li>'.'<span class="champ">Note qualité :</span> '.$note.'</li>'.
610
			'<li>'.'<span class="champ">Commentaires :</span> '.$commentaire_img.'</li>'.
610
			'<li>'.'<span class="champ">Commentaires :</span> '.$commentaire_img.'</li>'.
611
			'<li>'.'<span class="champ">Mots-clés :</span> '.implode(', ', $mots_cles_image).'</li>'.
611
			'<li>'.'<span class="champ">Mots-clés :</span> '.implode(', ', $mots_cles_image).'</li>'.
612
			'</ul>'.
612
			'</ul>'.
613
			'</div>';
613
			'</div>';
614
			// TODO : ajouter le champ commentaire EXIF.
614
			// TODO : ajouter le champ commentaire EXIF.
615
		if (! $this->etreNull($id_obs)) {
615
		if (! $this->etreNull($id_obs)) {
616
			$description .= 
616
			$description .= 
617
				'<div class="gauche">'.
617
				'<div class="gauche">'.
618
				'<h3>'.'Observation'.'</h3>'.
618
				'<h3>'.'Observation'.'</h3>'.
619
				'<ul>'.
619
				'<ul>'.
620
				'<li>'.'<span class="champ">Famille :</span> '.$famille.'</li>'.
620
				'<li>'.'<span class="champ">Famille :</span> '.$famille.'</li>'.
621
				'<li>'.'<span class="champ">Nom saisi :</span> '.$nom_saisi.'</li>'.
621
				'<li>'.'<span class="champ">Nom saisi :</span> '.$nom_saisi.'</li>'.
622
				'<li>'.'<span class="champ">Nom retenu :</span> '.$nom_retenu.'</li>'.
622
				'<li>'.'<span class="champ">Nom retenu :</span> '.$nom_retenu.'</li>'.
623
				'<li>'.'<span class="champ">Observée le :</span> '.$date_observation.'</li>'.
623
				'<li>'.'<span class="champ">Observée le :</span> '.$date_observation.'</li>'.
624
				'<li>'.'<span class="champ">Lieu :</span> '.$lieu.'</li>'.
624
				'<li>'.'<span class="champ">Lieu :</span> '.$lieu.'</li>'.
625
				'<li>'.'<span class="champ">Milieu :</span> '.$milieu.'</li>'.
625
				'<li>'.'<span class="champ">Milieu :</span> '.$milieu.'</li>'.
626
				(($this->etreFluxAdmin()) ? '<li><span class="champ">Coordonnées (Lat/Long) :</span> '.$coordonnees.'</li>' : '').
626
				(($this->etreFluxAdmin()) ? '<li><span class="champ">Coordonnées (Lat/Long) :</span> '.$coordonnees.'</li>' : '').
627
				'<li>'.'<span class="champ">Commentaire :</span> '.$commentaire_obs.'</li>'.
627
				'<li>'.'<span class="champ">Commentaire :</span> '.$commentaire_obs.'</li>'.
628
				'<li>'.'<span class="champ">Mots-clés :</span> '.implode(', ', $mots_cles_obs).'</li>'.
628
				'<li>'.'<span class="champ">Mots-clés :</span> '.implode(', ', $mots_cles_obs).'</li>'.
629
				(($this->etreFluxAdmin()) ? '<li><span class="champ">Transmis (= public) :</span> '.$transmission.'</li>' : '').
629
				(($this->etreFluxAdmin()) ? '<li><span class="champ">Transmis (= public) :</span> '.$transmission.'</li>' : '').
630
				'<li><span class="champ">Modifiée le :</span> '.$date_modification.'</li>'.
630
				'<li><span class="champ">Modifiée le :</span> '.$date_modification.'</li>'.
631
				'<li><span class="champ">Créée le :</span> '.$date_creation.'</li>'.
631
				'<li><span class="champ">Créée le :</span> '.$date_creation.'</li>'.
632
				'</ul>'.
632
				'</ul>'.
633
				'</div>';
633
				'</div>';
634
		}
634
		}
635
		$description = $this->nettoyerTexte($description);
635
		$description = $this->nettoyerTexte($description);
636
		return $description;
636
		return $description;
637
	}
637
	}
638
	
638
	
639
	private function getServiceParMotsCles() {
639
	private function getServiceParMotsCles() {
640
		$contenu = '';
640
		$contenu = '';
641
		$mot_cle = $this->parametres[0];
641
		$mot_cle = $this->parametres[0];
642
 
642
 
643
		if (isset($mot_cle)) {
643
		if (isset($mot_cle)) {
644
			$mot_cle_encode = $this->bdd->quote($this->encoderMotCle($mot_cle));
644
			$mot_cle_encode = $this->bdd->quote($this->encoderMotCle($mot_cle));
645
 
645
 
646
			// Construction de la requête
646
			// Construction de la requête
647
			$requete = 	'SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire '.
647
			$requete = 	'SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire '.
648
				'FROM cel_mots_cles_images '.
648
				'FROM cel_mots_cles_images '.
649
				"WHERE cmc_id_mot_cle_general = $mot_cle_encode ";
649
				"WHERE cmc_id_mot_cle_general = $mot_cle_encode ";
650
			$elements = $this->executerRequete($requete);
650
			$elements = $this->executerRequete($requete);
651
			
651
			
652
			if ($elements != false && count($elements) > 0) {
652
			if ($elements != false && count($elements) > 0) {
653
				// Pré-construction du where de la requête
653
				// Pré-construction du where de la requête
654
				$tpl_where = '(ci_meta_mots_cles LIKE "%%%s%%" AND ci_ce_utilisateur = %s )';
654
				$tpl_where = '(ci_meta_mots_cles LIKE "%%%s%%" AND ci_ce_utilisateur = %s )';
655
				$requete_where = array();
655
				$requete_where = array();
656
				foreach ($elements as $occurence) {
656
				foreach ($elements as $occurence) {
657
					$requete_where[] = sprintf($tpl_where, $occurence['cmc_id_mot_cle_utilisateur'], $this->bdd->quote($occurence['cmc_id_proprietaire']));
657
					$requete_where[] = sprintf($tpl_where, $occurence['cmc_id_mot_cle_utilisateur'], $this->bdd->quote($occurence['cmc_id_proprietaire']));
658
				}
658
				}
659
				
659
				
660
				// Construction de la requête
660
				// Construction de la requête
661
				$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
661
				$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
662
					'	ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
662
					'	ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
663
					'FROM cel_images AS cim '.
663
					'FROM cel_images AS cim '.
664
					'	LEFT JOIN cel_obs_images AS coi '.
664
					'	LEFT JOIN cel_obs_images AS coi '.
665
					'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
665
					'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
666
					'	LEFT JOIN cel_inventory AS ci '.
666
					'	LEFT JOIN cel_inventory AS ci '.
667
					'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
667
					'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
668
					'WHERE '.implode(" \nOR ", $requete_where).' '.
668
					'WHERE '.implode(" \nOR ", $requete_where).' '.
669
					'	'.(($this->etreFluxAdmin()) ? '' : 'AND ci.transmission = 1').' '.
669
					'	'.(($this->etreFluxAdmin()) ? '' : 'AND ci.transmission = 1').' '.
670
					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
670
					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
671
					"LIMIT $this->start, $this->limit ";
671
					"LIMIT $this->start, $this->limit ";
672
				$elements = $this->executerRequete($requete);
672
				$elements = $this->executerRequete($requete);
673
				
673
				
674
				// Création du contenu
674
				// Création du contenu
675
				$contenu = $this->executerService($elements);
675
				$contenu = $this->executerService($elements);
676
			} else {
676
			} else {
677
				$this->messages[] = "Aucune image ne correspond à ce mot clé.";
677
				$this->messages[] = "Aucune image ne correspond à ce mot clé.";
678
			}
678
			}
679
		} else {
679
		} else {
680
			$this->messages[] = "Le service demandé nécessite d'indiquer un mot-clé en dernier paramêtre.";
680
			$this->messages[] = "Le service demandé nécessite d'indiquer un mot-clé en dernier paramêtre.";
681
		}
681
		}
682
		return $contenu;
682
		return $contenu;
683
	}
683
	}
684
	
684
	
685
	private function getServiceParCommune() {
685
	private function getServiceParCommune() {
686
		$contenu = '';
686
		$contenu = '';
687
		$commune = $this->parametres[0];
687
		$commune = $this->parametres[0];
688
		if (isset($commune)) {
688
		if (isset($commune)) {
689
			$commune = $this->bdd->quote($commune);
689
			$commune = $this->bdd->quote($commune);
690
			
690
			
691
			// Construction de la requête
691
			// Construction de la requête
692
			$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
692
			$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
693
			'	ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
693
			'	ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
694
			'FROM cel_images AS cim '.
694
			'FROM cel_images AS cim '.
695
			'	LEFT JOIN cel_obs_images AS coi '.
695
			'	LEFT JOIN cel_obs_images AS coi '.
696
			'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
696
			'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
697
			'	LEFT JOIN cel_inventory AS ci '.
697
			'	LEFT JOIN cel_inventory AS ci '.
698
			'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
698
			'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
699
			"WHERE ci.location = $commune ".	
699
			"WHERE ci.location = $commune ".	
700
			'	'.(($this->etreFluxAdmin()) ? '' : 'AND ci.transmission = 1').' '.
700
			'	'.(($this->etreFluxAdmin()) ? '' : 'AND ci.transmission = 1').' '.
701
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
701
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
702
			"LIMIT $this->start,$this->limit ";
702
			"LIMIT $this->start,$this->limit ";
703
			$elements = $this->executerRequete($requete);
703
			$elements = $this->executerRequete($requete);
704
			
704
			
705
			// Création du contenu
705
			// Création du contenu
706
			if ($elements != false && count($elements) > 0) {
706
			if ($elements != false && count($elements) > 0) {
707
				$contenu = $this->executerService($elements);
707
				$contenu = $this->executerService($elements);
708
			} else {
708
			} else {
709
				$this->messages[] = "Aucune image ne correspond à cette commune.";
709
				$this->messages[] = "Aucune image ne correspond à cette commune.";
710
			}
710
			}
711
		} else {
711
		} else {
712
			$this->messages[] = "Le service demandé nécessite d'indiquer une nom de commune en dernier paramêtre.";
712
			$this->messages[] = "Le service demandé nécessite d'indiquer une nom de commune en dernier paramêtre.";
713
		}
713
		}
714
		return $contenu;
714
		return $contenu;
715
	}
715
	}
716
}	
716
}