Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 705 Rev 710
Line 24... Line 24...
24
	
24
	
25
	private $criteres = array(
25
	private $criteres = array(
26
		'auteur' => 'c.ci_ce_utilisateur', 
26
		'auteur' => 'c.ci_ce_utilisateur', 
27
		'commune' => 'b.location', 
27
		'commune' => 'b.location', 
28
		'departement' => 'b.id_location',
28
		'departement' => 'b.id_location',
-
 
29
		'taxon' => 'b.nom_ret',
-
 
30
		'commentaire' => 'c.ci_meta_comment',
Line 29... Line 31...
29
		'taxon' => 'b.nom_ret');
31
		'date' => 'c.ci_meta_date');
30
	
32
	
31
	/**
33
	/**
32
	 * Méthode appelée avec une requête de type GET.
34
	 * Méthode appelée avec une requête de type GET.
Line 62... Line 64...
62
						$this->format = '';
64
						$this->format = '';
63
						$this->messages[] = "Le service CEL Syndication nécessite d'indiquer en second paramètre le format : rss1, rss2 ou atom.";
65
						$this->messages[] = "Le service CEL Syndication nécessite d'indiquer en second paramètre le format : rss1, rss2 ou atom.";
64
					}
66
					}
Line 65... Line 67...
65
					
67
					
66
					if (!isset($this->flux[$this->service]) || isset($this->format)) {
68
					if (!isset($this->flux[$this->service]) || isset($this->format)) {
67
						// Suppression des paramêtres inutile pour le reste des méthodes
69
						// Suppression des deux premiers paramètres (service et format)  pour le reste des méthodes
68
						array_shift($this->parametres);
70
						array_shift($this->parametres);
Line 69... Line 71...
69
						array_shift($this->parametres);
71
						array_shift($this->parametres);
70
						
72
						
Line 89... Line 91...
89
	private function chargerListeDesFlux() {
91
	private function chargerListeDesFlux() {
90
		$this->setFlux('simple', 'Nouvelles images liées à une observation dans le CEL', 
92
		$this->setFlux('simple', 'Nouvelles images liées à une observation dans le CEL', 
91
			"Ce flux fournit l'url des nouvelles images du CEL liées à une observation.");
93
			"Ce flux fournit l'url des nouvelles images du CEL liées à une observation.");
92
		$this->setFlux('complet', 'Nouvelles images liées à une observation dans le CEL (détails)', 
94
		$this->setFlux('complet', 'Nouvelles images liées à une observation dans le CEL (détails)', 
93
			"Ce flux fournit les informations sur les nouvelles images du CEL liées à une observation.");
95
			"Ce flux fournit les informations sur les nouvelles images du CEL liées à une observation.");
94
		$this->setFlux('par-mots-cles', 'Flux de syndication des nouvelles images liées à une observation publique du CEL filtrées par mots clés', 
96
		$this->setFlux('par-mots-cles', 'Flux de syndication des nouvelles images liées à une observation publique du CEL ".
-
 
97
			"filtrées par mots clés',
95
			"Ce flux fournit des informations sur les nouvelles images du CEL liées à une observation du CEL filtrées par mots-clés. Il nécessite d'être 
98
			"Ce flux fournit des informations sur les nouvelles images du CEL liées à une observation du CEL filtrées par ".
96
			paramétré en indiquant en dernier position de l'url le mot-clé à rechercher.");
99
			"mots-clés. Il nécessite d'être paramétré en indiquant en dernier position de l'url le mot-clé à rechercher.");
97
		$this->setFlux('par-commune','Flux de syndication des nouvelles images liées à une observation publique du CEL filtrées par commune',
100
		$this->setFlux('par-commune','Flux de syndication des nouvelles images liées à une observation publique du CEL ".
-
 
101
			"filtrées par commune',
98
			"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par commune. Il nécessite d'être 
102
			"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par commune. ".
-
 
103
			"Il nécessite d'être paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
-
 
104
		$this->setFlux('multicriteres','Flux de syndication des nouvelles images liées à une observation publique du CEL '.
-
 
105
			'filtrées par un ou plusieurs critères',
-
 
106
			"Ce flux fournit des informations sur les nouvelles images liées à une observation du CEL filtrées par ".
-
 
107
			"auteur (mail), commune (nom), departement (code postal), taxon (nom scientifique), commentaire, mots-clés ".
-
 
108
			"et/ou date. Il nécessite d'être 
99
			paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
109
			paramétré en indiquant en dernier position de l'url le nom de la commune à rechercher.");
100
	}
110
	}
Line 101... Line 111...
101
	
111
	
102
	private function setFlux($nom, $titre, $description) {
112
	private function setFlux($nom, $titre, $description) {
103
		$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CoelSyndicationImage/';
113
		$url_base = $this->config['settings']['baseURLAbsoluDyn'].'CelSyndicationImage/';
104
		$formats = array('atom', 'rss2', 'rss1');
114
		$formats = array('atom', 'rss2', 'rss1');
105
		$flux = array();
115
		$flux = array();
106
		foreach ($formats as $format) {
116
		foreach ($formats as $format) {
107
			$url = $url_base.$nom.'/'.$format;
117
			$url = $url_base.$nom.'/'.$format;
Line 173... Line 183...
173
		$categorie = $this->nettoyerTexte($categorie);
183
		$categorie = $this->nettoyerTexte($categorie);
174
		return $categorie;
184
		return $categorie;
175
	}
185
	}
Line 176... Line 186...
176
		
186
		
177
	private function etreFluxAdmin() {
187
	private function etreFluxAdmin() {
178
		return ($_GET['admin'] == '1') ? true : false;
188
		return (isset($_GET['admin']) && $_GET['admin'] == '1') ? true : false;
Line 179... Line 189...
179
	}
189
	}
180
	
190
	
181
	private function creerUrlService() {
191
	private function creerUrlService() {
Line 188... Line 198...
188
			$url_service .= '?'.implode('&', $parametres_get);
198
			$url_service .= '?'.implode('&', $parametres_get);
189
		}
199
		}
190
		return $url_service;
200
		return $url_service;
191
	}
201
	}
Line 192... Line 202...
192
	
202
	
193
	protected function executerRequete($requete) {
203
	protected function executerRequete($requete, $retour = 'All', $mode = PDO::FETCH_ASSOC) {
194
		try {
204
		try {
195
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
205
			$infos = $this->bdd->query($requete)->fetchAll(PDO::FETCH_ASSOC);
196
			if ($infos === false) {
206
			if ($infos === false) {
197
				$this->messages[] = "La requête suivante a retourné aucun résultat :\n$requete";
207
				$this->messages[] = "La requête suivante a retourné aucun résultat :\n$requete";
Line 218... Line 228...
218
	
228
	
219
	private function construireDonneesCommunesAuFlux($infos) {
229
	private function construireDonneesCommunesAuFlux($infos) {
220
		$donnees = $this->getFlux($this->service);
230
		$donnees = $this->getFlux($this->service);
221
		$donnees['guid'] = $this->getUrlServiceBase();
231
		$donnees['guid'] = $this->getUrlServiceBase();
-
 
232
		$donnees['lien_service'] = $this->creerUrlService();
222
		$donnees['lien_service'] = $this->creerUrlService();
233
		$donnees['lien_cel'] = (isset($infos['num_nom_sel'])) ? 
223
		$donnees['lien_cel'] = sprintf($this->config['settings']['efloreUrlTpl'], $infos['num_nom_sel'], 'illustration');
234
			sprintf($this->config['settings']['efloreUrlTpl'], $infos['num_nom_sel'], 'illustration') : '';
224
		$donnees['editeur'] = $this->config['settings']['editeur'];
235
		$donnees['editeur'] = $this->config['settings']['editeur'];
225
		$derniere_info_en_date = reset($infos);
236
		$derniere_info_en_date = reset($infos);
226
		$date_modification_timestamp = strtotime($derniere_info_en_date['ci_meta_date_ajout']);
237
		$date_modification_timestamp = strtotime($derniere_info_en_date['ci_meta_date_ajout']);
227
		$donnees['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
238
		$donnees['date_maj_RSS'] = date(DATE_RSS, $date_modification_timestamp);
228
		$donnees['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
239
		$donnees['date_maj_ATOM'] = date(DATE_ATOM, $date_modification_timestamp);
229
		$donnees['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
240
		$donnees['date_maj_W3C'] = date(DATE_W3C, $date_modification_timestamp);
230
		$donnees['annee_courante'] = date('Y');
241
		$donnees['annee_courante'] = date('Y');
231
		$donnees['generateur'] = 'CEL - Jrest - CelSyndicationImage';
242
		$donnees['generateur'] = 'CEL - Jrest - CelSyndicationImage';
232
		preg_match('/([0-9]+)/', '$Revision$', $match);
-
 
233
		$donnees['generateur_version'] = $match[1];
243
		$donnees['generateur_version'] = (preg_match('/([0-9]+)/', '$Revision$', $match)) ?  $match[1] : '0';
234
		return $donnees; 
244
		return $donnees; 
Line 235... Line 245...
235
	}
245
	}
236
	
246
	
Line 345... Line 355...
345
		return $description;
355
		return $description;
346
	}
356
	}
Line 347... Line 357...
347
	
357
	
348
	private function getServiceComplet() {
358
	private function getServiceComplet() {
349
		// Construction de la requête
359
		// Construction de la requête
350
		$requete = 	(($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
360
		$requete = 	(isset($this->distinct) ? 'SELECT DISTINCT' : 'SELECT').' ci.*, '.
351
			'	ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
361
			'	ci_id_image, ci_ce_utilisateur, ci_nom_original, ci_meta_date_ajout, ci_meta_mots_cles, ci_meta_comment, ci_note_image '.
352
			'FROM cel_images AS cim '.
362
			'FROM cel_images AS cim '.
353
			'	LEFT JOIN cel_obs_images AS coi '.
363
			'	LEFT JOIN cel_obs_images AS coi '.
354
			'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
364
			'		ON (coi.coi_ce_image = cim.ci_id_image AND coi.coi_ce_utilisateur = cim.ci_ce_utilisateur) '.
355
			'	LEFT JOIN cel_inventory AS ci '.
365
			'	LEFT JOIN cel_inventory AS ci '.
356
			'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
366
			'		ON (coi.coi_ce_observation = ci.ordre AND coi.coi_ce_utilisateur = ci.identifiant) '.
357
			(($this->etreFluxAdmin()) ? '' : 'WHERE ci.transmission = 1 ').
367
			(($this->etreFluxAdmin()) ? '' : 'WHERE ci.transmission = 1 ').
358
			'ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
368
			'ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 'ci_meta_date_ajout DESC').' '.
Line 359... Line 369...
359
			"LIMIT $this->start, $this->limit ";
369
			"LIMIT $this->start, $this->limit ";
Line 360... Line 370...
360
		
370
		
Line 369... Line 379...
369
 
379
 
370
		return $contenu;
380
		return $contenu;
Line 371... Line 381...
371
	}
381
	}
372
	
-
 
373
	private function getServiceMultiCriteres() {
-
 
374
		if (! $this->estUneRechercheGenerale()) {
-
 
375
			$criteres = $this->traiterCriteresMultiples($_GET);
382
	
376
			
-
 
377
			if (empty($criteres)) {
-
 
378
				return $contenu = $this->executerService(array());
-
 
379
			}				
-
 
380
		}
383
	private function getServiceMultiCriteres() {
381
		
384
		$contenu = '';
382
		if (isset($_GET['debut'])) {
385
		if (isset($_GET['debut'])) {
Line 383... Line 386...
383
			$this->start = $_GET['debut'];
386
			$this->start = $_GET['debut'];
Line 401... Line 404...
401
		if ($this->estUneRechercheGenerale()) {
404
		if ($this->estUneRechercheGenerale()) {
402
			$chaine_requete = $_GET['recherche'];
405
			$chaine_requete = $_GET['recherche'];
403
			$sous_requete = $this->creerSousRequeteRechercheGenerale($chaine_requete);
406
			$sous_requete = $this->creerSousRequeteRechercheGenerale($chaine_requete);
404
		} else {
407
		} else {
405
			$criteres = $this->traiterCriteresMultiples($_GET) ;
408
			$criteres = $this->traiterCriteresMultiples($_GET) ;
-
 
409
			if (empty($criteres)) {
-
 
410
				$sous_requete = '';
-
 
411
			}
406
			$sous_requete = $this->creerSousRequeteRechercheParCriteres($criteres);
412
			$sous_requete = $this->creerSousRequeteRechercheParCriteres($criteres);
407
		}
413
		}
Line 408... Line 414...
408
	
414
	
409
		$requete .= $sous_requete;
415
		$requete .= $sous_requete;
410
		$requete = rtrim($requete, 'AND ');
416
		$requete = rtrim($requete, 'AND ');
411
		$requete .= ' ORDER BY '.((!is_null($this->orderby)) ? $this->orderby  : 'c.ci_meta_date_ajout DESC').' ';
417
		$requete .= ' ORDER BY '.(isset($this->orderby) && (!is_null($this->orderby)) ? $this->orderby  : 
Line 412... Line 418...
412
		$requete .= "LIMIT $this->start,$this->limit ";
418
			'c.ci_meta_date_ajout DESC').' '."LIMIT $this->start,$this->limit ";
Line 413... Line 419...
413
		
419
		
414
		$elements = $this->executerRequete($requete);
420
		$elements = $this->executerRequete($requete);
415
 
421
 
416
		// Création du contenu
422
		// Création du contenu
417
		if ($elements != false && count($elements) > 0) {
423
		if ($elements != false && count($elements) > 0) {
418
			$contenu = $this->executerService($elements);
424
			$contenu = $this->executerService($elements);
Line 419... Line 425...
419
		} else {
425
		} else {
420
			$this->messages[] = "Aucune image disponible.";
426
			$this->messages[] = "Aucune image disponible.$requete";
Line 421... Line 427...
421
		}
427
		}
422
        
428
        
423
        return $contenu;
429
        return $contenu;
424
	}
430
	}
425
	
431
	
426
	private function creerSousRequeteRechercheParCriteres($criteres) {
432
	private function creerSousRequeteRechercheParCriteres($criteres) {
427
		$requete = '';
433
		$requete = '';
428
		foreach ($criteres as $pair) {
-
 
429
			$nom_valeur = explode("=",$pair);
434
		foreach ($criteres as $pair) {
430
			if (sizeof($nom_valeur) != 0) {
-
 
431
				if ($nom_valeur[0] == "ci_limite") {
435
			$nom_valeur = explode("=",$pair);
432
					$this->limite = $this->bdd->quote($nom_valeur[1]);
-
 
433
				} elseif ($nom_valeur[0] == "c.ci_numero_page") {
436
			if (sizeof($nom_valeur) != 0) {
434
					$this->start = $this->limite*$this->bdd->quote($nom_valeur[1]);
437
				switch ($nom_valeur[0]) {
435
				} elseif ($nom_valeur[0] == "c.ci_meta_comment") {
438
					case "ci_limite" : $this->limite = $this->bdd->quote($nom_valeur[1]); break;
436
					$mots_comment_liste = explode(" " , $nom_valeur[1]);
-
 
437
 
439
					case "c.ci_numero_page" : $this->limite*$this->bdd->quote($nom_valeur[1]); break;
438
					foreach($mots_comment_liste as $mot_comment) {
440
					case "c.ci_meta_comment" : $mots_comment_liste = explode(" " , $nom_valeur[1]);
439
						$mot_comment = trim($mot_comment) ;
-
 
440
						$requete .= $nom_valeur[0].' LIKE "%'.$this->bdd->quote($mot_comment).'%"';
441
						foreach($mots_comment_liste as $mot_comment) {
441
						$requete .= ' AND ';
442
							$mot_comment = trim($mot_comment) ;
442
					}
-
 
443
				} elseif ($nom_valeur[0] == "c.ci_meta_date") {
443
							$requete .= $nom_valeur[0].' LIKE '.$this->bdd->quote('%'.$mot_comment.'%').' AND ';
444
					$requete .= 'DATE_FORMAT( '.$nom_valeur[0].', \'%Y-%m-%d\' ) = "'.$this->bdd->quote($nom_valeur[1]).'"';
444
						}
445
					$requete .= ' AND ';
445
						break;
446
				} elseif ($nom_valeur[0] == "b.nom_ret") {
-
 
447
					
-
 
448
					if ($nom_valeur[1] == "indetermine") {
446
					case "c.ci_meta_date" : 
449
						$nom_valeur[1] = 'null';
447
						$nom_valeur[1] = str_replace('/', '-', $nom_valeur[1]);
-
 
448
						if (preg_match('/(^[0-9]{2})-([0-9]{2})-([0-9]{4}$)/', $nom_valeur[1], $matches)) {
450
					}
449
							$nom_valeur[1] = $matches[3].'-'.$matches[2].'-'.$matches[1];
451
					
450
						}
452
					$requete .= ' (';
-
 
453
					$requete .= $nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%"';
-
 
454
					$requete .= ' OR ';
451
						$requete .= $nom_valeur[0].'='.$this->bdd->quote($nom_valeur[1]).' AND '; break;
455
					$requete .= 'b.nom_sel LIKE "%'.$nom_valeur[1].'%"';
-
 
456
					$requete .= ') AND ';
452
					case "b.nom_ret" : 
457
					
453
						if ($nom_valeur[1] == "indetermine") $nom_valeur[1] = 'null';						
458
				} else {
454
						$requete .= ' ('.$nom_valeur[0].' LIKE "%'.$nom_valeur[1].'%" OR b.nom_sel LIKE "%'.
459
					$requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'"';
455
							$nom_valeur[1].'%") AND '; break;
460
					$requete .= ' AND ';
456
					default : $requete .= $nom_valeur[0].' = "'.$nom_valeur[1].'" AND '; break;