Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 813 Rev 814
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 $auteurs = array();
22
	private $flux = array();
22
	private $flux = array();
23
	
23
	
24
	private $format_image = 'XL';
24
	private $format_image = 'XL';
25
	
25
	
26
	private $criteres = array(
26
	private $criteres = array(
27
		'utilisateur' => 'c.ci_ce_utilisateur', 
27
		'utilisateur' => 'c.ci_ce_utilisateur', 
28
		'commune' => 'b.location', 
28
		'commune' => 'b.location', 
29
		'dept' => 'b.id_location',
29
		'dept' => 'b.id_location',
30
		'taxon' => 'b.nom_ret',
30
		'taxon' => 'b.nom_ret',
31
		'commentaire' => 'c.ci_meta_comment',
31
		'commentaire' => 'c.ci_meta_comment',
32
		'date' => 'c.ci_meta_date',
32
		'date' => 'c.ci_meta_date',
33
		'tag' => 'tag',
33
		'tag' => 'tag',
34
		'projet' => 'projet');
34
		'projet' => 'projet');
35
	
35
	
36
	/**
36
	/**
37
	 * Méthode appelée avec une requête de type GET.
37
	 * Méthode appelée avec une requête de type GET.
38
	 */
38
	 */
39
	public function getElement($params = array()) {
39
	public function getElement($params = array()) {
40
		// Initialisation des variables
40
		// Initialisation des variables
41
		$this->parametres_origines = $params;
41
		$this->parametres_origines = $params;
42
		$info = array();
42
		$info = array();
43
		$contenu = '';
43
		$contenu = '';
44
		
44
		
45
		if (! $this->etreFluxAdmin() || $this->authentifierAdmin()) {
45
		if (! $this->etreFluxAdmin() || $this->authentifierAdmin()) {
46
			// Pré traitement des paramêtres
46
			// Pré traitement des paramêtres
47
			$pour_bdd = false;
47
			$pour_bdd = false;
48
			$p = $this->traiterParametres(array('service', 'format'), $params, $pour_bdd);
48
			$p = $this->traiterParametres(array('service', 'format'), $params, $pour_bdd);
49
			extract($p);
49
			extract($p);
50
			$this->parametres = $params;
50
			$this->parametres = $params;
51
			$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
51
			$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
52
			
52
			
53
			// Récupération de la liste des flux
53
			// Récupération de la liste des flux
54
			$this->chargerListeDesFlux();
54
			$this->chargerListeDesFlux();
55
			
55
			
56
			// Chargement du bon type de service demandé
56
			// Chargement du bon type de service demandé
57
			if (isset($service)) {
57
			if (isset($service)) {
58
				$this->service = $this->traiterNomService($service);
58
				$this->service = $this->traiterNomService($service);
59
				$methode = $this->getNomMethodeService();
59
				$methode = $this->getNomMethodeService();
60
				if (method_exists($this, $methode)) {
60
				if (method_exists($this, $methode)) {
61
					if (isset($format) && preg_match('/^(?:rss1|rss2|atom)$/i', $format)) {
61
					if (isset($format) && preg_match('/^(?:rss1|rss2|atom)$/i', $format)) {
62
						// Mise en minuscule de l'indication du format
62
						// Mise en minuscule de l'indication du format
63
						$this->format = strtolower($format);
63
						$this->format = strtolower($format);
64
						// Définition du fichier squelette demandé
64
						// Définition du fichier squelette demandé
65
						$this->squelette = $this->squelette_dossier.$this->format.'.tpl.xml';
65
						$this->squelette = $this->squelette_dossier.$this->format.'.tpl.xml';
66
					} else if (isset($this->flux[$this->service])) {
66
					} else if (isset($this->flux[$this->service])) {
67
						$this->format = '';
67
						$this->format = '';
68
						$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.";
69
					}
69
					}
70
					
70
					
71
					if (!isset($this->flux[$this->service]) || isset($this->format)) {
71
					if (!isset($this->flux[$this->service]) || isset($this->format)) {
72
						// 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
73
						array_shift($this->parametres);
73
						array_shift($this->parametres);
74
						array_shift($this->parametres);
74
						array_shift($this->parametres);
75
						
75
						
76
						// Récupération du contenu à renvoyer
76
						// Récupération du contenu à renvoyer
77
						$contenu = $this->$methode();
77
						$contenu = $this->$methode();
78
					}
78
					}
79
				} else {
79
				} else {
80
					$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.";
81
				}
81
				}
82
			} else {
82
			} else {
83
				$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é.";
84
			}
84
			}
85
		}
85
		}
86
		
86
		
87
		// Envoie sur la sortie standard
87
		// Envoie sur la sortie standard
88
		$encodage = 'utf-8';
88
		$encodage = 'utf-8';
89
		$mime = $this->getTypeMime();
89
		$mime = $this->getTypeMime();
90
		$formatage_json = $this->getFormatageJson();
90
		$formatage_json = $this->getFormatageJson();
91
		$this->envoyer($contenu, $mime, $encodage, $formatage_json);
91
		$this->envoyer($contenu, $mime, $encodage, $formatage_json);
92
	}
92
	}
93
	
93
	
94
	private function chargerListeDesFlux() {
94
	private function chargerListeDesFlux() {
95
		$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', 
96
			"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.");
97
		$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)', 
98
			"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.");
99
		$this->setFlux('par-mots-cles', 'Flux de syndication obsolète',
99
		$this->setFlux('par-mots-cles', 'Flux de syndication obsolète',
100
			"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'.");
101
		$this->setFlux('par-commune','Flux de syndication obsolète',
101
		$this->setFlux('par-commune','Flux de syndication obsolète',
102
			"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'.");
103
		$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 '.
104
			'filtrées par un ou plusieurs critères',
104
			'filtrées par un ou plusieurs critères',
105
			"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 ".
106
			"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 ".
107
			"et/ou date.");
107
			"et/ou date.");
