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->compterImages();
|
61 |
$total = $this->compterImages();
|
Line 66... |
Line 71... |
66 |
|
71 |
|
67 |
private function initialiserRessourcesEtParametres($ressources, $parametres) {
|
72 |
private function initialiserRessourcesEtParametres($ressources, $parametres) {
|
68 |
$this->ressources = $ressources;
|
73 |
$this->ressources = $ressources;
|
69 |
$this->parametres = $parametres;
|
74 |
$this->parametres = $parametres;
|
- |
|
75 |
}
|
- |
|
76 |
|
- |
|
77 |
private function verifierParametresTri() {
|
- |
|
78 |
|
- |
|
79 |
$erreurs = array();
|
- |
|
80 |
$tris_possibles = $this->conteneur->getParametre('tris_possibles');
|
- |
|
81 |
$tris_possibles_tableau = explode(',', $tris_possibles);
|
- |
|
82 |
if(isset($this->parametres['tri']) && !in_array($this->parametres['tri'], $tris_possibles_tableau)) {
|
- |
|
83 |
$erreurs[] = '- le type de tri demandé est incorrect, les valeurs possibles sont '.$tris_possibles.' ;';
|
- |
|
84 |
}
|
- |
|
85 |
|
- |
|
86 |
$directions_tri = array('asc', 'desc');
|
- |
|
87 |
if(isset($this->parametres['ordre']) && !in_array($this->parametres['ordre'], $directions_tri)) {
|
- |
|
88 |
$erreurs[] = '- la direction du tri demandé est incorrecte, les valeurs supportées sont asc ou desc ;';
|
- |
|
89 |
}
|
- |
|
90 |
|
- |
|
91 |
if (!empty($erreurs)) {
|
- |
|
92 |
$e = 'Erreur lors de l\'analyse des parametres du tri : '."\n";
|
- |
|
93 |
$e .= implode("\n", $erreurs);
|
- |
|
94 |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
|
- |
|
95 |
}
|
- |
|
96 |
}
|
- |
|
97 |
|
- |
|
98 |
private function initialiserTri() {
|
- |
|
99 |
$this->tri = isset($this->parametres['tri']) ? $this->parametres['tri'] : $this->tri;
|
- |
|
100 |
$this->directionTri = isset($this->parametres['ordre']) ? $this->parametres['ordre'] : $this->directionTri;
|
70 |
}
|
101 |
}
|
71 |
/*-------------------------------------------------------------------------------
|
102 |
/*-------------------------------------------------------------------------------
|
72 |
CONFIGURATION DU SERVICE
|
103 |
CONFIGURATION DU SERVICE
|
73 |
--------------------------------------------------------------------------------*/
|
104 |
--------------------------------------------------------------------------------*/
|
74 |
/**
|
105 |
/**
|
Line 121... |
Line 152... |
121 |
$erreurs[] = '- le mapping du champ "'.$champ.'" pour l\'observation est manquant ;';
|
152 |
$erreurs[] = '- le mapping du champ "'.$champ.'" pour l\'observation est manquant ;';
|
122 |
}
|
153 |
}
|
123 |
}
|
154 |
}
|
124 |
}
|
155 |
}
|
Line -... |
Line 156... |
- |
|
156 |
|
- |
|
157 |
$tris_possibles = $this->conteneur->getParametre('tris_possibles');
|
- |
|
158 |
if (empty($tris_possibles)) {
|
- |
|
159 |
$erreurs[] = '- le fichier de configuration ne contient pas le parametre tris_possibles ou celui-ci est vide ;';
|
- |
|
160 |
}
|
125 |
|
161 |
|
126 |
if (!empty($erreurs)) {
|
162 |
if (!empty($erreurs)) {
|
127 |
$e = 'Erreur lors de la configuration : '."\n";
|
163 |
$e = 'Erreur lors de la configuration : '."\n";
|
128 |
$e .= implode("\n", $erreurs);
|
164 |
$e .= implode("\n", $erreurs);
|
129 |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
|
165 |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
|
Line 146... |
Line 182... |
146 |
|
182 |
|
147 |
/**
|
183 |
/**
|
148 |
* Charger la clause WHERE en fonction des paramètres de masque
|
184 |
* Charger la clause WHERE en fonction des paramètres de masque
|
149 |
* */
|
185 |
* */
|
150 |
private function chargerClauseWhere() {
|
- |
|
151 |
// TODO: factoriser cette fonction qui est quasiment identique dans liste image et dans liste observation
|
- |
|
152 |
// faire une classe mère, une classe utilitaire ?
|
186 |
private function chargerClauseWhere() {
|
153 |
$where = array();
|
187 |
$where = array();
|
154 |
$tableauMasque = $this->masque->getMasque();
|
188 |
$tableauMasque = $this->masque->getMasque();
|
155 |
if (!empty($tableauMasque)) {
|
189 |
if (!empty($tableauMasque)) {
|
156 |
foreach($tableauMasque as $idMasque => $valeurMasque) {
|
190 |
foreach($tableauMasque as $idMasque => $valeurMasque) {
|
Line 307... |
Line 341... |
307 |
$masque .= (is_numeric($valeurMasque)) ? ' YEAR(date_observation) = '.$this->proteger($valeurMasque).' OR ' : '';
|
341 |
$masque .= (is_numeric($valeurMasque)) ? ' YEAR(date_observation) = '.$this->proteger($valeurMasque).' OR ' : '';
|
308 |
$masque .= " DATE_FORMAT(date_observation, '%d/%m/%Y') = ".$this->proteger($valeurMasque).' '.
|
342 |
$masque .= " DATE_FORMAT(date_observation, '%d/%m/%Y') = ".$this->proteger($valeurMasque).' '.
|
309 |
')';
|
343 |
')';
|
310 |
return $masque;
|
344 |
return $masque;
|
311 |
}
|
345 |
}
|
312 |
|
346 |
|
313 |
private function creerFiltreMotsCles($valeurMasque) {
|
347 |
private function creerFiltreMotsCles($valeurMasque) {
|
- |
|
348 |
|
- |
|
349 |
$mots_cles = explode(' ', $valeurMasque);
|
- |
|
350 |
$requeteMotsClesImg = '';
|
- |
|
351 |
$requeteMotsClesObs = '';
|
- |
|
352 |
//TODO voir s'il existe un moyen plus simple que le foreach + rtrim
|
- |
|
353 |
// comme avec implode
|
- |
|
354 |
foreach($mots_cles as $mot_cle) {
|
314 |
$masque = '(di.mots_cles_texte LIKE '.$this->proteger('%'.$valeurMasque.'%').' OR '.
|
355 |
$requeteMotsCles = $this->proteger('%'.$mot_cle.'%');
|
- |
|
356 |
$requeteMotsClesImg .= 'di.mots_cles_texte LIKE '.$requeteMotsCles.' AND ';
|
315 |
' dob.mots_cles_texte LIKE '.$this->proteger('%'.$valeurMasque.'%').') ';
|
357 |
$requeteMotsClesObs .= 'dob.mots_cles_texte LIKE '.$requeteMotsCles.' AND ';
|
- |
|
358 |
}
|
- |
|
359 |
$requeteMotsClesImg = rtrim($requeteMotsClesImg, ' AND ');
|
- |
|
360 |
$requeteMotsClesObs = rtrim($requeteMotsClesObs, ' AND ');
|
- |
|
361 |
|
- |
|
362 |
$masque = '('.
|
- |
|
363 |
'('.$requeteMotsClesImg.') OR '.
|
- |
|
364 |
'('.$requeteMotsClesObs.') '.
|
- |
|
365 |
') ';
|
- |
|
366 |
|
316 |
return $masque;
|
367 |
return $masque;
|
317 |
}
|
368 |
}
|
Line 318... |
Line 369... |
318 |
|
369 |
|
319 |
/*-------------------------------------------------------------------------------
|
370 |
/*-------------------------------------------------------------------------------
|
Line 322... |
Line 373... |
322 |
/**
|
373 |
/**
|
323 |
* Chargement depuis la bdd de toutes les liaisons entre images et observations
|
374 |
* Chargement depuis la bdd de toutes les liaisons entre images et observations
|
324 |
* */
|
375 |
* */
|
325 |
private function chargerLiaisons() {
|
376 |
private function chargerLiaisons() {
|
Line 326... |
Line 377... |
326 |
|
377 |
|
327 |
$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS * '.
|
378 |
$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS * '.
|
328 |
'FROM '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
|
379 |
'FROM '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
|
329 |
'INNER JOIN del_image di '.
|
380 |
'INNER JOIN del_image di '.
|
330 |
'ON doi.id_image = di.id_image '.
|
381 |
'ON doi.id_image = di.id_image '.
|
331 |
'INNER JOIN del_observation dob '.
|
382 |
'INNER JOIN del_observation dob '.
|
332 |
'ON doi.id_observation = dob.id_observation '.
|
383 |
'ON doi.id_observation = dob.id_observation '.
|
333 |
'INNER JOIN del_utilisateur du '.
|
384 |
'INNER JOIN del_utilisateur du '.
|
334 |
'ON du.id_utilisateur = doi.id_utilisateur';
|
385 |
'ON du.id_utilisateur = doi.id_utilisateur';
|
335 |
$requeteLiaisons .= $this->chargerClauseWhere();
|
386 |
$requeteLiaisons .= $this->chargerClauseWhere();
|
336 |
$requeteLiaisons .= ' ORDER BY date_transmission DESC';
|
387 |
$requeteLiaisons .= $this->getTri();
|
Line 337... |
Line 388... |
337 |
$requeteLiaisons .= $this->gestionBdd->getLimitSql();
|
388 |
$requeteLiaisons .= $this->gestionBdd->getLimitSql();
|
338 |
|
389 |
|
Line -... |
Line 390... |
- |
|
390 |
return $this->bdd->recupererTous($requeteLiaisons);
|
- |
|
391 |
}
|
- |
|
392 |
|
- |
|
393 |
private function getTri() {
|
- |
|
394 |
$order = '';
|
- |
|
395 |
if($this->tri != 'vote') {
|
- |
|
396 |
$order = ' ORDER BY '.$this->tri.' '.$this->directionTri.' ';
|
- |
|
397 |
}
|
339 |
return $this->bdd->recupererTous($requeteLiaisons);
|
398 |
return $order;
|
340 |
}
|
399 |
}
|
341 |
|
400 |
|
342 |
/**
|
401 |
/**
|
343 |
* Compter le nombre total d'images dans la base pour affichage dans entete.
|
402 |
* Compter le nombre total d'images dans la base pour affichage dans entete.
|
Line 358... |
Line 417... |
358 |
foreach ($liaisons as $liaison) {
|
417 |
foreach ($liaisons as $liaison) {
|
359 |
$idImage = $liaison['id_image'];
|
418 |
$idImage = $liaison['id_image'];
|
Line 360... |
Line 419... |
360 |
|
419 |
|
361 |
// On enregistre l'ID de l'image pour n'effectuer qu'une seule requête par la suite
|
420 |
// On enregistre l'ID de l'image pour n'effectuer qu'une seule requête par la suite
|
- |
|
421 |
$this->imageIds[] = $idImage;
|
362 |
$this->imageIds[] = $idImage;
|
422 |
$index = $liaison['id_image'].'-'.$liaison['id_observation'];
|
363 |
$images[$idImage] = array('id_image' => $idImage, 'date' => $liaison['date_prise_de_vue'], 'binaire.href' => $this->formaterLienImage($idImage),
|
423 |
$images[$index] = array('id_image' => $idImage, 'date' => $liaison['date_prise_de_vue'], 'binaire.href' => $this->formaterLienImage($idImage),
|
364 |
'hauteur' => $liaison['hauteur'], 'largeur' => $liaison['largeur'], 'protocoles_votes' => array(), 'observation' => $this->formaterObservation($liaison));
|
424 |
'hauteur' => $liaison['hauteur'], 'largeur' => $liaison['largeur'], 'protocoles_votes' => array(), 'observation' => $this->formaterObservation($liaison));
|
365 |
}
|
425 |
}
|
366 |
return $images;
|
426 |
return $images;
|