Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1330 Rev 1338
Line 3... Line 3...
3
 
3
 
4
/**
4
/**
5
 * Service fournissant des informations concernant les images du CEL au format RSS1, RSS2 ou ATOM.
5
 * Service fournissant des informations concernant les images du CEL au format RSS1, RSS2 ou ATOM.
6
 * Encodage en entrée : utf8
6
 * Encodage en entrée : utf8
7
 * Encodage en sortie : utf8
7
 * Encodage en sortie : utf8
8
 * 
8
 *
9
 * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
10
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
10
 * @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
11
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
11
 * @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
12
 * @version $Id$
12
 * @version $Id$
13
 * @copyright 2010
13
 * @copyright 2010
14
 */
14
 */
15
// TODO : résoudre le problème des images liées à plusieurs obs. Cela créé plusieurs item avec le même id pour atom...
15
// TODO : résoudre le problème des images liées à plusieurs obs. Cela créé plusieurs item avec le même id pour atom...
16
class CelSyndicationImage extends Cel {
16
class CelSyndicationImage extends Cel {
17
	
17
 
18
	private $parametres_origines = null;
18
	private $parametres_origines = null;
19
	private $format = null;
19
	private $format = null;
20
	private $service = null;
20
	private $service = null;
21
	private $squelette = null;
21
	private $squelette = null;
22
	private $squelette_dossier = null;
22
	private $squelette_dossier = null;
23
	private $auteurs = array();
23
	private $auteurs = array();
24
	private $flux = array();
24
	private $flux = array();
25
	
25
 
26
	private $format_image = 'XL';
26
	private $format_image = 'XL';
27
	
27
 
28
	private $criteres = array(
28
	private $criteres = array(
29
		'utilisateur' => 'c.courriel_utilisateur', 
29
		'utilisateur' => 'c.courriel_utilisateur',
30
		'commune' => 'b.zone_geo', 
30
		'commune' => 'b.zone_geo',
31
		'dept' => 'b.ce_zone_geo',
31
		'dept' => 'b.ce_zone_geo',
32
		'taxon' => 'b.nom_ret',
32
		'taxon' => 'b.nom_ret',
33
		'commentaire' => 'c.commentaire',
33
		'commentaire' => 'c.commentaire',
34
		'date' => 'c.date_prise_de_vue',
34
		'date' => 'c.date_prise_de_vue',
35
		'tag' => 'tag',
35
		'tag' => 'tag',
36
		'projet' => 'projet');
36
		'projet' => 'projet');
37
	
37
 
38
	/**
38
	/**
39
	 * Méthode appelée avec une requête de type GET.
39
	 * Méthode appelée avec une requête de type GET.
40
	 */
40
	 */
41
	public function getElement($params = array()) {
41
	public function getElement($params = array()) {
42
		// Initialisation des variables
42
		// Initialisation des variables
43
		$this->parametres_origines = $params;
43
		$this->parametres_origines = $params;
44
		$info = array();
44
		$info = array();
45
		$contenu = '';
45
		$contenu = '';
46
		
46
 
47
		if (! $this->etreFluxAdmin() || $this->authentifierAdmin()) {
47
		if (! $this->etreFluxAdmin() || $this->authentifierAdmin()) {
48
			// Pré traitement des paramêtres
48
			// Pré traitement des paramêtres
49
			$pour_bdd = false;
49
			$pour_bdd = false;
50
			$p = $this->traiterParametres(array('service', 'format'), $params, $pour_bdd);
50
			$p = $this->traiterParametres(array('service', 'format'), $params, $pour_bdd);
51
			extract($p);
51
			extract($p);
52
			$this->parametres = $params;
52
			$this->parametres = $params;
53
			$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
53
			$this->squelette_dossier = dirname(__FILE__).DIRECTORY_SEPARATOR.'squelettes'.DIRECTORY_SEPARATOR;
54
			
54
 
55
			// Récupération de la liste des flux
55
			// Récupération de la liste des flux
56
			$this->chargerListeDesFlux();
56
			$this->chargerListeDesFlux();
57
			
57
 
58
			// Chargement du bon type de service demandé
58
			// Chargement du bon type de service demandé
59
			if (isset($service)) {
59
			if (isset($service)) {
60
				$this->service = $this->traiterNomService($service);
60
				$this->service = $this->traiterNomService($service);
61
				$methode = $this->getNomMethodeService();
61
				$methode = $this->getNomMethodeService();
Line 67... Line 67...
67
						$this->squelette = $this->squelette_dossier.$this->format.'.tpl.xml';
67
						$this->squelette = $this->squelette_dossier.$this->format.'.tpl.xml';
68
					} else if (isset($this->flux[$this->service])) {
68
					} else if (isset($this->flux[$this->service])) {
69
						$this->format = '';
69
						$this->format = '';
70
						$this->messages[] = "Le service CEL Syndication nécessite d'indiquer en second paramètre le format : rss1, rss2 ou atom.";
70
						$this->messages[] = "Le service CEL Syndication nécessite d'indiquer en second paramètre le format : rss1, rss2 ou atom.";
71
					}
71
					}
72
					
72
 
73
					if (!isset($this->flux[$this->service]) || isset($this->format)) {
73
					if (!isset($this->flux[$this->service]) || isset($this->format)) {
74
						// Suppression des deux premiers paramètres (service et format)  pour le reste des méthodes
74
						// Suppression des deux premiers paramètres (service et format)  pour le reste des méthodes
75
						array_shift($this->parametres);
75
						array_shift($this->parametres);
76
						array_shift($this->parametres);
76
						array_shift($this->parametres);
77
						
77
 
78
						// Récupération du contenu à renvoyer
78
						// Récupération du contenu à renvoyer
79
						$contenu = $this->$methode();
79
						$contenu = $this->$methode();
80
					}
80
					}
81
				} else {
81
				} else {
82
					$this->messages[] = "Le type d'information demandé '$this->service' n'est pas disponible.";
82
					$this->messages[] = "Le type d'information demandé '$this->service' n'est pas disponible.";
83
				}
83
				}
84
			} else {
84
			} else {
85
				$this->messages[] = "Le service CEL Syndication Image nécessite d'indiquer en premier paramètre le type d'information demandé.";
85
				$this->messages[] = "Le service CEL Syndication Image nécessite d'indiquer en premier paramètre le type d'information demandé.";
86
			}
86
			}
87
		}
87
		}