108
	}
108
	}
109
	
109
	
110
	private function setFlux($nom, $titre, $description) {
110
	private function setFlux($nom, $titre, $description) {
111
		$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CelSyndicationImage/';
111
		$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CelSyndicationImage/';
112
		$formats = array('atom', 'rss2', 'rss1');
112
		$formats = array('atom', 'rss2', 'rss1');
113
		$flux = array();
113
		$flux = array();
114
		foreach ($formats as $format) {
114
		foreach ($formats as $format) {
115
			$url = $url_base.$nom.'/'.$format;
115
			$url = $url_base.$nom.'/'.$format;
116
			$flux[$format] = $url;
116
			$flux[$format] = $url;
117
		}
117
		}
118
		$this->flux[$nom] = array('titre' => $titre, 'description' => $description, 'urls' => $flux);
118
		$this->flux[$nom] = array('titre' => $titre, 'description' => $description, 'urls' => $flux);
119
	}
119
	}
120
 
120
 
121
	private function getFlux($nom) {
121
	private function getFlux($nom) {
122
		return isset($this->flux[$nom]) ? $this->flux[$nom] : array();
122
		return isset($this->flux[$nom]) ? $this->flux[$nom] : array();
123
	}
123
	}
124
	
124
	
125
	private function traiterNomService($nom) {
125
	private function traiterNomService($nom) {
126
		$nom = strtolower($nom);
126
		$nom = strtolower($nom);
127
		return $nom;
127
		return $nom;
128
	}
128
	}
129
	
129
	
130
	private function getNomMethodeService() {
130
	private function getNomMethodeService() {
131
		$methode = '';
131
		$methode = '';
132
		$service_formate = str_replace(' ', '', ucwords(implode(' ', explode('-', $this->service))));
132
		$service_formate = str_replace(' ', '', ucwords(implode(' ', explode('-', $this->service))));
133
		$methode = 'getService'.$service_formate;
133
		$methode = 'getService'.$service_formate;
134
		return $methode;
134
		return $methode;
135
	}
135
	}
136
	
136
	
137
	private function getUrlBase() {
137
	private function getUrlBase() {
138
		$url_base = sprintf($this->config['settings']['baseURLAbsolu'], get_class($this).'/');
138
		$url_base = sprintf($this->config['settings']['baseURLAbsolu'], get_class($this).'/');
139
		return $url_base;
139
		return $url_base;
140
	}
140
	}
141
	
141
	
142
	private function getUrlServiceBase() {
142
	private function getUrlServiceBase() {
143
		$url_service = $this->getUrlBase().implode('/', $this->parametres_origines);
143
		$url_service = $this->getUrlBase().implode('/', $this->parametres_origines);
144
		return $url_service;
144
		return $url_service;
145
	}
145
	}
146
	
146
	
147
	private function getTypeMime() {
147
	private function getTypeMime() {
148
		$mime = '';
148
		$mime = '';
149
		switch ($this->format) {
149
		switch ($this->format) {
150
			case 'atom' :
150
			case 'atom' :
151
				$mime = 'application/atom+xml';
151
				$mime = 'application/atom+xml';
152
				break;
152
				break;
153
			case 'rss1' :
153
			case 'rss1' :
154
			case 'rss2' :
154
			case 'rss2' :
155
				$mime = 'application/rss+xml';
155
				$mime = 'application/rss+xml';
156
				break;
156
				break;
157
			case 'opml' :
157
			case 'opml' :
158
				$mime = 'text/x-opml';
158
				$mime = 'text/x-opml';
159
				break;
159
				break;
160
			default:
160
			default:
161
				$mime = 'text/html';
161
				$mime = 'text/html';
162
		}
162
		}
163
		return $mime;
163
		return $mime;
164
	}
164
	}
165
	
165
	
166
	private function getFormatageJson() {
166
	private function getFormatageJson() {
167
		$json = false;
167
		$json = false;
168
		switch ($this->service) {
168
		switch ($this->service) {
169
			case 'liste-des-flux' :
169
			case 'liste-des-flux' :
170
				$json = true;
170
				$json = true;
171
				break;
171
				break;
172
			default:
172
			default:
173
				$json = false;
173
				$json = false;
174
		}
174
		}
175
		return $json;
175
		return $json;
176
	}
176
	}
177
	
177
	
178
	private function creerCategorie($element) {
178
	private function creerCategorie($element) {
179
		$categorie = '';
179
		$categorie = '';
180
		$categorie = 'Image';
180
		$categorie = 'Image';
181
		$categorie = $this->nettoyerTexte($categorie);
181
		$categorie = $this->nettoyerTexte($categorie);
182
		return $categorie;
182
		return $categorie;
183
	}
183
	}
184
		
184
		
185
	private function etreFluxAdmin() {
185
	private function etreFluxAdmin() {
186
		return (isset($_GET['admin']) && $_GET['admin'] == '1') ? true : false;
186
		return (isset($_GET['admin']) && $_GET['admin'] == '1') ? true : false;
187
	}
187
	}
188
	
188
	
189
	private function creerUrlService() {
189
	private function creerUrlService() {
190
		$url_service = $this->getUrlServiceBase();
190
		$url_service = $this->getUrlServiceBase();
191
		if (count($_GET) > 0) {
191
		if (count($_GET) > 0) {
192
			$parametres_get = array();
192
			$parametres_get = array();
193
			foreach ($_GET as $cle => $valeur) {
193
			foreach ($_GET as $cle => $valeur) {
194
				$parametres_get[] = $cle.'='.$valeur;
194
				$parametres_get[] = $cle.'='.$valeur;
195
			}
195
			}
196
			$url_service .= '?'.implode('&amp;', $parametres_get);
196
			$url_service .= '?'.implode('&amp;', $parametres_get);
197
		}
197
		}
198
		return $url_service;
198
		return $url_service;
199
	}
199
	}
