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.' ';
|