88
		
88
 
89
		// Envoie sur la sortie standard
89
		// Envoie sur la sortie standard
90
		$encodage = 'utf-8';
90
		$encodage = 'utf-8';
91
		$mime = $this->getTypeMime();
91
		$mime = $this->getTypeMime();
92
		$formatage_json = $this->getFormatageJson();
92
		$formatage_json = $this->getFormatageJson();
93
		$this->envoyer($contenu, $mime, $encodage, $formatage_json);
93
		$this->envoyer($contenu, $mime, $encodage, $formatage_json);
94
	}
94
	}
95
	
95
 
96
	private function chargerListeDesFlux() {
96
	private function chargerListeDesFlux() {
97
		$this->setFlux('simple', 'Nouvelles images liées à une observation dans le CEL', 
97
		$this->setFlux('simple', 'Nouvelles images liées à une observation dans le CEL',
98
			"Ce flux fournit l'url des nouvelles images du CEL liées à une observation.");
98
			"Ce flux fournit l'url des nouvelles images du CEL liées à une observation.");
99
		$this->setFlux('complet', 'Nouvelles images liées à une observation dans le CEL (détails)', 
99
		$this->setFlux('complet', 'Nouvelles images liées à une observation dans le CEL (détails)',
100
			"Ce flux fournit les informations sur les nouvelles images du CEL liées à une observation.");
100
			"Ce flux fournit les informations sur les nouvelles images du CEL liées à une observation.");
101
		$this->setFlux('par-mots-cles', 'Flux de syndication obsolète',
101
		$this->setFlux('par-mots-cles', 'Flux de syndication obsolète',
102
			"Ce flux est désormais accessible via le flux multicriteres/atom/M?tag='mot-cle'.");
102
			"Ce flux est désormais accessible via le flux multicriteres/atom/M?tag='mot-cle'.");
103
		$this->setFlux('par-commune','Flux de syndication obsolète',
103
		$this->setFlux('par-commune','Flux de syndication obsolète',
104
			"Ce flux  est désormais accessible via le flux multicriteres/atom/M?commune='commune'.");
104
			"Ce flux  est désormais accessible via le flux multicriteres/atom/M?commune='commune'.");
Line 106... Line 106...
106
			'filtrées par un ou plusieurs critères',
106
			'filtrées par un ou plusieurs critères',
107
			"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par ".
107
			"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par ".
108
			"auteur (mail), commune (nom), departement (code postal), taxon (nom scientifique), commentaire, tag ".
108
			"auteur (mail), commune (nom), departement (code postal), taxon (nom scientifique), commentaire, tag ".
109
			"et/ou date.");
109
			"et/ou date.");
110
	}
110
	}
111
	
111
 