200
	
200
	
201
	protected function executerRequete($requete, $retour = 'All', $mode = PDO::FETCH_ASSOC) {
201
	protected function executerRequete($requete, $retour = 'All', $mode = PDO::FETCH_ASSOC) {
202
		try {
202
		try {
203
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
203
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
204
			if ($infos === false) {
204
			if ($infos === false) {
205
				$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";
206
			}
206
			}
207
		} catch (PDOException $e) {
207
		} catch (PDOException $e) {
208
			$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());
209
		}
209
		}
210
		return $infos;
210
		return $infos;
211
	}
211
	}
212
	
212
	
213
	private function executerService($elements) {
213
	private function executerService($elements) {
214
		// Prétraitement des données
214
		// Prétraitement des données
215
		$donnees = $this->construireDonneesCommunesAuFlux($elements);
215
		$donnees = $this->construireDonneesCommunesAuFlux($elements);
216
		foreach ($elements as $element) {
216
		foreach ($elements as $element) {
217
			$identifiants[$element['ci_ce_utilisateur']] = $element['ci_ce_utilisateur'];
217
			$identifiants[$element['ci_ce_utilisateur']] = $element['ci_ce_utilisateur'];
218
		}
218
		}
219
		$this->auteurs = $this->creerAuteurs($identifiants);
219
		$this->auteurs = $this->creerAuteurs($identifiants);
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->auteurs[$info['ci_ce_utilisateur']];
261
		$item['modifier_par'] = $this->auteurs[$info['ci_ce_utilisateur']];
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 = 	(isset($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 '.(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').' '.
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->auteurs[$element['ci_ce_utilisateur']];
347
			$titre = "Ajout d'une photo par ".$this->auteurs[$element['ci_ce_utilisateur']];
348
		} else {
348
		} else {
349
			$titre = $element['nom_sel'].' [nn'.$element['num_nom_sel'].'] par '.$this->auteurs[$element['ci_ce_utilisateur']];
349
			$titre = $element['nom_sel'].' [nn'.$element['num_nom_sel'].'] par '.$this->auteurs[$element['ci_ce_utilisateur']];
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 '.(($this->etreFluxAdmin()) ? '' : ' b.transmission = 1  AND ').
397
			'	AND b.identifiant = c.ci_ce_utilisateur '.
397
			'	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 = str_replace(' AND ) ',' ', $requete);
409
		$requete = str_replace(' AND ) ',' ', $requete);
410
		$requete = rtrim($requete, 'AND ');
410
		$requete = rtrim($requete, 'AND ');
411
		$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  : 
412
			'c.ci_meta_date_ajout DESC').' '."LIMIT $this->start,$this->limit ";
412
			'c.ci_meta_date_ajout DESC').' '."LIMIT $this->start,$this->limit ";
413
		
-
 
414
		$elements = $this->executerRequete($requete);
413
		$elements = $this->executerRequete($requete);
415
 
414
 
416
		// Création du contenu
415
		// Création du contenu
417
		if ($elements != false && count($elements) > 0) {
416
		if ($elements != false && count($elements) > 0) {
418
			$contenu = $this->executerService($elements);
417
			$contenu = $this->executerService($elements);
419
		} else {
418
		} else {
420
			$this->messages[] = "Aucune image disponible.";
419
			$this->messages[] = "Aucune image disponible.";
421
		}
420
		}
422
        
421
        
423
        return $contenu;
422
        return $contenu;
424
	}
423
	}
425
	
424
	
426
	private function creerSousRequeteRechercheParCriteres($criteres) {
425
	private function creerSousRequeteRechercheParCriteres($criteres) {
427
		$requete = '';
426
		$requete = '';
428
		foreach ($criteres as $pair) {
427
		foreach ($criteres as $pair) {
429
			$nom_valeur = explode("=",$pair);
428
			$nom_valeur = explode("=",$pair);
430
			if (sizeof($nom_valeur) != 0) {
429
			if (sizeof($nom_valeur) != 0) {
431
				switch ($nom_valeur[0]) {
430
				switch ($nom_valeur[0]) {
432
					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;
433
					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;
434
					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]);
435
						foreach($mots_comment_liste as $mot_comment) {
434
						foreach($mots_comment_liste as $mot_comment) {
436
							$mot_comment = trim($mot_comment) ;
435
							$mot_comment = trim($mot_comment) ;
437
							$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote('%'.$mot_comment.'%').' AND ';
436
							$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote('%'.$mot_comment.'%').' AND ';
438
						}
437
						}
439
						break;
438
						break;
440
					case "c.ci_meta_date" : 
439
					case "c.ci_meta_date" : 
441
						$nom_valeur[1] = str_replace('/', '-', $nom_valeur[1]);
440
						$nom_valeur[1] = str_replace('/', '-', $nom_valeur[1]);
442
						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)) {
443
							$nom_valeur[1] = $matches[3].'-'.$matches[2].'-'.$matches[1];
442
							$nom_valeur[1] = $matches[3].'-'.$matches[2].'-'.$matches[1];
444
						}
443
						}
445
						$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;
446
					case "b.nom_ret" : 
445
					case "b.nom_ret" : 
447
						if ($nom_valeur[1] == "indetermine") $nom_valeur[1] = 'null';						
446
						if ($nom_valeur[1] == "indetermine") $nom_valeur[1] = 'null';						
448
						$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 "%'.
449
							$nom_valeur[1].'%") AND '; break;
448
							$nom_valeur[1].'%") AND '; break;
450
					case "tag" : $requete .= $this->creerSousRequeteMotsCles($nom_valeur[1]); break; 
449
					case "tag" : $requete .= $this->creerSousRequeteMotsCles($nom_valeur[1]); break; 
451
					case "projet" : $requete .= $this->creerSousRequeteProjet($nom_valeur[1]); break; 		
450
					case "projet" : $requete .= $this->creerSousRequeteProjet($nom_valeur[1]); break; 		
452
					default : $requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'" AND '; break;
451
					default : $requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'" AND '; break;
453
				}
452
				}
454
			}
