Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 525 Rev 528
Line 21... Line 21...
21
 * @version $Id$
21
 * @version $Id$
22
 * @copyright 2010
22
 * @copyright 2010
23
 */
23
 */
24
class CelSyndicationObservation extends Cel {
24
class CelSyndicationObservation extends Cel {
Line -... Line 25...
-
 
25
	
25
	
26
	private $parametres_origines = null;
26
	private $format = null;
27
	private $format = null;
27
	private $service = null;
-
 
28
	public $parametres = null;
28
	private $service = null;
29
	private $squelette = null;
29
	private $squelette = null;
30
	private $squelette_dossier = null;
30
	private $squelette_dossier = null;
Line 31... Line 31...
31
	private $flux = array();
31
	private $flux = array();
32
	
32
	
33
	/**
33
	/**
34
	 * Méthode appelée avec une requête de type GET.
34
	 * Méthode appelée avec une requête de type GET.
35
	 */
35
	 */
-
 
36
	public function getElement($params = array()) {
36
	public function getElement($params = array()) {
37
		// Initialisation des variables
37
		// Initialisation des variables
38
		$this->parametres_origines = $params;
Line 38... Line 39...
38
		$info = array();
39
		$info = array();
39
		$contenu = '';
40
		$contenu = '';
Line 91... Line 92...
91
		$url_base = sprintf($this->config['settings']['baseURLAbsoluDyn'], get_class($this).'/');
92
		$url_base = sprintf($this->config['settings']['baseURLAbsoluDyn'], get_class($this).'/');
92
		return $url_base;
93
		return $url_base;
93
	}
94
	}
Line 94... Line 95...
94
	
95
	
95
	private function getUrlServiceBase() {
96
	private function getUrlServiceBase() {
96
		$url_service = $this->getUrlBase().$this->service.'/'.$this->format;
97
		$url_service = $this->getUrlBase().implode('/', $this->parametres_origines);
97
		return $url_service;
98
		return $url_service;
Line 98... Line 99...
98
	}
99
	}
99
	
100
	
Line 192... Line 193...
192
	
193
	
193
	private function getServiceParDefaut() {
194
	private function getServiceParDefaut() {
194
		// Construction de la requête
195
		// Construction de la requête
195
		$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' * '.
196
		$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' * '.
196
			'FROM cel_inventory '.
197
			'FROM cel_inventory '.
197
			'WHERE transmission = 1 '.
-
 
198
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'date_modification DESC').' '.
-
 
199
			"LIMIT $this->start,$this->limit ";
-
 
200
		
-
 
201
		$elements = $this->executerRequete($requete);
-
 
202
		
-
 
203
		// Création du contenu
-
 
204
		$contenu = $this->executerService($elements);
-
 
205
		return $contenu;
-
 
206
	}
-
 
207
	
-
 
208
	private function getServicePourAdmin() {
-
 
209
		// Construction de la requête
-
 
210
		$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' * '.
-
 
211
			'FROM cel_inventory '.
198
			(($this->etreFluxAdmin()) ? '' : 'WHERE transmission = 1 ').
212
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'date_modification DESC').' '.
199
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'date_modification DESC').' '.
Line 213... Line 200...
213
			"LIMIT $this->start,$this->limit ";
200
			"LIMIT $this->start,$this->limit ";
Line 241... Line 228...
241
				}
228
				}
Line 242... Line 229...
242
				
229
				
243
				// Construction de la requête
230
				// Construction de la requête
244
				$requete = 	'SELECT * '.
231
				$requete = 	'SELECT * '.
245
					'FROM cel_inventory '.
232
					'FROM cel_inventory '.
246
					'WHERE transmission = 1 '.
233
					'WHERE '.implode(" \nOR ", $requete_where).' '.
247
					'AND '.implode(" \nOR ", $requete_where).' '.
234
					'	'.(($this->etreFluxAdmin()) ? '' : 'AND transmission = 1 ').
248
					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'date_modification, date_creation DESC').' '.
235
					'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'date_modification, date_creation DESC').' '.
249
					"LIMIT $this->start,$this->limit ";
236
					"LIMIT $this->start,$this->limit ";
Line 250... Line 237...
250
				$elements = $this->executerRequete($requete);
237
				$elements = $this->executerRequete($requete);
Line 267... Line 254...
267
			$commune = $this->bdd->quote($commune);
254
			$commune = $this->bdd->quote($commune);
Line 268... Line 255...
268
			
255
			
269
			// Construction de la requête
256
			// Construction de la requête
270
			$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' * '.
257
			$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' * '.
271
				'FROM cel_inventory '.