112
	private function setFlux($nom, $titre, $description) {
112
	private function setFlux($nom, $titre, $description) {
113
		$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CelSyndicationImage/';
113
		$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CelSyndicationImage/';
114
		$formats = array('atom', 'rss2', 'rss1');
114
		$formats = array('atom', 'rss2', 'rss1');
115
		$flux = array();
115
		$flux = array();
116
		foreach ($formats as $format) {
116
		foreach ($formats as $format) {
Line 121... Line 121...
121
	}
121
	}
Line 122... Line 122...
122
 
122
 
123
	private function getFlux($nom) {
123
	private function getFlux($nom) {
124
		return isset($this->flux[$nom]) ? $this->flux[$nom] : array();
124
		return isset($this->flux[$nom]) ? $this->flux[$nom] : array();
125
	}
125
	}
126
	
126
 
127
	private function traiterNomService($nom) {
127
	private function traiterNomService($nom) {
128
		$nom = strtolower($nom);
128
		$nom = strtolower($nom);
129
		return $nom;
129
		return $nom;
130
	}
130
	}
131
	
131
 
132
	private function getNomMethodeService() {
132
	private function getNomMethodeService() {
133
		$methode = '';
133
		$methode = '';
134
		$service_formate = str_replace(' ', '', ucwords(implode(' ', explode('-', $this->service))));
134
		$service_formate = str_replace(' ', '', ucwords(implode(' ', explode('-', $this->service))));
135
		$methode = 'getService'.$service_formate;
135
		$methode = 'getService'.$service_formate;
136
		return $methode;
136
		return $methode;
137
	}
137
	}
138
	
138
 
139
	private function getUrlBase() {
139
	private function getUrlBase() {
140
		$url_base = sprintf($this->config['settings']['baseURLAbsolu'], get_class($this).'/');
140
		$url_base = sprintf($this->config['settings']['baseURLAbsolu'], get_class($this).'/');
141
		return $url_base;
141
		return $url_base;
142
	}
142
	}
143
	
143
 
144
	private function getUrlServiceBase() {
144
	private function getUrlServiceBase() {
145
		$url_service = $this->getUrlBase().implode('/', $this->parametres_origines);
145
		$url_service = $this->getUrlBase().implode('/', $this->parametres_origines);
146
		return $url_service;
146
		return $url_service;
147
	}
147
	}
148
	
148
 
149
	private function getTypeMime() {
149
	private function getTypeMime() {
150
		$mime = '';
150
		$mime = '';
151
		switch ($this->format) {
151
		switch ($this->format) {
152
			case 'atom' :
152
			case 'atom' :
Line 162... Line 162...
162
			default:
162
			default:
163
				$mime = 'text/html';
163
				$mime = 'text/html';
164
		}
164
		}
165
		return $mime;
165
		return $mime;
166
	}
166
	}
167
	
167
 
168
	private function getFormatageJson() {
168
	private function getFormatageJson() {
169
		$json = false;
169
		$json = false;
170
		switch ($this->service) {
170
		switch ($this->service) {
171
			case 'liste-des-flux' :
171
			case 'liste-des-flux' :
172
				$json = true;
172
				$json = true;
Line 174... Line 174...
174
			default:
174
			default:
175
				$json = false;
175
				$json = false;
176
		}
176
		}
177
		return $json;
177
		return $json;
178
	}
178
	}
179
	
179
 
180
	private function creerCategorie($element) {
180
	private function creerCategorie($element) {
181
		$categorie = '';
181
		$categorie = '';
182
		$categorie = 'Image';
182
		$categorie = 'Image';
183
		$categorie = $this->nettoyerTexte($categorie);
183
		$categorie = $this->nettoyerTexte($categorie);
184
		return $categorie;
184
		return $categorie;
185
	}
185
	}
186
		
186
 
187
	private function etreFluxAdmin() {
187
	private function etreFluxAdmin() {
188
		return (isset($_GET['admin']) && $_GET['admin'] == '1') ? true : false;
188
		return (isset($_GET['admin']) && $_GET['admin'] == '1') ? true : false;
189
	}
189
	}
190
	
190
 
191
	private function creerUrlService() {
191
	private function creerUrlService() {
192
		$url_service = $this->getUrlServiceBase();
192
		$url_service = $this->getUrlServiceBase();
193
		if (count($_GET) > 0) {
193
		if (count($_GET) > 0) {
194
			$parametres_get = array();
194
			$parametres_get = array();
195
			foreach ($_GET as $cle => $valeur) {
195
			foreach ($_GET as $cle => $valeur) {
Line 197... Line 197...
197
			}
197
			}
198
			$url_service .= '?'.implode('&amp;', $parametres_get);
198
			$url_service .= '?'.implode('&amp;', $parametres_get);
199
		}
199
		}
200
		return $url_service;
200
		return $url_service;
201
	}
201
	}
202
	
202
 
203
	protected function executerRequete($requete, $retour = 'All', $mode = PDO::FETCH_ASSOC) {
203
	protected function executerRequete($requete, $retour = 'All', $mode = PDO::FETCH_ASSOC) {
204
		$infos = null;
204
		$infos = null;
205
		try {
205
		try {
206
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
206
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
207
			if ($infos === false) {
207
			if ($infos === false) {
Line 210... Line 210...
210
		} catch (PDOException $e) {
210
		} catch (PDOException $e) {
211
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
211
			$this->messages[] = sprintf($this->getTxt('sql_erreur'), $e->getFile(), $e->getLine(), $e->getMessage());
212
		}
212
		}
213
		return $infos;
213
		return $infos;
214
	}
214
	}
215
	
215
 
216
	private function executerService($elements) {
216
	private function executerService($elements) {
217
		// Prétraitement des données
217
		// Prétraitement des données
218
		$donnees = $this->construireDonneesCommunesAuFlux($elements);
218
		$donnees = $this->construireDonneesCommunesAuFlux($elements);
219
		foreach ($elements as $element) {
219
		foreach ($elements as $element) {
220
			$identifiants[$element['ce_utilisateur']] = $element['ce_utilisateur'];
220
			$identifiants[$element['ce_utilisateur']] = $element['ce_utilisateur'];
221
		}
221
		}
222
		$this->auteurs = $this->creerAuteurs($identifiants);
222
		$this->auteurs = $this->creerAuteurs($identifiants);
223
		foreach ($elements as $element) {
223
		foreach ($elements as $element) {
224
			$donnees['items'][] = $this->construireDonneesCommunesAuxItems($element);
224
			$donnees['items'][] = $this->construireDonneesCommunesAuxItems($element);
225
		}
225
		}
226
		
226
 
227
		// Création du contenu à partir d'un template PHP
227
		// Création du contenu à partir d'un template PHP
228
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
228
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
229
		
229
 
230
		return $contenu;
230
		return $contenu;
231
	}
231
	}
232
	
232
 
233
	private function construireDonneesCommunesAuFlux($infos) {
233
	private function construireDonneesCommunesAuFlux($infos) {
234
		$donnees = $this->getFlux($this->service);
234
		$donnees = $this->getFlux($this->service);
235
		$donnees['guid'] = $this->getUrlServiceBase();
235
		$donnees['guid'] = $this->getUrlServiceBase();
236
		$donnees['lien_service'] = $this->creerUrlService();
236
		$donnees['lien_service'] = $this->creerUrlService();
237
		$donnees['lien_cel'] = (isset($infos['nom_sel_nn'])) ? 
237
		$donnees['lien_cel'] = (isset($infos['nom_sel_nn'])) ?
238
			sprintf($this->config['settings']['efloreUrlTpl'], $infos['nom_sel_nn'], 'illustration') : '';
238
			sprintf($this->config['settings']['efloreUrlTpl'], $infos['nom_sel_nn'], 'illustration') : '';
239
		$donnees['editeur'] = $this->config['settings']['editeur'];
239
		$donnees['editeur'] = $this->config['settings']['editeur'];
240
		$derniere_info_en_date = reset($infos);
240
		$derniere_info_en_date = reset($infos);
241
		$date_modification_timestamp = strtotime($derniere_info_en_date['date_creation']);
241
		$date_modification_timestamp = strtotime($derniere_info_en_date['date_creation']);
242
		$donnees['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
242
		$donnees['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
243
		$donnees['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
243
		$donnees['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
244
		$donnees['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
244
		$donnees['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
245
		$donnees['annee_courante'] = date('Y');
245
		$donnees['annee_courante'] = date('Y');
246
		$donnees['generateur'] = 'CEL - Jrest - CelSyndicationImage';
246
		$donnees['generateur'] = 'CEL - Jrest - CelSyndicationImage';
247
		$donnees['generateur_version'] = (preg_match('/([0-9]+)/', '$Revision$', $match)) ?  $match[1] : '0';
247
		$donnees['generateur_version'] = (preg_match('/([0-9]+)/', '$Revision$', $match)) ?  $match[1] : '0';
248
		return $donnees; 
248
		return $donnees;
249
	}
249
	}
250
	
250
 
251
	private function construireDonneesCommunesAuxItems($info) {
251
	private function construireDonneesCommunesAuxItems($info) {
252
		$item = array();
252
		$item = array();
253
		$date_modification_timestamp = $this->convertirDateHeureMysqlEnTimestamp($info['date_creation']);
253
		$date_modification_timestamp = $this->convertirDateHeureMysqlEnTimestamp($info['date_creation']);
254
		$item['date_maj_simple'] = strftime('%A %d %B %Y à %H:%M', $date_modification_timestamp);
254
		$item['date_maj_simple'] = strftime('%A %d %B %Y à %H:%M', $date_modification_timestamp);
255
		$item['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
255
		$item['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
Line 259... Line 259...
259
		$item['guid'] = $this->creerGuidItem($info);
259
		$item['guid'] = $this->creerGuidItem($info);
260
		$item['lien'] = $this->creerLienItem($info);
260
		$item['lien'] = $this->creerLienItem($info);
261
		$item['categorie'] = $this->creerCategorie($item);
261
		$item['categorie'] = $this->creerCategorie($item);
262
		$item['description'] = $this->creerDescription($this->protegerCaracteresHtmlDansChamps($info), $item);
262
		$item['description'] = $this->creerDescription($this->protegerCaracteresHtmlDansChamps($info), $item);
263
		$item['description_encodee'] = htmlspecialchars($this->creerDescription($info, $item));
263
		$item['description_encodee'] = htmlspecialchars($this->creerDescription($info, $item));
264
		$item['modifier_par'] = $this->auteurs[$info['ce_utilisateur']];
264
		$item['modifier_par'] = $this->getIntituleAuteur($info['courriel_utilisateur']);
265
		return $item;
265
		return $item;
266
	}
266
	}
267
	
267
 
268
	private function creerGuidItem($element) {
268
	private function creerGuidItem($element) {
269
		$guid = $this->getUrlImage($element['id_image']);
269
		$guid = $this->getUrlImage($element['id_image']);
270
		return $guid;
270
		return $guid;
271
	}
271
	}
272
	
272
 
273
	private function creerTitre($element) {
273
	private function creerTitre($element) {
274
		$methode = 'creerTitre'.$this->service;
274
		$methode = 'creerTitre'.$this->service;
275
		$methode = (method_exists($this, $methode)) ? $methode : 'creerTitreSimple';
275
		$methode = (method_exists($this, $methode)) ? $methode : 'creerTitreSimple';
276
		$titre = $this->$methode($element);
276
		$titre = $this->$methode($element);
277
		$titre = $this->nettoyerTexte($titre);
277
		$titre = $this->nettoyerTexte($titre);
278
		return $titre;
278
		return $titre;
279
	}
279
	}
280
	
280
 
281
	private function creerDescription($donnees, $item) {
281
	private function creerDescription($donnees, $item) {
282
		$methode = 'creerDescription'.$this->service;
282
		$methode = 'creerDescription'.$this->service;
283
		$methode = (method_exists($this, $methode)) ? $methode : 'creerDescriptionComplet';
283
		$methode = (method_exists($this, $methode)) ? $methode : 'creerDescriptionComplet';
284
		$description = $this->$methode($donnees, $item);
284
		$description = $this->$methode($donnees, $item);
285
		$description = $this->nettoyerTexte($description);
285
		$description = $this->nettoyerTexte($description);
Line 295... Line 295...
295
			// Lien vers fiche eFlore onglet Illustration
295
			// Lien vers fiche eFlore onglet Illustration
296
			$lien = sprintf($this->config['settings']['efloreUrlTpl'], $element['nom_sel_nn'], 'illustration');
296
			$lien = sprintf($this->config['settings']['efloreUrlTpl'], $element['nom_sel_nn'], 'illustration');
297
		}
297
		}
298
		return $lien;
298
		return $lien;
299
	}
299
	}
300
	
300
 
301
	private function getServiceListeDesFlux() {
301
	private function getServiceListeDesFlux() {
302
		return $this->flux;
302
		return $this->flux;
303
	}
303
	}
304
	
304
 
305
	private function getServiceOpml() {
305
	private function getServiceOpml() {
306
		$donnees = array();
306
		$donnees = array();
307
		$id = 1;
307
		$id = 1;
308
		foreach ($this->flux as $flux_nom => $flux){
308
		foreach ($this->flux as $flux_nom => $flux){
309
			$info = array();
309
			$info = array();
Line 313... Line 313...
313
			$info['description'] = $flux['description'];
313
			$info['description'] = $flux['description'];
314
			$info['url_xml'] = $this->getUrlBase().$flux_nom.'/atom';
314
			$info['url_xml'] = $this->getUrlBase().$flux_nom.'/atom';
315
			$info['url_html'] = $this->config['settings']['aideCelUrl'].'FluxSyndication';
315
			$info['url_html'] = $this->config['settings']['aideCelUrl'].'FluxSyndication';
316
			$donnees['liste_flux'][] = $info;
316
			$donnees['liste_flux'][] = $info;
317
		}
317
		}
318
		
318
 
319
		$this->squelette = $this->squelette_dossier.'opml.tpl.xml';
319
		$this->squelette = $this->squelette_dossier.'opml.tpl.xml';
320
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
320
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
321
		return $contenu;
321
		return $contenu;
322
	}
322
	}
323
	
323
 
324
	private function getServiceSimple() {
324
	private function getServiceSimple() {
325
		if (isset($this->parametres[0])) {
325
		if (isset($this->parametres[0])) {
326
			$this->format_image = $this->parametres[0];
326
			$this->format_image = $this->parametres[0];
327
		}
327
		}
328
		
328
 
329
		// Construction de la requête
329
		// Construction de la requête
330
		$requete = 	(isset($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
330
		$requete = 	(isset($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
331
			' cim.id_image, cim.ce_utilisateur, nom_original, cim.date_creation, cim.mots_cles_texte as mots_cles_texte_images,
331
			' cim.id_image, cim.ce_utilisateur, nom_original, cim.date_creation, cim.mots_cles_texte as mots_cles_texte_images,
332
				 ci.mots_cles_texte as mots_cles_texte_images_obs, cim.commentaire, note_qualite  '.
332
				 ci.mots_cles_texte as mots_cles_texte_images_obs, cim.commentaire, note_qualite  '.
333
			'FROM cel_obs_images AS coi '.
333
			'FROM cel_obs_images AS coi '.
334
			'LEFT JOIN cel_obs AS ci '.
334
			'LEFT JOIN cel_obs AS ci '.
335
				'ON (coi.id_observation = ci.id_observation) '.
335
				'ON (coi.id_observation = ci.id_observation) '.
336
			'LEFT JOIN cel_images AS cim '.
336
			'LEFT JOIN cel_images AS cim '.
337
				'ON (coi.id_image = cim.id_image) '.  
337
				'ON (coi.id_image = cim.id_image) '.
338
			'WHERE ci.transmission = 1 '.
338
			'WHERE ci.transmission = 1 '.
339
			'	AND ci.ce_utilisateur = cim.ce_utilisateur '.
339
			'	AND ci.ce_utilisateur = cim.ce_utilisateur '.
340
			'ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 'cim.date_creation DESC').' '.
340
			'ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 'cim.date_creation DESC').' '.
341
			"LIMIT $this->start, $this->limit ";
341
			"LIMIT $this->start, $this->limit ";
Line 342... Line 342...
342
 
342
 
343
		$elements = $this->executerRequete($requete);
343
		$elements = $this->executerRequete($requete);
344
		
344
 
345
		// Création du contenu
345
		// Création du contenu
346
		$contenu = $this->executerService($elements);
346
		$contenu = $this->executerService($elements);
347
		return $contenu;
347
		return $contenu;
348
	}
348
	}
349
	
349
 
350
	private function creerTitreSimple($element) {
350
	private function creerTitreSimple($element) {
351
		if ($this->etreNull($element['nom_sel']) && $this->etreNull($element['nom_sel_nn'])) {
351
		if ($this->etreNull($element['nom_sel']) && $this->etreNull($element['nom_sel_nn'])) {
352
			$titre = "Ajout d'une photo par ".$this->auteurs[$element['ce_utilisateur']];
352
			$titre = "Ajout d'une photo par ".$this->getIntituleAuteur($element['courriel_utilisateur']);
353
		} else {
353
		} else {
354
			$titre = $element['nom_sel'].' [nn'.$element['nom_sel_nn'].'] par '.$element['prenom_utilisateur'].' '.$element['nom_utilisateur'];
354
			$titre = $element['nom_sel'].' [nn'.$element['nom_sel_nn'].'] par '.$element['prenom_utilisateur'].' '.$element['nom_utilisateur'];
355
		}
355
		}
356
		return $titre;
356
		return $titre;
357
	}
357
	}
358
	
358
 
359
	private function creerDescriptionSimple($donnees, $item) {
359
	private function creerDescriptionSimple($donnees, $item) {
360
		$description = sprintf($this->config['settings']['efloreUrlTpl'], urlencode($donnees['nom_sel_nn']), 'illustration');
360
		$description = sprintf($this->config['settings']['efloreUrlTpl'], urlencode($donnees['nom_sel_nn']), 'illustration');
361
		return $description;
361
		return $description;
362
	}
362
	}
363
	
363
 
364
	private function getServiceComplet() {
364
	private function getServiceComplet() {
365
		
365
 
366
		// Construction de la requête
366
		// Construction de la requête
367
		$requete = 	(isset($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
367
		$requete = 	(isset($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
368
			'	cim.id_image, ci.ce_utilisateur, nom_original, cim.date_creation, cim.mots_cles_texte as mots_cles_texte_images, '.
368
			'	cim.id_image, ci.ce_utilisateur, nom_original, cim.date_creation, cim.mots_cles_texte as mots_cles_texte_images, '.
369
			'   ci.mots_cles_texte as mots_cles_texte_obs, cim.commentaire as commentaire_img, note_qualite, '.
369
			'   ci.mots_cles_texte as mots_cles_texte_obs, cim.commentaire as commentaire_img, note_qualite, '.
Line 374... Line 374...
374
			'	LEFT JOIN cel_obs AS ci '.
374
			'	LEFT JOIN cel_obs AS ci '.
375
			'		ON (coi.id_observation = ci.id_observation) '.
375
			'		ON (coi.id_observation = ci.id_observation) '.
376
			(($this->etreFluxAdmin()) ? '' : 'WHERE ci.transmission = 1 ').
376
			(($this->etreFluxAdmin()) ? '' : 'WHERE ci.transmission = 1 ').
377
			'ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 'cim.date_creation DESC').' '.
377
			'ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 'cim.date_creation DESC').' '.
378
			"LIMIT $this->start, $this->limit ";
378
			"LIMIT $this->start, $this->limit ";
379
		
379
 
380
		$elements = $this->executerRequete($requete);
380
		$elements = $this->executerRequete($requete);
Line 381... Line 381...
381
 
381
 
382
		// Création du contenu
382
		// Création du contenu
383
		if ($elements != false && count($elements) > 0) {
383
		if ($elements != false && count($elements) > 0) {
Line 387... Line 387...
387
			$contenu = array();
387
			$contenu = array();
388
		}
388
		}
Line 389... Line 389...
389
 
389
 
390
		return $contenu;
390
		return $contenu;
391
	}
391
	}
392
	
392
 
393
	private function getServiceMultiCriteres() {
393
	private function getServiceMultiCriteres() {
394
		$contenu = '';
394
		$contenu = '';
395
		if (isset($_GET['debut'])) $this->start = $_GET['debut'];		
395
		if (isset($_GET['debut'])) $this->start = $_GET['debut'];
396
		if (isset($_GET['limite'])) $this->limite = $_GET['limite'];
396
		if (isset($_GET['limite'])) $this->limite = $_GET['limite'];
397
		
397
 
398
		// Construction de la requête
398
		// Construction de la requête
399
		$requete = 'SELECT *, b.mots_cles_texte as mots_cles_texte_obs, c.mots_cles_texte as mots_cles_texte_images, '.
399
		$requete = 'SELECT *, b.mots_cles_texte as mots_cles_texte_obs, c.mots_cles_texte as mots_cles_texte_images, '.
400
		    ' b.commentaire as commentaire_obs, c.commentaire as commentaire_img '.
400
		    ' b.commentaire as commentaire_obs, c.commentaire as commentaire_img '.
401
			'FROM cel_obs_images AS a '.
401
			'FROM cel_obs_images AS a '.
402
			'	INNER JOIN cel_obs AS b '.
402
			'	INNER JOIN cel_obs AS b '.
403
			'		ON (a.id_observation = b.id_observation) '.
403
			'		ON (a.id_observation = b.id_observation) '.
404
			'	INNER JOIN cel_images AS c '.
404
			'	INNER JOIN cel_images AS c '.
405
			'		ON (a.id_image = c.id_image) '. 
405
			'		ON (a.id_image = c.id_image) '.
406
			'WHERE b.ce_utilisateur = c.ce_utilisateur '.
406
			'WHERE b.ce_utilisateur = c.ce_utilisateur '.
407
			(($this->etreFluxAdmin()) ? '' : 'AND b.transmission = 1 ').
407
			(($this->etreFluxAdmin()) ? '' : 'AND b.transmission = 1 ').
408
			'	AND ';
408
			'	AND ';
409
		
409
 
410
		if ($this->estUneRechercheGenerale()) {
410
		if ($this->estUneRechercheGenerale()) {
411
			$chaine_requete = $_GET['recherche'];
411
			$chaine_requete = $_GET['recherche'];
412
			$requete .= $this->creerSousRequeteRechercheGenerale($chaine_requete);
412
			$requete .= $this->creerSousRequeteRechercheGenerale($chaine_requete);
413
		} else {
413
		} else {
414
			$criteres = $this->traiterCriteresMultiples($_GET) ;
414
			$criteres = $this->traiterCriteresMultiples($_GET) ;
415
			if (!empty($criteres)) {
415
			if (!empty($criteres)) {
416
				$requete .= $this->creerSousRequeteRechercheParCriteres($criteres);
416
				$requete .= $this->creerSousRequeteRechercheParCriteres($criteres);
417
			}	
417
			}
418
		}
418
		}
419
		$requete = str_replace(' AND ) ',' ', $requete);
419
		$requete = str_replace(' AND ) ',' ', $requete);
420
		$requete = rtrim($requete, 'AND ');
420
		$requete = rtrim($requete, 'AND ');
421
		$requete .= ' ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 
421
		$requete .= ' ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  :
Line 422... Line 422...
422
			'c.date_creation DESC').' '."LIMIT $this->start,$this->limit ";
422
			'c.date_creation DESC').' '."LIMIT $this->start,$this->limit ";
Line 423... Line 423...
423
 
423
 
424
		$elements = $this->executerRequete($requete);
424
		$elements = $this->executerRequete($requete);
425
 
425
 
426
		// Création du contenu
426
		// Création du contenu
427
		if ($elements != false && count($elements) > 0) {
427
		if ($elements != false && count($elements) > 0) {
428
			$contenu = $this->executerService($elements);
428
			$contenu = $this->executerService($elements);
429
		} else {
429
		} else {
430
			$this->messages[] = "Aucune image disponible.";
430
			$this->messages[] = "Aucune image disponible.";
431
		}
431
		}
432
        
432
 
433
        return $contenu;
433
        return $contenu;
434
	}
434
	}
435
	
435
 
436
	private function creerSousRequeteRechercheParCriteres($criteres) {
436
	private function creerSousRequeteRechercheParCriteres($criteres) {
437
		$requete = '';
437
		$requete = '';
Line 445... Line 445...
445
						foreach($mots_comment_liste as $mot_comment) {
445
						foreach($mots_comment_liste as $mot_comment) {
446
							$mot_comment = trim($mot_comment) ;
446
							$mot_comment = trim($mot_comment) ;
447
							$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote('%'.$mot_comment.'%').' AND ';
447
							$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote('%'.$mot_comment.'%').' AND ';
448
						}
448
						}
449
						break;
449
						break;
450
					case "c.date_prise_de_vue" : 
450
					case "c.date_prise_de_vue" :
451
						$nom_valeur[1] = str_replace('/', '-', $nom_valeur[1]);
451
						$nom_valeur[1] = str_replace('/', '-', $nom_valeur[1]);
452
						if (preg_match('/(^[0-9]{2})-([0-9]{2})-([0-9]{4}$)/', $nom_valeur[1], $matches)) {
452
						if (preg_match('/(^[0-9]{2})-([0-9]{2})-([0-9]{4}$)/', $nom_valeur[1], $matches)) {
453
							$nom_valeur[1] = $matches[3].'-'.$matches[2].'-'.$matches[1];
453
							$nom_valeur[1] = $matches[3].'-'.$matches[2].'-'.$matches[1];
454
						}
454
						}
455
						$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote($nom_valeur[1]."%").' AND '; break;
455
						$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote($nom_valeur[1]."%").' AND '; break;
456
					case "b.ce_zone_geo" :
456
					case "b.ce_zone_geo" :
457
						$requete .= ' ('.$nom_valeur[0].' LIKE "%INSEE-C:'.$nom_valeur[1].'%") AND '; break;
457
						$requete .= ' ('.$nom_valeur[0].' LIKE "%INSEE-C:'.$nom_valeur[1].'%") AND '; break;
458
					case "b.nom_ret" : 
458
					case "b.nom_ret" :
459
						if ($nom_valeur[1] == "indetermine") $nom_valeur[1] = 'null';						
459
						if ($nom_valeur[1] == "indetermine") $nom_valeur[1] = 'null';
460
						$requete .= ' ('.$nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%" OR b.nom_sel LIKE "%'.
460
						$requete .= ' ('.$nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%" OR b.nom_sel LIKE "%'.
461
							$nom_valeur[1].'%") AND '; break;
461
							$nom_valeur[1].'%") AND '; break;
462
					case "tag" : $requete .= $this->creerSousRequeteMotsCles($nom_valeur[1]).' AND '; break; 
462
					case "tag" : $requete .= $this->creerSousRequeteMotsCles($nom_valeur[1]).' AND '; break;
463
					case "projet" : $requete .= $this->creerSousRequeteProjet($nom_valeur[1]).' AND '; break; 		
463
					case "projet" : $requete .= $this->creerSousRequeteProjet($nom_valeur[1]).' AND '; break;
464
					default : $requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'" AND '; break;
464
					default : $requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'" AND '; break;
465
				}
465
				}
466
			}
466
			}
467
		}
467
		}
468
		$requete = rtrim($requete,' AND ');
468
		$requete = rtrim($requete,' AND ');
469
		return $requete;
469
		return $requete;
470
	}
470
	}
471
	
471
 
472
	private function creerSousRequeteMotsCles($mot_cle) {
472
	private function creerSousRequeteMotsCles($mot_cle) {
473
	$requete = '';
473
	$requete = '';
474
		if (preg_match('/.*OU.*/', $mot_cle)) {
474
		if (preg_match('/.*OU.*/', $mot_cle)) {
475
			$mots_cles_tab = explode('OU',$mot_cle);
475
			$mots_cles_tab = explode('OU',$mot_cle);
476
			foreach($mots_cles_tab as $mot_cle_item) {
476
			foreach($mots_cles_tab as $mot_cle_item) {
Line 486... Line 486...
486
		} else {
486
		} else {
487
			$requete = "(c.mots_cles_texte LIKE ".$this->proteger('%'.$mot_cle.'%').') ';
487
			$requete = "(c.mots_cles_texte LIKE ".$this->proteger('%'.$mot_cle.'%').') ';
488
		}
488
		}
489
		return $requete;
489
		return $requete;
490
	}
490
	}
491
	
491
 
492
	private function creerSousRequeteProjet($mot_cle) {
492
	private function creerSousRequeteProjet($mot_cle) {
493
		$requete = '';
493
		$requete = '';
494
		if (preg_match('/.*OU.*/', $mot_cle)) {
494
		if (preg_match('/.*OU.*/', $mot_cle)) {
495
			$mots_cles_tab = explode('OU',$mot_cle);
495
			$mots_cles_tab = explode('OU',$mot_cle);
496
			foreach($mots_cles_tab as $mot_cle_item) {
496
			foreach($mots_cles_tab as $mot_cle_item) {
Line 506... Line 506...
506
		} else {
506
		} else {
507
			$requete = "(b.mots_cles_texte LIKE ".$this->proteger('%'.$mot_cle.'%').') ';
507
			$requete = "(b.mots_cles_texte LIKE ".$this->proteger('%'.$mot_cle.'%').') ';
508
		}
508
		}
509
		return $requete;
509
		return $requete;
510
	}
510
	}
511
	
511
 
512
	private function creerSousRequeteRechercheGenerale($chaine_requete) {
512
	private function creerSousRequeteRechercheGenerale($chaine_requete) {
513
		$requete = '';
513
		$requete = '';
514
		if (trim($chaine_requete) != '') {	
514
		if (trim($chaine_requete) != '') {
515
			$chaine_requete = strtolower($chaine_requete);
515
			$chaine_requete = strtolower($chaine_requete);
516
			$chaine_requete = str_replace(' ', '_', $chaine_requete);
516
			$chaine_requete = str_replace(' ', '_', $chaine_requete);
517
			$requete = ' ('.
517
			$requete = ' ('.
518
				'b.nom_ret LIKE "'.$chaine_requete.'%"'.
518
				'b.nom_ret LIKE "'.$chaine_requete.'%"'.
519
				' OR '.
519
				' OR '.
Line 534... Line 534...
534
				'c.mots_cles_texte LIKE "'.$chaine_requete.'%" '.
534
				'c.mots_cles_texte LIKE "'.$chaine_requete.'%" '.
535
				') ';
535
				') ';
536
		}
536
		}
537
		return $requete;
537
		return $requete;
538
	}
538
	}
539
	
539
 
540
	private function estUneRechercheGenerale() {
540
	private function estUneRechercheGenerale() {
541
		return isset($_GET['recherche']);
541
		return isset($_GET['recherche']);
542
	}
542
	}
543
	
543
 
544
	private function traiterCriteresMultiples($tableau_criteres) {
544
	private function traiterCriteresMultiples($tableau_criteres) {
545
		$tableau_criteres_pour_bdd = array();
545
		$tableau_criteres_pour_bdd = array();
546
				
546
 
547
		foreach($tableau_criteres as $nom_critere => $valeur_critere) {
547
		foreach($tableau_criteres as $nom_critere => $valeur_critere) {
548
			if (isset($this->criteres[$nom_critere])) {
548
			if (isset($this->criteres[$nom_critere])) {
549
				$tableau_criteres_pour_bdd[] = $this->criteres[$nom_critere].'='.$valeur_critere;
549
				$tableau_criteres_pour_bdd[] = $this->criteres[$nom_critere].'='.$valeur_critere;
550
			}
550
			}
551
		}
551
		}
552
		return $tableau_criteres_pour_bdd;
552
		return $tableau_criteres_pour_bdd;
553
	}
553
	}
Line 554... Line 554...
554
 
554
 
555
	private function creerDescriptionComplet($donnees, $item) {
555
	private function creerDescriptionComplet($donnees, $item) {
556
		$auteur = $donnees['prenom_utilisateur'].' '.$donnees['nom_utilisateur'];
556
		$auteur = $this->getIntituleAuteur($donnees['courriel_utilisateur']);
557
		$auteur_mail = $donnees['courriel_utilisateur'];
557
		$auteur_mail = $donnees['courriel_utilisateur'];
558
		
558
 
559
		$id_img = $donnees['id_image'];
559
		$id_img = $donnees['id_image'];
560
		$nom_fichier = $donnees['nom_original'];
560
		$nom_fichier = $donnees['nom_original'];
561
		$url_img = $this->getUrlImage($donnees['id_image'], 'CS');
561
		$url_img = $this->getUrlImage($donnees['id_image'], 'CS');
562
		$url_img_normale = $this->getUrlImage($donnees['id_image'], 'XL');
562
		$url_img_normale = $this->getUrlImage($donnees['id_image'], 'XL');
563
		//
563
		//
564
		$mots_cles_image = $donnees['mots_cles_texte_images'];
564
		$mots_cles_image = $donnees['mots_cles_texte_images'];
565
		$note = ($donnees['note_qualite'] +1).'/5';
565
		$note = ($donnees['note_qualite'] +1).'/5';
566
		$commentaire_img = $donnees['commentaire_img'];
566
		$commentaire_img = $donnees['commentaire_img'];
567
		
567
 
568
		$id_obs = $donnees['id_observation'];
568
		$id_obs = $donnees['id_observation'];
569
		$famille = $donnees['famille'];
569
		$famille = $donnees['famille'];
570
		$nom_saisi = $donnees['nom_sel'];
570
		$nom_saisi = $donnees['nom_sel'];
571
		$nom_retenu = $donnees['nom_ret'];
571
		$nom_retenu = $donnees['nom_ret'];
Line 578... Line 578...
578
		$date_observation = $this->formaterDate($donnees['date_observation'], '%A %d %B %Y');
578
		$date_observation = $this->formaterDate($donnees['date_observation'], '%A %d %B %Y');
579
		$date_transmission = $this->formaterDate($donnees['date_transmission']);
579
		$date_transmission = $this->formaterDate($donnees['date_transmission']);
580
		$date_modification = $this->formaterDate($donnees['date_modification']);
580
		$date_modification = $this->formaterDate($donnees['date_modification']);
581
		$date_creation = $this->formaterDate($donnees['date_creation']);
581
		$date_creation = $this->formaterDate($donnees['date_creation']);
582
		$transmission = $donnees['transmission'] == 1 ? "oui ($date_transmission)" : 'non';
582
		$transmission = $donnees['transmission'] == 1 ? "oui ($date_transmission)" : 'non';
583
		
583
 
584
		$description = '<style>.champ{color:grey} .gauche{float:left;padding:0 20px 0 0;} ul{list-style-type:none;padding:0;}</style>'.
584
		$description = '<style>.champ{color:grey} .gauche{float:left;padding:0 20px 0 0;} ul{list-style-type:none;padding:0;}</style>'.
585
			'<h2>'.(!$this->etreNull($id_obs) ? "Image #$id_img liée à l'observation #$id_obs" : "Image #$id_img non liée à une observation.").'</h2>'.
585
			'<h2>'.(!$this->etreNull($id_obs) ? "Image #$id_img liée à l'observation #$id_obs" : "Image #$id_img non liée à une observation.").'</h2>'.
586
			'<a href="'.$url_img_normale.'"><img class="gauche" src="'.$url_img.'" alt="'.$nom_fichier.'" /></a>'.
586
			'<a href="'.$url_img_normale.'"><img class="gauche" src="'.$url_img.'" alt="'.$nom_fichier.'" /></a>'.
587
			'<div class="gauche">'.
587
			'<div class="gauche">'.
588
			'<h3>'.'Image'.'</h3>'.
588
			'<h3>'.'Image'.'</h3>'.
Line 598... Line 598...
598
			'<li>'.'<span class="champ">Mots-clés :</span> '.$mots_cles_image.'</li>'.
598
			'<li>'.'<span class="champ">Mots-clés :</span> '.$mots_cles_image.'</li>'.
599
			'</ul>'.
599
			'</ul>'.
600
			'</div>';
600
			'</div>';
601
			// TODO : ajouter le champ commentaire EXIF.
601
			// TODO : ajouter le champ commentaire EXIF.
602
		if (! $this->etreNull($id_obs)) {
602
		if (! $this->etreNull($id_obs)) {
603
			$description .= 
603
			$description .=
604
				'<div class="gauche">'.
604
				'<div class="gauche">'.
605
				'<h3>'.'Observation'.'</h3>'.
605
				'<h3>'.'Observation'.'</h3>'.
606
				'<ul>'.
606
				'<ul>'.
607
				'<li>'.'<span class="champ">Famille :</span> '.$famille.'</li>'.
607
				'<li>'.'<span class="champ">Famille :</span> '.$famille.'</li>'.
608
				'<li>'.'<span class="champ">Nom saisi :</span> '.$nom_saisi.'</li>'.
608
				'<li>'.'<span class="champ">Nom saisi :</span> '.$nom_saisi.'</li>'.
Line 620... Line 620...
620
				'</div>';
620
				'</div>';
621
		}
621
		}
622
		$description = $this->nettoyerTexte($description);
622
		$description = $this->nettoyerTexte($description);
623
		return $description;
623
		return $description;
624
	}
624
	}
625
	
625
 
626
	private function getServiceParMotsCles() {
626
	private function getServiceParMotsCles() {
627
		$infos=array();
627
		$infos=array();
628
		$infos[0]['nom_sel_nn'] = '';
628
		$infos[0]['nom_sel_nn'] = '';
629
		$infos[0]['date_creation'] = '2011-06-28';
629
		$infos[0]['date_creation'] = '2011-06-28';
630
		$donnees = $this->construireDonneesCommunesAuFlux($infos);
630
		$donnees = $this->construireDonneesCommunesAuFlux($infos);
Line 632... Line 632...
632
		$donnees['items'][0]['description'] =  'Ce flux est devenu obsolète. Veuillez utiliser le flux '.
632
		$donnees['items'][0]['description'] =  'Ce flux est devenu obsolète. Veuillez utiliser le flux '.
633
			'<b>http://www.tela-botanica.org/eflore/cel2/jrest/CelSyndicationImage/multicriteres/atom?tag=';
633
			'<b>http://www.tela-botanica.org/eflore/cel2/jrest/CelSyndicationImage/multicriteres/atom?tag=';
634
		if (isset($this->parametres[0])) {
634
		if (isset($this->parametres[0])) {
635
			$donnees['items'][0]['description'] .= $this->parametres[0].'</b>';
635
			$donnees['items'][0]['description'] .= $this->parametres[0].'</b>';
636
		} else {
636
		} else {
637
			$donnees['items'][0]['description'] .= '</b>';	
637
			$donnees['items'][0]['description'] .= '</b>';
638
		}
638
		}
639
		$donnees['items'][0]['titre'] = '';
639
		$donnees['items'][0]['titre'] = '';
640
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
640
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
641
		return $contenu;
641
		return $contenu;
642
	}
642
	}
643
	
643
 
644
	private function getServiceParCommune() {
644
	private function getServiceParCommune() {
645
		$infos=array();
645
		$infos=array();
646
		$infos[0]['nom_sel_nn'] = '';
646
		$infos[0]['nom_sel_nn'] = '';
647
		$infos[0]['date_creation'] = '2011-06-28';
647
		$infos[0]['date_creation'] = '2011-06-28';
648
		$donnees = $this->construireDonneesCommunesAuFlux($infos);
648
		$donnees = $this->construireDonneesCommunesAuFlux($infos);
Line 650... Line 650...
650
		$donnees['items'][0]['description'] = 'Ce flux est devenu obsolète. Veuillez utiliser le flux '.
650
		$donnees['items'][0]['description'] = 'Ce flux est devenu obsolète. Veuillez utiliser le flux '.
651
			'<b>http://www.tela-botanica.org/eflore/cel2/jrest/CelSyndicationImage/multicriteres/atom?commune=';
651
			'<b>http://www.tela-botanica.org/eflore/cel2/jrest/CelSyndicationImage/multicriteres/atom?commune=';
652
		if (isset($this->parametres[0])) {
652
		if (isset($this->parametres[0])) {
653
			$donnees['items'][0]['description'] .= $this->parametres[0].'</b>';
653
			$donnees['items'][0]['description'] .= $this->parametres[0].'</b>';
654
		} else {
654
		} else {
655
			$donnees['items'][0]['description'] .= '</b>';	
655
			$donnees['items'][0]['description'] .= '</b>';
656
		}
656
		}
657
		$donnees['items'][0]['titre'] = '';
657
		$donnees['items'][0]['titre'] = '';
658
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
658
		$contenu = Cel::traiterSquelettePhp($this->squelette, $donnees);
659
		return $contenu;
659
		return $contenu;
660
	}
660
	}
661
}	
-
 
662
661
 
-
 
662
	private function getIntituleAuteur($courriel) {
-
 
663
		$courriel = strtolower($courriel);
-
 
664
		$intitule = $this->auteurs[$courriel];
-
 
665
		return $intitule;
-
 
666
	}
-
 
667
}
-
 
668
663
669