453
			}
455
		}
454
		}
456
		$requete = rtrim($requete,' AND ');
455
		$requete = rtrim($requete,' AND ');
457
		return $requete;
456
		return $requete;
458
	}
457
	}
459
	
458
	
460
	private function creerSousRequeteMotsCles($mot_cle) {
459
	private function creerSousRequeteMotsCles($mot_cle) {
461
		if (preg_match('/.*OU.*/', $mot_cle)) {
460
		if (preg_match('/.*OU.*/', $mot_cle)) {
462
			$requete = $this->creerSousRequeteMotsClesOu($mot_cle);
461
			$requete = $this->creerSousRequeteMotsClesOu($mot_cle);
463
		} else if (preg_match('/.*ET.*/', $mot_cle)) {
462
		} else if (preg_match('/.*ET.*/', $mot_cle)) {
464
			$requete = $this->creerSousRequeteMotsClesEt($mot_cle);
463
			$requete = $this->creerSousRequeteMotsClesEt($mot_cle);
465
		} else {		
464
		} else {		
466
			// Construction de la requête
465
			// Construction de la requête
467
			$prerequete = 	"SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_images WHERE ".
466
			$prerequete = 	"SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_images WHERE ".
468
				'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)); 
469
			$elements = $this->executerRequete($prerequete);
468
			$elements = $this->executerRequete($prerequete);
470
			if ($elements != false && count($elements) > 0) {
469
			if ($elements != false && count($elements) > 0) {
471
				$requete = ' ( ';
470
				$requete = ' ( ';
472
				foreach ($elements as $occurence) {
471
				foreach ($elements as $occurence) {
473
					$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
472
					$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
474
						$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';	
473
						$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';	
475
				}
474
				}
476
			} else {
475
			} else {
477
				$requete = ' (ci_meta_mots_cles like "inexistant" OR';
476
				$requete = ' (ci_meta_mots_cles like "inexistant" OR';
478
			}
477
			}
479
		}
478
		}
480
		$requete = rtrim($requete,' OR ').' ) AND ';
479
		$requete = rtrim($requete,' OR ').' ) AND ';
481
		return $requete;
480
		return $requete;
482
	}
481
	}
483
	
482
	
484
	private function creerSousRequeteMotsClesOu($mot_cle) {
483
	private function creerSousRequeteMotsClesOu($mot_cle) {
485
		$tab_mots_cles = explode('OU', $mot_cle);
484
		$tab_mots_cles = explode('OU', $mot_cle);
486
		$where = '';
485
		$where = '';
487
		foreach ($tab_mots_cles as $mot) {
486
		foreach ($tab_mots_cles as $mot) {
488
			$where .= 'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle(trim($mot))).' OR ';
487
			$where .= 'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle(trim($mot))).' OR ';
489
		}
488
		}
490
		$where = rtrim($where,' OR ');
489
		$where = rtrim($where,' OR ');
491
		
490
		
492
		// Construction de la requête
491
		// Construction de la requête
493
		$prerequete = 	"SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_images WHERE $where "; 
492
		$prerequete = 	"SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_images WHERE $where "; 
494
		$elements = $this->executerRequete($prerequete);//print_r($elements);
493
		$elements = $this->executerRequete($prerequete);//print_r($elements);
495
		if ($elements != false && count($elements) > 0) {
494
		if ($elements != false && count($elements) > 0) {
496
			$requete = ' ( ';
495
			$requete = ' ( ';
497
			foreach ($elements as $occurence) {
496
			foreach ($elements as $occurence) {
498
				$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
497
				$requete .= '(ci_meta_mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND ci_ce_utilisateur = '.
499
					$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
498
					$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
500
			}
499
			}
501
		} else {
500
		} else {
502
			$requete = ' (ci_meta_mots_cles like "inexistant" OR';
501
			$requete = ' (ci_meta_mots_cles like "inexistant" OR';
503
		}
502
		}
504
		return $requete;
503
		return $requete;
505
	}
504
	}
506
	
505
	
