Subversion Repositories eFlore/Applications.del

Rev

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

Rev 797 Rev 800
Line 23... Line 23...
23
	private $masque;
23
	private $masque;
24
	private $gestionBdd;
24
	private $gestionBdd;
25
	private $bdd;
25
	private $bdd;
26
	private $parametres = array();
26
	private $parametres = array();
27
	private $ressources = array();
27
	private $ressources = array();
-
 
28
	private $tri = 'date_transmission';
-
 
29
	private $directionTri = 'desc';
Line 28... Line 30...
28
	
30
	
29
	public function __construct(Conteneur $conteneur = null) {
31
	public function __construct(Conteneur $conteneur = null) {
30
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
32
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
31
		$this->conteneur->chargerConfiguration('config_departements_bruts.ini');
33
		$this->conteneur->chargerConfiguration('config_departements_bruts.ini');
Line 49... Line 51...
49
		
51
		
50
		// Gestion des configuration du script
52
		// Gestion des configuration du script
51
		$this->configurer();
53
		$this->configurer();
Line -... Line 54...
-
 
54
		$this->verifierConfiguration();
-
 
55
		
-
 
56
		$this->verifierParametresTri();
52
		$this->verifierConfiguration();
57
		$this->initialiserTri();
53
		
58
		
54
		// Lancement du service
59
		// Lancement du service
55
		$liaisons = $this->chargerLiaisons();
60
		$liaisons = $this->chargerLiaisons();
56
		$total = $this->compterObservations();
61
		$total = $this->compterObservations();
Line 67... Line 72...
67
	
72
	
68
	private function initialiserRessourcesEtParametres($ressources, $parametres) {
73
	private function initialiserRessourcesEtParametres($ressources, $parametres) {
69
		$this->ressources = $ressources;
74
		$this->ressources = $ressources;
70
		$this->parametres = $parametres;
75
		$this->parametres = $parametres;
-
 
76
	}
-
 
77
	
-
 
78
	private function verifierParametresTri() {
-
 
79
	
-
 
80
		$erreurs = array();
-
 
81
		$tris_possibles = $this->conteneur->getParametre('tris_possibles');
-
 
82
		$tris_possibles_tableau = explode(',', $tris_possibles);
-
 
83
		if(isset($this->parametres['tri']) && !in_array($this->parametres['tri'], $tris_possibles_tableau)) {
-
 
84
			$erreurs[] = '- le type de tri demandé est incorrect, les valeurs possibles sont '.$tris_possibles.' ;';
-
 
85
		}
-
 
86
	
-
 
87
		$directions_tri = array('asc', 'desc');
-
 
88
		if(isset($this->parametres['ordre']) && !in_array($this->parametres['ordre'], $directions_tri)) {
-
 
89
			$erreurs[] = '- la direction du tri demandé est incorrecte, les valeurs supportées sont asc ou desc ;';
-
 
90
		}
-
 
91
			
-
 
92
		if (!empty($erreurs)) {
-
 
93
			$e = 'Erreur lors de l\'analyse des parametres du tri : '."\n";
-
 
94
			$e .= implode("\n", $erreurs);
-
 
95
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
-
 
96
		}
-
 
97
	}
-
 
98
	
-
 
99
	private function initialiserTri() {
-
 
100
		$this->tri = isset($this->parametres['tri']) ? $this->parametres['tri'] : $this->tri;
-
 
101
		$this->directionTri = isset($this->parametres['ordre']) ? $this->parametres['ordre'] : $this->directionTri;
71
	}
102
	}
72
	/*-------------------------------------------------------------------------------
103
	/*-------------------------------------------------------------------------------
73
	 							CONFIGURATION DU SERVICE
104
	 							CONFIGURATION DU SERVICE
74
	 --------------------------------------------------------------------------------*/
105
	 --------------------------------------------------------------------------------*/
75
	/**
106
	/**
Line 207... Line 238...
207
		// ajouter à la chaine
238
		// ajouter à la chaine
208
		$whereAuteur = $this->creerFiltreAuteur($valeurMasque);
239
		$whereAuteur = $this->creerFiltreAuteur($valeurMasque);
209
		$whereIdZoneGeo = $this->creerFiltreIdZoneGeo($valeurMasque);
240
		$whereIdZoneGeo = $this->creerFiltreIdZoneGeo($valeurMasque);
Line 210... Line 241...
210
	
241
	
211
		$masqueGeneral = '( '.
242
		$masqueGeneral = '( '.
212
		(($whereAuteur != '') ? $whereAuteur.' OR ' : '' ).
243
						(($whereAuteur != '') ? $whereAuteur.' OR ' : '' ).
213
		(($whereIdZoneGeo != '') ? $whereIdZoneGeo.' OR ' : '' ).
244
						(($whereIdZoneGeo != '') ? $whereIdZoneGeo.' OR ' : '' ).
214
						'zone_geo LIKE '.$this->proteger($this->remplacerParJokerCaractere($valeurMasque).'%').' OR '.
245
						'zone_geo LIKE '.$this->proteger($this->remplacerParJokerCaractere($valeurMasque).'%').' OR '.
215
		$this->creerFiltreMotsCles($valeurMasque).' OR '.
246
						$this->creerFiltreMotsCles($valeurMasque).' OR '.
216
						'nom_sel LIKE '.$this->proteger($valeurMasque.'%').' OR '.
247
						'nom_sel LIKE '.$this->proteger($valeurMasque.'%').' OR '.
217
						'famille LIKE '.$this->proteger($valeurMasque.'%').' OR '.
248
						'famille LIKE '.$this->proteger($valeurMasque.'%').' OR '.
218
						'milieu LIKE '.$this->proteger($valeurMasque).' OR '.
249
						'milieu LIKE '.$this->proteger($valeurMasque).' OR '.
219
		$this->mappingFiltre['ns'].' LIKE '.$this->proteger('%'.$valeurMasque.'% %').' OR '.
250
						$this->mappingFiltre['ns'].' LIKE '.$this->proteger('%'.$valeurMasque.'% %').' OR '.
220
		$this->creerFiltreDate($valeurMasque).
251
						$this->creerFiltreDate($valeurMasque).
Line 221... Line 252...
221
						') ';
252
						') ';
222
	
253
	
Line 308... Line 339...
308
			           ')';
339
			           ')';
309
		return $masque;
340
		return $masque;
310
	}
341
	}
Line 311... Line 342...
311
	
342
	
-
 
343
	private function creerFiltreMotsCles($valeurMasque) {
-
 
344
		$mots_cles = explode(' ', $valeurMasque);
-
 
345
		$requeteMotsClesImg = '';
-
 
346
		$requeteMotsClesObs = '';
-
 
347
		//TODO voir s'il existe un moyen plus simple que le foreach + rtrim
-
 
348
		// comme avec implode
312
	private function creerFiltreMotsCles($valeurMasque) {
349
		foreach($mots_cles as $mot_cle) {
-
 
350
			$requeteMotsCles = $this->proteger('%'.$mot_cle.'%');
313
		$masque = '(di.mots_cles_texte LIKE '.$this->proteger('%'.$valeurMasque.'%').' OR '.
351
			$requeteMotsClesImg .= 'di.mots_cles_texte LIKE '.$requeteMotsCles.' AND ';
-
 
352
			$requeteMotsClesObs .= 'dob.mots_cles_texte LIKE '.$requeteMotsCles.' AND ';
-
 
353
		}
-
 
354
		$requeteMotsClesImg = rtrim($requeteMotsClesImg, ' AND ');
-
 
355
		$requeteMotsClesObs = rtrim($requeteMotsClesObs, ' AND ');
-
 
356
		
-
 
357
		$masque = '('.
-
 
358
		          	'('.$requeteMotsClesImg.') OR '.
-
 
359
		          	'('.$requeteMotsClesObs.') '.
-
 
360
				  ') ';
314
			                 ' dob.mots_cles_texte LIKE '.$this->proteger('%'.$valeurMasque.'%').') ';  
361
		
315
		return $masque;
362
		return $masque;                                                  			
Line 316... Line 363...
316
	}
363
	}
317
	
364
	
318
	/*-------------------------------------------------------------------------------
365
	/*-------------------------------------------------------------------------------
319
								CHARGEMENT DES OBSERVATIONS 
366
								CHARGEMENT DES OBSERVATIONS 
320
	--------------------------------------------------------------------------------*/
367
	--------------------------------------------------------------------------------*/
321
	/**
368
	/**
322
	* Chargement depuis la bdd de toutes les liaisons entre images et observations
369
	* Chargement depuis la bdd de toutes les liaisons entre images et observations
Line 323... Line 370...
323
	* */
370
	* */
324
	private function chargerLiaisons() {
371
	private function chargerLiaisons() {
325
	
372
	
326
		$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS * '.
373
		$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS *, di.mots_cles_texte '.
327
						   'FROM '.$this->gestionBdd->formaterTable('del_observation', 'dob').
374
						   'FROM '.$this->gestionBdd->formaterTable('del_observation', 'dob').
328
						   'INNER JOIN '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
375
						   'INNER JOIN '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
-
 
376
						   'ON doi.id_observation = dob.id_observation '.
-
 
377
						   'INNER JOIN del_utilisateur du '.
329
						   'ON doi.id_observation = dob.id_observation '.
378
						   'ON du.id_utilisateur = doi.id_utilisateur '.
330
						   'INNER JOIN del_utilisateur du '.
379
						   'INNER JOIN del_image di '.
331
						   'ON du.id_utilisateur = doi.id_utilisateur ';
380
						   'ON di.id_image = doi.id_image ';
332
		$requeteLiaisons .= $this->chargerClauseWhere();
381
		$requeteLiaisons .= $this->chargerClauseWhere();
Line 333... Line 382...
333
		$requeteLiaisons .=  ' GROUP BY doi.id_observation';
382
		$requeteLiaisons .= ' GROUP BY doi.id_observation';
334
		$requeteLiaisons .= ' ORDER BY date_transmission DESC ';
383
		$requeteLiaisons .= ' ORDER BY '.$this->tri.' '.$this->directionTri.' ';