Subversion Repositories eFlore/Applications.cel

Rev

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

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