507
	private function creerSousRequeteMotsClesEt($mot_cle) {
506
	private function creerSousRequeteMotsClesEt($mot_cle) {
508
		$where = '';
507
		$where = '';
509
		$champs = 'a.cmc_id_proprietaire , ';
508
		$champs = 'a.cmc_id_proprietaire , ';
510
		$table = '';
509
		$table = '';
511
		$i = "a"; $j = "a";
510
		$i = "a"; $j = "a";
512
		
511
		
513
		$tab_mots_cles = explode("ET", $mot_cle); 
512
		$tab_mots_cles = explode("ET", $mot_cle); 
514
		foreach ($tab_mots_cles as $mot) {
513
		foreach ($tab_mots_cles as $mot) {
515
			$champs .= "$i.cmc_id_mot_cle_utilisateur as $i , ";
514
			$champs .= "$i.cmc_id_mot_cle_utilisateur as $i , ";
516
			$table .= "cel_mots_cles_images $i , ";
515
			$table .= "cel_mots_cles_images $i , ";
517
			$where .= "$i.cmc_id_mot_cle_general = ".$this->bdd->quote($this->encoderMotCle(trim($mot))).' AND ';
516
			$where .= "$i.cmc_id_mot_cle_general = ".$this->bdd->quote($this->encoderMotCle(trim($mot))).' AND ';
518
			if ($i !== "a") {
517
			if ($i !== "a") {
519
				$where .= " $i.cmc_id_proprietaire = ".$j.".cmc_id_proprietaire AND ";
518
				$where .= " $i.cmc_id_proprietaire = ".$j.".cmc_id_proprietaire AND ";
520
				$j++;
519
				$j++;
521
			}
520
			}
522
			$i++;
521
			$i++;
523
		}
522
		}
524
		$where = rtrim($where,' AND '); $champs = rtrim($champs,' , '); $table = rtrim($table,' , ');
523
		$where = rtrim($where,' AND '); $champs = rtrim($champs,' , '); $table = rtrim($table,' , ');
525
		
524
		
526
		// Construction de la requête
525
		// Construction de la requête
527
		$prerequete = 	"SELECT $champs FROM $table WHERE $where ";
526
		$prerequete = 	"SELECT $champs FROM $table WHERE $where ";
528
		$elements = $this->executerRequete($prerequete);//print_r($elements);
527
		$elements = $this->executerRequete($prerequete);//print_r($elements);
529
		if ($elements != false && count($elements) > 0) {
528
		if ($elements != false && count($elements) > 0) {
530
			$requete = ' ( ';
529
			$requete = ' ( ';
531
			foreach ($elements as $occurence) {
530
			foreach ($elements as $occurence) {
532
				$requete .= ' (';
531
				$requete .= ' (';
533
				for ($j = 'a'; $j < $i; $j++) {
532
				for ($j = 'a'; $j < $i; $j++) {
534
					$requete .= 'ci_meta_mots_cles like "%'.$occurence[$j].'%" AND ';
533
					$requete .= 'ci_meta_mots_cles like "%'.$occurence[$j].'%" AND ';
535
				}
534
				}
536
				$requete .= ' ci_ce_utilisateur = '.$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
535
				$requete .= ' ci_ce_utilisateur = '.$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
537
			}
536
			}
538
		} else {
537
		} else {
539
			$requete = ' (ci_meta_mots_cles like "inexistant" OR';
538
			$requete = ' (ci_meta_mots_cles like "inexistant" OR';
540
		}
539
		}
541
		return $requete;
540
		return $requete;
542
	}		
541
	}		
543
	
542
	
544
	private function creerSousRequeteProjet($mot_cle) {
543
	private function creerSousRequeteProjet($mot_cle) {
545
		$requete = 'mots_cles like "inexistant" OR';
544
		$requete = 'mots_cles like "inexistant" OR';
546
		if (preg_match('/.*OU.*/', $mot_cle)) {
545
		if (preg_match('/.*OU.*/', $mot_cle)) {
547
			$requete = $this->creerSousRequeteProjetOu($mot_cle);
546
			$requete = $this->creerSousRequeteProjetOu($mot_cle);
548
		} else if (preg_match('/.*ET.*/', $mot_cle)) {
547
		} else if (preg_match('/.*ET.*/', $mot_cle)) {
549
			$requete = $this->creerSousRequeteProjetEt($mot_cle);
548
			$requete = $this->creerSousRequeteProjetEt($mot_cle);
550
		} else {
549
		} else {
551
			// Construction de la requête
550
			// Construction de la requête
552
			$prerequete = 	'SELECT * '.
551
			$prerequete = 	'SELECT * '.
553
				'FROM cel_mots_cles_obs '.
552
				'FROM cel_mots_cles_obs '.
554
				'WHERE cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle($mot_cle)); 
553
				'WHERE cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle($mot_cle)); 
555
			$elements = $this->executerRequete($prerequete);
554
			$elements = $this->executerRequete($prerequete);
556
			if ($elements != false && count($elements) > 0) {
555
			if ($elements != false && count($elements) > 0) {
557
				$requete = '';
556
				$requete = '';
558
				foreach ($elements as $occurence) {
557
				foreach ($elements as $occurence) {
559
					$requete .= '(mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND identifiant = '.
558
					$requete .= '(mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND identifiant = '.
560
						$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';	
559
						$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';	
561
				}
560
				}
562
			}
561
			}
563
		}
562
		}
564
		$requete = rtrim($requete,' OR ').' AND ';
563
		$requete = rtrim($requete,' OR ').' AND ';
565
		return $requete;
564
		return $requete;
566
	}
565
	}
567
	
566
	
568
	private function creerSousRequeteProjetOu($mot_cle) {	
567
	private function creerSousRequeteProjetOu($mot_cle) {	
569
		$requete = 'mots_cles like "inexistant" OR';	
568
		$requete = 'mots_cles like "inexistant" OR';	
570
		$tab_mots_cles = explode('OU', $mot_cle);
569
		$tab_mots_cles = explode('OU', $mot_cle);
571
		$where = '';
570
		$where = '';
572
		foreach ($tab_mots_cles as $mot) {
571
		foreach ($tab_mots_cles as $mot) {
573
			$where .= 'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle(trim($mot))).' OR ';
572
			$where .= 'cmc_id_mot_cle_general = '.$this->bdd->quote($this->encoderMotCle(trim($mot))).' OR ';
574
		}
573
		}
575
		$where = rtrim($where,' OR ');
574
		$where = rtrim($where,' OR ');
576
		
575
		
577
		// Construction de la requête
576
		// Construction de la requête
578
		$prerequete = 	"SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_obs WHERE $where "; 
577
		$prerequete = 	"SELECT cmc_id_mot_cle_utilisateur, cmc_id_proprietaire FROM cel_mots_cles_obs WHERE $where "; 
579
		$elements = $this->executerRequete($prerequete);
578
		$elements = $this->executerRequete($prerequete);
580
		if ($elements != false && count($elements) > 0) {
579
		if ($elements != false && count($elements) > 0) {
581
			$requete = '';
580
			$requete = '';
582
			foreach ($elements as $occurence) {
581
			foreach ($elements as $occurence) {
583
				$requete .= '(mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND identifiant = '.
582
				$requete .= '(mots_cles LIKE "%'.$occurence['cmc_id_mot_cle_utilisateur'].'%" AND identifiant = '.
584
					$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
583
					$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
585
			}
584
			}
586
		}
585
		}
587
		return $requete;
586
		return $requete;
588
	}
587
	}