258
				'FROM cel_inventory '.
272
				'WHERE transmission = 1 '.
259
				"WHERE location = $commune ".
273
				"AND location = $commune ".
260
				'	'.(($this->etreFluxAdmin()) ? '' : 'AND transmission = 1 ').
274
				'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'date_modification DESC, location ASC').' '.
261
				'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'date_modification DESC, location ASC').' '.
Line 275... Line 262...
275
				"LIMIT $this->start,$this->limit ";
262
				"LIMIT $this->start,$this->limit ";
Line 320... Line 307...
320
		return $donnees; 
307
		return $donnees; 
321
	}
308
	}
Line 322... Line 309...
322
	
309
	
323
	private function construireDonneesCommunesAuxItems($observation) {
310
	private function construireDonneesCommunesAuxItems($observation) {
324
		$item = array();
311
		$item = array();
325
		$date_modification_timestamp = strtotime($observation['date_modification']);
312
		$date_modification_timestamp = $this->convertirDateHeureMysqlEnTimestamp($observation['date_modification']);
326
		$item['date_maj_simple'] = strftime('%A %d %B %Y à %H:%M', $date_modification_timestamp);
313
		$item['date_maj_simple'] = strftime('%A %d %B %Y à %H:%M', $date_modification_timestamp);
327
		$item['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
314
		$item['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
328
		$item['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
315
		$item['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
329
		$item['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
316
		$item['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
330
		$item['date_creation_simple'] = strftime('%A %d %B %Y à %H:%M', strtotime($observation['date_creation']));
317
		$item['date_creation_simple'] = strftime('%A %d %B %Y à %H:%M', strtotime($observation['date_creation']));
331
		$item['titre'] = $this->creerTitre($observation);
318
		$item['titre'] = $this->creerTitre($observation);
332
		$item['guid'] = $this->creerGuidItem($observation);
319
		$item['guid'] = $this->creerGuidItem($observation);
333
		$item['lien'] = $this->creerLienItem($observation);
-
 
334
		$item['description'] = $this->creerDescription($observation, $item);
320
		$item['lien'] = $this->creerLienItem($observation);
-
 
321
		$item['categorie'] = $this->creerCategorie($item);
335
		$item['categorie'] = $this->creerCategorie($item);
322
		$item['description'] = $this->creerDescription($this->protegerCaracteresHtmlDansChamps($observation), $item);
336
		$item['description_encodee'] = htmlspecialchars($item['description']);
323
		$item['description_encodee'] = htmlspecialchars($this->creerDescription($observation, $item));
337
		$item['modifier_par'] = $this->creerAuteur($observation['identifiant'], $this->etreFluxAdmin());
324
		$item['modifier_par'] = $this->creerAuteur($observation['identifiant'], $this->etreFluxAdmin());
338
		return $item;
325
		return $item;
Line 339... Line 326...
339
	}
326
	}
Line 359... Line 346...
359
		}
346
		}
360
		return $lien;
347
		return $lien;
361
	}
348
	}
Line 362... Line 349...
362
	
349
	
-
 
350
	private function creerDescription($obs, $item) {
-
 
351
		$id_obs = $donnees['id'];
-
 
352
		$famille = $obs['famille'];
-
 
353
		$nom_saisi = $obs['nom_sel'];
-
 
354
		$nom_retenu = $obs['nom_ret'];
-
 
355
		$auteur = $this->creerAuteur($obs['identifiant'], $this->etreFluxAdmin());
363
	private function creerDescription($obs, $item) {
356
		$mots_cles_obs = $this->decoderMotsClesObs($obs['identifiant'], $obs['mots_cles']);
-
 
357
		$lien_correction = sprintf($this->config['settings']['phpEditUrlTpl'], $obs['id']);
364
		$lien_correction = sprintf($this->config['settings']['phpEditUrlTpl'], $obs['id']);
358
		$lieu = $obs['location'].' ('.$obs['id_location'].') > '.$obs['lieudit'].' > '.$obs['station'];
-
 
359
		$milieu = $obs['milieu'];
-
 
360
		$coordonnees = ($this->etreNull($obs['coord_x']) && $this->etreNull($obs['coord_y'])) ? '' : $obs['coord_x'].'/'.$obs['coord_y'];
-
 
361
		$commentaire = htmlspecialchars($obs['commentaire']);
-
 
362
		$date_observation = $this->formaterDate($obs['date_observation'], '%A %d %B %Y');
-
 
363
		$date_transmission = $this->formaterDate($obs['date_transmission']);
-
 
364
		$date_modification = $this->formaterDate($obs['date_modification']);
-
 
365
		$date_creation = $this->formaterDate($obs['date_creation']);
-
 
366
		$transmission = $obs['transmission'] == 1 ? "oui ($date_transmission)" : 'non';
-
 
367
		
365
		$description = 
368
		$description = '<h2>'."Observation #$id_obs de $nom_saisi".'</h2>'.
-
 
369
			'<ul>'.
366
			'<ul>'.
370
			'<li>'.'Famille : '.$famille.'</li>'.
367
			'	<li>Nom saisi : '.$obs['nom_sel'].'</li>'.
371
			'<li>'.'Nom saisi : '.$nom_saisi.'</li>'.
368
			(($obs['nom_sel'] != $obs['nom_ret']) ? '	<li>Nom retenu : '.$obs['nom_ret'].'</li>' : '').
372
			'<li>'.'Nom retenu : '.$nom_retenu.'</li>'.
-
 
373
			'<li>'.'Observée le : '.$date_observation.'</li>'.
369
			'	<li>Lieu : '.$obs['location'].' ('.$obs['id_location'].')</li>'.
374
			'<li>'.'Lieu : '.$lieu.'</li>'.
370
			($this->etreNull($obs['station']) ? '': '	<li>Station : '.$obs['station'].'</li>').
375
			'<li>'.'Milieu : '.$milieu.'</li>'.
371
			($this->etreNull($obs['milieu']) ? '': '	<li>Milieu : '.$obs['milieu'].'</li>').
376
			(($this->etreFluxAdmin()) ? '<li>Coordonnées (Lat/Long) : '.$coordonnees.'</li>' : '').
-
 
377
			'<li>'.'Commentaire : '.$commentaire.'</li>'.
372
			($this->etreNull($obs['commentaire']) ? '': '	<li>Commentaire : '.$obs['commentaire'].'</li>').
378
			'<li>'.'Mots-clés : '.implode(', ', $mots_cles_obs).'</li>'.
373
			(($this->etreFluxAdmin()) ? '	<li>Transmis (= public) : '.($obs['transmission'] == 1 ? 'oui' : 'non').'</li>' : '').
379
			(($this->etreFluxAdmin()) ? '<li>Transmis (= public) : '.$transmission.'</li>' : '').
374
			'	<li>Modifiée le : '.$item['date_maj_simple'].'</li>'.
380
			'<li>Modifiée le : '.$date_modification.'</li>'.
375
			'	<li>Créée le : '.$item['date_creation_simple'].'</li>'. 
381
			'<li>Créée le : '.$date_creation.'</li>'.
376
			(($this->etreFluxAdmin()) ? '	<li><a href="'.$lien_correction.'">Corriger cette observation</a></li>' : '').
382
			(($this->etreFluxAdmin()) ? '<li><a href="'.$lien_correction.'">Corriger cette observation</a></li>' : '').
377
			'</ul>';
383
			'</ul>';
378
		$description = $this->nettoyerTexte($description);
384
		$description = $this->nettoyerTexte($description);
379
		return $description;
385
		return $description;
Line 385... Line 391...
385
		$categorie = $this->nettoyerTexte($categorie);
391
		$categorie = $this->nettoyerTexte($categorie);
386
		return $categorie;
392
		return $categorie;
387
	}
393
	}
Line 388... Line 394...
388
	
394
	
389
	private function etreFluxAdmin() {
395
	private function etreFluxAdmin() {
390
		return ($this->service == 'pour-admin' || $_GET['admin'] == '1') ? true : false;
396
		return ($_GET['admin'] == '1') ? true : false;
Line 391... Line 397...
391
	}
397
	}
392
	
398
	
393
	private function creerUrlService() {
-
 
394
		$url_service = $this->getUrlServiceBase();
-
 
395
		if (isset($this->start) || isset($this->limit)) {
-
 
396
			$arguments = array();
-
 
397
			if (isset($this->start) && isset($_GET['start'])) {
-
 
398
				$arguments[] = 'start='.$this->start;
-
 
399
			}
-
 
400
			if (isset($this->limit) && isset($_GET['limit'])) {
-
 
401
				$arguments[] = 'limit='.($this->limit);
399
	private function creerUrlService() {
402
			}
400
		$url_service = $this->getUrlServiceBase();
403
			if (count($arguments) > 0) {
-
 
404
				$url_service .= '?'.implode('&', $arguments);
401
		if (count($_GET) > 0) {
405
			}
402
			$url_service .= '?'.implode('&', $_GET);
406
		}
403
		}
407
		return $url_service;
404
		return $url_service;
408
	}
405
	}