589
	
588
	
590
	private function creerSousRequeteProjetEt($mot_cle) {
589
	private function creerSousRequeteProjetEt($mot_cle) {
591
		$requete = 'mots_cles like "inexistant" OR';
590
		$requete = 'mots_cles like "inexistant" OR';
592
		$where = '';
591
		$where = '';
593
		$champs = 'a.cmc_id_proprietaire , ';
592
		$champs = 'a.cmc_id_proprietaire , ';
594
		$table = '';
593
		$table = '';
595
		$i = "a"; $j = "a";
594
		$i = "a"; $j = "a";
596
		
595
		
597
		$tab_mots_cles = explode("ET", $mot_cle); 
596
		$tab_mots_cles = explode("ET", $mot_cle); 
598
		foreach ($tab_mots_cles as $mot) {
597
		foreach ($tab_mots_cles as $mot) {
599
			$champs .= "$i.cmc_id_mot_cle_utilisateur as $i , ";
598
			$champs .= "$i.cmc_id_mot_cle_utilisateur as $i , ";
600
			$table .= "cel_mots_cles_obs $i , ";
599
			$table .= "cel_mots_cles_obs $i , ";
601
			$where .= "$i.cmc_id_mot_cle_general = ".$this->bdd->quote($this->encoderMotCle(trim($mot))).' AND ';
600
			$where .= "$i.cmc_id_mot_cle_general = ".$this->bdd->quote($this->encoderMotCle(trim($mot))).' AND ';
602
			if ($i !== "a") {
601
			if ($i !== "a") {
603
				$where .= " $i.cmc_id_proprietaire = ".$j.".cmc_id_proprietaire AND ";
602
				$where .= " $i.cmc_id_proprietaire = ".$j.".cmc_id_proprietaire AND ";
604
				$j++;
603
				$j++;
605
			}
604
			}
606
			$i++;
605
			$i++;
607
		}
606
		}
608
		$where = rtrim($where,' AND '); $champs = rtrim($champs,' , '); $table = rtrim($table,' , ');
607
		$where = rtrim($where,' AND '); $champs = rtrim($champs,' , '); $table = rtrim($table,' , ');
609
		
608
		
610
		// Construction de la requête
609
		// Construction de la requête
611
		$prerequete = 	"SELECT $champs FROM $table WHERE $where "; 
610
		$prerequete = 	"SELECT $champs FROM $table WHERE $where "; 
612
		$elements = $this->executerRequete($prerequete);//print_r($elements);
611
		$elements = $this->executerRequete($prerequete);//print_r($elements);
613
		if ($elements != false && count($elements) > 0) {
612
		if ($elements != false && count($elements) > 0) {
614
			$requete = '';
613
			$requete = '';
615
			foreach ($elements as $occurence) {
614
			foreach ($elements as $occurence) {
616
				$requete = ' (';
615
				$requete = ' (';
617
				for ($j = 'a'; $j < $i; $j++) {
616
				for ($j = 'a'; $j < $i; $j++) {
618
					$requete .= 'mots_cles like "%'.$occurence[$j].'%" AND ';
617
					$requete .= 'mots_cles like "%'.$occurence[$j].'%" AND ';
619
				}
618
				}
620
				$requete .= ' identifiant = '.$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
619
				$requete .= ' identifiant = '.$this->bdd->quote($occurence['cmc_id_proprietaire']).' ) OR ';
621
			}
620
			}
622
		}
621
		}
623
		return $requete;
622
		return $requete;
624
	}
623
	}
625
	
624
	
626
	private function creerSousRequeteRechercheGenerale($chaine_requete) {
625
	private function creerSousRequeteRechercheGenerale($chaine_requete) {
627
		$requete = '';
626
		$requete = '';
628
		if (trim($chaine_requete) != '') {	
627
		if (trim($chaine_requete) != '') {	
629
			$chaine_requete = strtolower($chaine_requete);
628
			$chaine_requete = strtolower($chaine_requete);
630
			$chaine_requete = str_replace(' ', '_', $chaine_requete);
629
			$chaine_requete = str_replace(' ', '_', $chaine_requete);
631
			$requete = ' ('.
630
			$requete = ' ('.
632
				'b.nom_ret LIKE "'.$chaine_requete.'%"'.
631
				'b.nom_ret LIKE "'.$chaine_requete.'%"'.
633
				' OR '.
632
				' OR '.
634
				'b.nom_sel LIKE "'.$chaine_requete.'%"'.
633
				'b.nom_sel LIKE "'.$chaine_requete.'%"'.
635
				' OR '.
634
				' OR '.
636
				'b.location LIKE "'.$chaine_requete.'%" '.
635
				'b.location LIKE "'.$chaine_requete.'%" '.
637
				' OR '.
636
				' OR '.
638
				'b.id_location LIKE "'.$chaine_requete.'%" '.
637
				'b.id_location LIKE "'.$chaine_requete.'%" '.
639
				' OR '.
638
				' OR '.
640
				'c.ci_ce_utilisateur LIKE "'.$chaine_requete.'%" '.
639
				'c.ci_ce_utilisateur LIKE "'.$chaine_requete.'%" '.
641
				') ';
640
				') ';
642
		}
641
		}
643
		return $requete;
642
		return $requete;
644
	}
643
	}
645
	
644
	
646
	private function estUneRechercheGenerale() {
645
	private function estUneRechercheGenerale() {
647
		return isset($_GET['recherche']);
646
		return isset($_GET['recherche']);
648
	}
647
	}
649
	
648
	
650
	private function traiterCriteresMultiples($tableau_criteres) {
649
	private function traiterCriteresMultiples($tableau_criteres) {
651
		$tableau_criteres_pour_bdd = array();
650
		$tableau_criteres_pour_bdd = array();
652
				
651
				
653
		foreach($tableau_criteres as $nom_critere => $valeur_critere) {
652
		foreach($tableau_criteres as $nom_critere => $valeur_critere) {
654
			if (isset($this->criteres[$nom_critere])) {
653
			if (isset($this->criteres[$nom_critere])) {
655
				$tableau_criteres_pour_bdd[] = $this->criteres[$nom_critere].'='.$valeur_critere;
654
				$tableau_criteres_pour_bdd[] = $this->criteres[$nom_critere].'='.$valeur_critere;
656
			}
655
			}
657
		}
656
		}
658
		return $tableau_criteres_pour_bdd;
657
		return $tableau_criteres_pour_bdd;
659
	}
658
	}
660
 
659
 
661
	private function creerDescriptionComplet($donnees, $item) {
660
	private function creerDescriptionComplet($donnees, $item) {
662
		$auteur = $this->auteurs[$donnees['ci_ce_utilisateur']];
661
		$auteur = $this->auteurs[$donnees['ci_ce_utilisateur']];
663
		$auteur_mail = $donnees['ci_ce_utilisateur'];
662
		$auteur_mail = $donnees['ci_ce_utilisateur'];
664
		
663
		
665
		$id_img = $donnees['ci_id_image'];
664
		$id_img = $donnees['ci_id_image'];
666
		$nom_fichier = $donnees['ci_nom_original'];
665
		$nom_fichier = $donnees['ci_nom_original'];
667
		$url_img = $this->getUrlImage($donnees['ci_id_image'], 'CS');
666
		$url_img = $this->getUrlImage($donnees['ci_id_image'], 'CS');
668
		$url_img_normale = $this->getUrlImage($donnees['ci_id_image'], 'XL');
667
		$url_img_normale = $this->getUrlImage($donnees['ci_id_image'], 'XL');
669
		$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']);
670
		$note = ($donnees['ci_note_image'] +1).'/5';
669
		$note = ($donnees['ci_note_image'] +1).'/5';
671
		$commentaire_img = $donnees['ci_meta_comment'];
670
		$commentaire_img = $donnees['ci_meta_comment'];
672
		
671
		
673
		$id_obs = $donnees['id'];
672
		$id_obs = $donnees['id'];
674
		$famille = $donnees['famille'];
673
		$famille = $donnees['famille'];
675
		$nom_saisi = $donnees['nom_sel'];
674
		$nom_saisi = $donnees['nom_sel'];
676
		$nom_retenu = $donnees['nom_ret'];
675
		$nom_retenu = $donnees['nom_ret'];
677
		$mots_cles_obs = $this->decoderMotsClesObs($donnees['identifiant'], $donnees['mots_cles']);
676
		$mots_cles_obs = $this->decoderMotsClesObs($donnees['identifiant'], $donnees['mots_cles']);
678
		$lieu =  $donnees['location'].' ('.$donnees['id_location'].') > '.$donnees['lieudit'].' > '.$donnees['station'];
677
		$lieu =  $donnees['location'].' ('.$donnees['id_location'].') > '.$donnees['lieudit'].' > '.$donnees['station'];
679
		$milieu = $donnees['milieu'];
678
		$milieu = $donnees['milieu'];
680
		$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'];
681
		$commentaire_obs = $donnees['commentaire'];
680
		$commentaire_obs = $donnees['commentaire'];
682
		$date_observation = $this->formaterDate($donnees['date_observation'], '%A %d %B %Y');
681
		$date_observation = $this->formaterDate($donnees['date_observation'], '%A %d %B %Y');
683
		$date_transmission = $this->formaterDate($donnees['date_transmission']);
682
		$date_transmission = $this->formaterDate($donnees['date_transmission']);
684
		$date_modification = $this->formaterDate($donnees['date_modification']);
683
		$date_modification = $this->formaterDate($donnees['date_modification']);
685
		$date_creation = $this->formaterDate($donnees['date_creation']);
684
		$date_creation = $this->formaterDate($donnees['date_creation']);
686
		$transmission = $donnees['transmission'] == 1 ? "oui ($date_transmission)" : 'non';
685
		$transmission = $donnees['transmission'] == 1 ? "oui ($date_transmission)" : 'non';
687
		
686
		
688
		$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>'.
689
			'<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>'.
690
			'<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>'.
691
			'<div class="gauche">'.
690
			'<div class="gauche">'.
692
			'<h3>'.'Image'.'</h3>'.
691
			'<h3>'.'Image'.'</h3>'.
693
			'<ul>'.
692
			'<ul>'.
694
			'<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>'.
695
			'<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>'.
696
			'<li>'.'<span class="champ">Par :</span> '.
695
			'<li>'.'<span class="champ">Par :</span> '.
697
				(($this->etreFluxAdmin()) ? '<a href="mailto:'.$auteur_mail.'">'.$auteur.'</a>' : $auteur).
696
				(($this->etreFluxAdmin()) ? '<a href="mailto:'.$auteur_mail.'">'.$auteur.'</a>' : $auteur).
698
			'</li>'.
697
			'</li>'.
699
			'<li>'.'<span class="champ">Nom du fichier :</span> '.$nom_fichier.'</li>'.
698
			'<li>'.'<span class="champ">Nom du fichier :</span> '.$nom_fichier.'</li>'.
700
			'<li>'.'<span class="champ">Note qualité :</span> '.$note.'</li>'.
699
			'<li>'.'<span class="champ">Note qualité :</span> '.$note.'</li>'.
701
			'<li>'.'<span class="champ">Commentaires :</span> '.$commentaire_img.'</li>'.
700
			'<li>'.'<span class="champ">Commentaires :</span> '.$commentaire_img.'</li>'.
702
			'<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>'.
703
			'</ul>'.
702
			'</ul>'.
704
			'</div>';
703
			'</div>';
705
			// TODO : ajouter le champ commentaire EXIF.
704
			// TODO : ajouter le champ commentaire EXIF.
706
		if (! $this->etreNull($id_obs)) {
705
		if (! $this->etreNull($id_obs)) {
707
			$description .= 
706
			$description .= 
708
				'<div class="gauche">'.
707
				'<div class="gauche">'.
709
				'<h3>'.'Observation'.'</h3>'.
708
				'<h3>'.'Observation'.'</h3>'.
710
				'<ul>'.
709
				'<ul>'.
711
				'<li>'.'<span class="champ">Famille :</span> '.$famille.'</li>'.
710
				'<li>'.'<span class="champ">Famille :</span> '.$famille.'</li>'.
712
				'<li>'.'<span class="champ">Nom saisi :</span> '.$nom_saisi.'</li>'.
711
				'<li>'.'<span class="champ">Nom saisi :</span> '.$nom_saisi.'</li>'.
713
				'<li>'.'<span class="champ">Nom retenu :</span> '.$nom_retenu.'</li>'.
712
				'<li>'.'<span class="champ">Nom retenu :</span> '.$nom_retenu.'</li>'.
714
				'<li>'.'<span class="champ">Observée le :</span> '.$date_observation.'</li>'.
713
				'<li>'.'<span class="champ">Observée le :</span> '.$date_observation.'</li>'.
715
				'<li>'.'<span class="champ">Lieu :</span> '.$lieu.'</li>'.
714
				'<li>'.'<span class="champ">Lieu :</span> '.$lieu.'</li>'.
716
				'<li>'.'<span class="champ">Milieu :</span> '.$milieu.'</li>'.
715
				'<li>'.'<span class="champ">Milieu :</span> '.$milieu.'</li>'.
717
				(($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>' : '').
718
				'<li>'.'<span class="champ">Commentaire :</span> '.$commentaire_obs.'</li>'.
717
				'<li>'.'<span class="champ">Commentaire :</span> '.$commentaire_obs.'</li>'.
719
				'<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>'.
720
				(($this->etreFluxAdmin()) ? '<li><span class="champ">Transmis (= public) :</span> '.$transmission.'</li>' : '').
719
				(($this->etreFluxAdmin()) ? '<li><span class="champ">Transmis (= public) :</span> '.$transmission.'</li>' : '').
721
				'<li><span class="champ">Modifiée le :</span> '.$date_modification.'</li>'.
720
				'<li><span class="champ">Modifiée le :</span> '.$date_modification.'</li>'.
722
				'<li><span class="champ">Créée le :</span> '.$date_creation.'</li>'.
721
				'<li><span class="champ">Créée le :</span> '.$date_creation.'</li>'.
723
				'</ul>'.
722
				'</ul>'.
724
				'</div>';
723
				'</div>';
725
		}
724
		}
726
		$description = $this->nettoyerTexte($description);
725
		$description = $this->nettoyerTexte($description);
727
		return $description;
726
		return $description;
728
	}
727
	}
729
	
728
	
730
	private function getServiceParMotsCles() {
729
	private function getServiceParMotsCles() {
731
		$infos=array();
730
		$infos=array();
732
		$infos[0]['num_nom_sel'] = '';
731
		$infos[0]['num_nom_sel'] = '';
733
		$infos[0]['ci_meta_date_ajout'] = '2011-06-28';
732
		$infos[0]['ci_meta_date_ajout'] = '2011-06-28';
734
		$donnees = $this->construireDonneesCommunesAuFlux($infos);
733
		$donnees = $this->construireDonneesCommunesAuFlux($infos);
735
		$donnees['items'][0]['guid'] = 0;
734
		$donnees['items'][0]['guid'] = 0;
736
		$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 '.
737
			'<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=';
738
		if (isset($this->parametres[0])) {
737
		if (isset($this->parametres[0])) {
739
			$donnees['items'][0]['description'] .= $this->parametres[0].'</b>';
738
			$donnees['items'][0]['description'] .= $this->parametres[0].'</b>';
740
		} else {
739
		} else {
741
			$donnees['items'][0]['description'] .= '</b>';	
740
			$donnees['items'][0]['description'] .= '</b>';	
742
		}
741
		}
743
		$donnees['items'][0]['titre'] = '';
742
		$donnees['items'][0]['titre'] = '';
744
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
743
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
745
		return $contenu;
744
		return $contenu;
746
	}
745
	}
747
	
746
	
748
	private function getServiceParCommune() {
747
	private function getServiceParCommune() {
749
		$infos=array();
748
		$infos=array();
750
		$infos[0]['num_nom_sel'] = '';
749
		$infos[0]['num_nom_sel'] = '';
751
		$infos[0]['ci_meta_date_ajout'] = '2011-06-28';
750
		$infos[0]['ci_meta_date_ajout'] = '2011-06-28';
752
		$donnees = $this->construireDonneesCommunesAuFlux($infos);
751
		$donnees = $this->construireDonneesCommunesAuFlux($infos);
753
		$donnees['items'][0]['guid'] = 0;
752
		$donnees['items'][0]['guid'] = 0;
754
		$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 '.
755
			'<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=';
756
		if (isset($this->parametres[0])) {
755
		if (isset($this->parametres[0])) {
757
			$donnees['items'][0]['description'] .= $this->parametres[0].'</b>';
756
			$donnees['items'][0]['description'] .= $this->parametres[0].'</b>';
758
		} else {
757
		} else {
759
			$donnees['items'][0]['description'] .= '</b>';	
758
			$donnees['items'][0]['description'] .= '</b>';	
760
		}
759
		}
761
		$donnees['items'][0]['titre'] = '';
760
		$donnees['items'][0]['titre'] = '';
762
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
761
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
763
		return $contenu;
762
		return $contenu;
764
	}
763
	}
765
}	
764
}