| Line 37... |
Line 37... |
| 37 |
$this->masque = $conteneur->getMasque();
|
37 |
$this->masque = $conteneur->getMasque();
|
| 38 |
$this->gestionBdd = $conteneur->getGestionBdd();
|
38 |
$this->gestionBdd = $conteneur->getGestionBdd();
|
| 39 |
$this->bdd = $this->gestionBdd->getBdd();
|
39 |
$this->bdd = $this->gestionBdd->getBdd();
|
| 40 |
}
|
40 |
}
|
| Line 41... |
Line -... |
| 41 |
|
- |
|
| 42 |
|
- |
|
| 43 |
/** Nettoyer les paramètres pour ne pas accepter les %
|
- |
|
| 44 |
* */
|
- |
|
| 45 |
public function nettoyerParametres($parametres) {
|
- |
|
| 46 |
$parametresRetour = array();
|
- |
|
| 47 |
foreach ($parametres as $cle => $valeur) {
|
- |
|
| 48 |
$valSanPourcent = trim($valeur, "% ");
|
- |
|
| 49 |
if ($valSanPourcent != '') {
|
- |
|
| 50 |
$parametresRetour[$cle] = $valeur;
|
- |
|
| 51 |
}
|
- |
|
| 52 |
}
|
- |
|
| 53 |
|
- |
|
| 54 |
return $parametresRetour;
|
- |
|
| 55 |
}
|
- |
|
| 56 |
|
- |
|
| 57 |
/**
|
- |
|
| 58 |
* RequeteSansParametres
|
- |
|
| 59 |
*
|
- |
|
| 60 |
* permet de vérifier qu'il n'y a aucun paramètre dans la requete, excepté les informations de start et limite,
|
- |
|
| 61 |
* pour ajuster la requête pour un gain de temps
|
- |
|
| 62 |
* @param array $ressources les ressources telles qu'elles sont passées au script
|
- |
|
| 63 |
* @param array $parametres les paramètres tels qu'il sont passés au script
|
- |
|
| 64 |
* */
|
- |
|
| 65 |
public function requeteSansParametres($ressources, $parametres) {
|
- |
|
| 66 |
|
- |
|
| 67 |
$estSansParametres = true;
|
- |
|
| 68 |
|
- |
|
| 69 |
if (sizeof($ressources) > 0) {
|
- |
|
| 70 |
$estSansParametres = false;
|
- |
|
| 71 |
}
|
- |
|
| 72 |
|
- |
|
| 73 |
if (sizeof($parametres) > 2) {
|
- |
|
| 74 |
|
- |
|
| 75 |
// s'il y a plus de 2 paramètres, on est forcément dans le cas où on a demandé des paramètres autre que la navigation
|
- |
|
| 76 |
$estSansParametres = false;
|
- |
|
| 77 |
} else {
|
- |
|
| 78 |
if (sizeof($parametres) == 1) {
|
- |
|
| 79 |
if (!(isset($parametres['navigation.depart']) || isset($parametres['navigation.limite']))) {
|
- |
|
| 80 |
// s'il y a des paramètres, seul les paramètres de navigation n'interfère pas sur la requête
|
- |
|
| 81 |
$estSansParametres = false;
|
- |
|
| 82 |
}
|
- |
|
| 83 |
} elseif (sizeof($parametres) == 2) {
|
- |
|
| 84 |
// s'il y a des paramètres, seul les paramètres de navigation n'interfère pas sur la requête
|
- |
|
| 85 |
if (!(isset($parametres['navigation.depart']) && isset($parametres['navigation.limite']))) {
|
- |
|
| 86 |
$estSansParametres = false;
|
- |
|
| 87 |
}
|
- |
|
| 88 |
}
|
- |
|
| 89 |
}
|
- |
|
| 90 |
|
- |
|
| 91 |
return $estSansParametres;
|
- |
|
| 92 |
}
|
- |
|
| 93 |
|
41 |
|
| 94 |
/**
|
42 |
/**
|
| 95 |
* Méthode principale de la classe.
|
43 |
* Méthode principale de la classe.
|
| 96 |
* Lance la récupération des images dans la base et les place dans un objet ResultatService
|
44 |
* Lance la récupération des images dans la base et les place dans un objet ResultatService
|
| 97 |
* pour l'afficher.
|
45 |
* pour l'afficher.
|
| 98 |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
|
46 |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
|
| 99 |
* @param array $parametres les paramètres situés après le ? dans l'url
|
47 |
* @param array $parametres les paramètres situés après le ? dans l'url
|
| 100 |
* */
|
48 |
* */
|
| 101 |
public function consulter($ressources, $parametres) {
|
- |
|
| 102 |
|
49 |
public function consulter($ressources, $parametres) {
|
| Line 103... |
Line 50... |
| 103 |
$this->initialiserRessourcesEtParametres($ressources, $parametres);
|
50 |
$this->initialiserRessourcesEtParametres($ressources, $parametres);
|
| 104 |
|
51 |
|
| 105 |
// Gestion des configuration du script
|
52 |
// Gestion des configuration du script
|
| Line 106... |
Line 53... |
| 106 |
$this->configurer();
|
53 |
$this->configurer();
|
| 107 |
$this->verifierConfiguration();
|
54 |
$this->verifierConfiguration();
|
| Line 108... |
Line -... |
| 108 |
|
- |
|
| 109 |
$this->verifierParametresTri();
|
- |
|
| 110 |
$this->initialiserTri();
|
- |
|
| 111 |
|
55 |
|
| 112 |
$parametres = $this->nettoyerParametres($parametres);
|
- |
|
| 113 |
if ($this->requeteSansParametres($ressources, $parametres)) {
|
- |
|
| 114 |
|
- |
|
| 115 |
// Lancement du service
|
- |
|
| 116 |
$liaisons = $this->chargerLiaisonsSimple();
|
- |
|
| 117 |
$images = $this->chargerImage($liaisons);
|
- |
|
| 118 |
$images = $this->chargerVotes($images);
|
- |
|
| 119 |
|
- |
|
| 120 |
// Mettre en forme le résultat et l'envoyer pour affichage
|
- |
|
| 121 |
$resultat = new ResultatService();
|
- |
|
| 122 |
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
|
- |
|
| 123 |
return $resultat;
|
56 |
$this->verifierParametresTri();
|
| 124 |
} else {
|
57 |
$this->initialiserTri();
|
| 125 |
|
58 |
|
| 126 |
// Lancement du service
|
59 |
// Lancement du service
|
| 127 |
$liaisons = $this->chargerLiaisons();
|
60 |
$liaisons = $this->chargerLiaisons();
|
| 128 |
$total = $this->compterImages();
|
61 |
$total = $this->compterImages();
|
| 129 |
$this->navigation->setTotal($total);
|
62 |
$this->navigation->setTotal($total);
|
| 130 |
$images = $this->chargerImage($liaisons);
|
63 |
$images = $this->chargerImage($liaisons);
|
| 131 |
$images = $this->chargerVotes($images);
|
64 |
$images = $this->chargerVotes($images);
|
| 132 |
|
65 |
|
| 133 |
// Mettre en forme le résultat et l'envoyer pour affichage
|
- |
|
| 134 |
$resultat = new ResultatService();
|
- |
|
| 135 |
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
|
66 |
// Mettre en forme le résultat et l'envoyer pour affichage
|
| Line 136... |
Line 67... |
| 136 |
return $resultat;
|
67 |
$resultat = new ResultatService();
|
| 137 |
|
68 |
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
|
| 138 |
}
|
69 |
return $resultat;
|
| Line 257... |
Line 188... |
| 257 |
|
188 |
|
| 258 |
/**
|
189 |
/**
|
| 259 |
* Charger la clause WHERE en fonction des paramètres de masque
|
190 |
* Charger la clause WHERE en fonction des paramètres de masque
|
| 260 |
* */
|
191 |
* */
|
| 261 |
private function chargerClauseWhere() {
|
- |
|
| 262 |
|
192 |
private function chargerClauseWhere() {
|
| 263 |
$where = array();
|
193 |
$where = array();
|
| 264 |
$tableauMasque = $this->masque->getMasque();
|
194 |
$tableauMasque = $this->masque->getMasque();
|
| 265 |
if (!empty($tableauMasque)) {
|
195 |
if (!empty($tableauMasque)) {
|
| 266 |
foreach($tableauMasque as $idMasque => $valeurMasque) {
|
196 |
foreach($tableauMasque as $idMasque => $valeurMasque) {
|
| Line 350... |
Line 280... |
| 350 |
'(nom LIKE '.$this->proteger($tableauNomPrenom[1].'%').' AND '.
|
280 |
'(nom LIKE '.$this->proteger($tableauNomPrenom[1].'%').' AND '.
|
| 351 |
'prenom LIKE '.$this->proteger($tableauNomPrenom[0].'%').') OR '.
|
281 |
'prenom LIKE '.$this->proteger($tableauNomPrenom[0].'%').') OR '.
|
| 352 |
'(dob.nom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[0].'%').' AND '.
|
282 |
'(dob.nom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[0].'%').' AND '.
|
| 353 |
'dob.prenom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[1].'%').') OR '.
|
283 |
'dob.prenom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[1].'%').') OR '.
|
| 354 |
'(dob.nom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[1].'%').' AND '.
|
284 |
'(dob.nom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[1].'%').' AND '.
|
| 355 |
'dob.prenom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[0].'%').') OR '.
|
285 |
'dob.prenom_utilisateur LIKE '.$this->proteger($tableauNomPrenom[0].'%').') '.
|
| 356 |
'(nom LIKE '.$this->proteger($valeurMasque.'%').') OR '.
|
- |
|
| 357 |
'(prenom LIKE '.$this->proteger($valeurMasque.'%').') OR '.
|
- |
|
| 358 |
'(dob.nom_utilisateur LIKE '.$this->proteger($valeurMasque.'%').') OR '.
|
- |
|
| 359 |
'(dob.prenom_utilisateur LIKE '.$this->proteger($valeurMasque.'%').') '.
|
- |
|
| 360 |
')';
|
286 |
')';
|
| 361 |
} else {
|
287 |
} else {
|
| 362 |
$masque = '(
|
288 |
$masque = '(
|
| 363 |
(nom LIKE '.$this->proteger($auteurId.'%').' OR '.
|
289 |
(nom LIKE '.$this->proteger($auteurId.'%').' OR '.
|
| 364 |
'prenom LIKE '.$this->proteger($auteurId.'%').' OR '.
|
290 |
'prenom LIKE '.$this->proteger($auteurId.'%').' OR '.
|
| Line 444... |
Line 370... |
| 444 |
|
370 |
|
| 445 |
foreach($mots_cles as $mot_cle) {
|
371 |
foreach($mots_cles as $mot_cle) {
|
| 446 |
//TODO: rechercher sur les mots clés normalisés dans tous les cas ?
|
372 |
//TODO: rechercher sur les mots clés normalisés dans tous les cas ?
|
| 447 |
$requeteMotsCles = $this->proteger('%'.$mot_cle.'%');
|
373 |
$requeteMotsCles = $this->proteger('%'.$mot_cle.'%');
|
| - |
|
374 |
$motsCleProtege = $this->proteger($this->normaliserMotCle('%'.$mot_cle.'%'));
|
| 448 |
$motsCleProtege = $this->proteger($this->normaliserMotCle('%'.$mot_cle.'%'));
|
375 |
|
| - |
|
376 |
$requeteMotsClesImage = 'SELECT ce_image FROM del_image_tag WHERE tag_normalise LIKE '.$motsCleProtege.' AND actif = 1';
|
| - |
|
377 |
$images = $this->bdd->recupererTous($requeteMotsClesImage);
|
| - |
|
378 |
$idsImages = array();
|
| - |
|
379 |
foreach ($images as $image) {
|
| - |
|
380 |
$idsImages[] = $image['ce_image'];
|
| - |
|
381 |
}
|
| - |
|
382 |
|
| - |
|
383 |
if (!empty($idsImages)) {
|
| - |
|
384 |
$requeteMotsClesImgPublic[] = 'di.id_image IN ('.implode(',', $idsImages).')';
|
| - |
|
385 |
}
|
| 449 |
$requeteMotsClesImgPublic[] = 'di.id_image IN (SELECT ce_image FROM del_image_tag WHERE tag_normalise LIKE '.$motsCleProtege.' AND actif = 1)';
|
386 |
|
| 450 |
$requeteMotsClesImg[] = 'di.mots_cles_texte LIKE '.$requeteMotsCles;
|
387 |
$requeteMotsClesImg[] = 'di.mots_cles_texte LIKE '.$requeteMotsCles;
|
| 451 |
$requeteMotsClesObs[] = 'dob.mots_cles_texte LIKE '.$requeteMotsCles;
|
388 |
$requeteMotsClesObs[] = 'dob.mots_cles_texte LIKE '.$requeteMotsCles;
|
| Line 452... |
Line 389... |
| 452 |
}
|
389 |
}
|
| Line 458... |
Line 395... |
| 458 |
$masque = '('.
|
395 |
$masque = '('.
|
| 459 |
'('.$requeteMotsClesImgPublic.') OR '.
|
396 |
'('.$requeteMotsClesImgPublic.') OR '.
|
| 460 |
'('.$requeteMotsClesImg.') OR '.
|
397 |
'('.$requeteMotsClesImg.') OR '.
|
| 461 |
'('.$requeteMotsClesObs.') '.
|
398 |
'('.$requeteMotsClesObs.') '.
|
| 462 |
')';
|
399 |
')';
|
| 463 |
|
- |
|
| 464 |
return $masque;
|
400 |
return $masque;
|
| 465 |
}
|
401 |
}
|
| Line 466... |
Line 402... |
| 466 |
|
402 |
|
| 467 |
/*-------------------------------------------------------------------------------
|
403 |
/*-------------------------------------------------------------------------------
|
| Line 470... |
Line 406... |
| 470 |
/**
|
406 |
/**
|
| 471 |
* Chargement depuis la bdd de toutes les liaisons entre images et observations
|
407 |
* Chargement depuis la bdd de toutes les liaisons entre images et observations
|
| 472 |
* */
|
408 |
* */
|
| 473 |
private function chargerLiaisons() {
|
409 |
private function chargerLiaisons() {
|
| Line 474... |
Line -... |
| 474 |
|
- |
|
| 475 |
// 1. Récupérer les id observation
|
410 |
|
| 476 |
$requeteObs = ' SELECT id_observation FROM del_observation dob LEFT JOIN del_utilisateur du ON dob.ce_utilisateur = du.id_utilisateur ';
|
- |
|
| 477 |
|
- |
|
| 478 |
$masques = $this->masque->getMasque();
|
- |
|
| 479 |
$conditionsObs = array();
|
- |
|
| 480 |
|
- |
|
| 481 |
if (isset($masques['masque'])) {
|
- |
|
| 482 |
$conditionLibre = array();
|
- |
|
| 483 |
$passe = $masques['masque'];
|
- |
|
| 484 |
|
- |
|
| 485 |
if (!isset($masques['masque.ns'])) {
|
411 |
$champs = array('dob.id_observation as id_observation', 'nom_sel', 'nom_sel_nn', 'nt', 'famille', 'ce_zone_geo', 'zone_geo',
|
| 486 |
$conditionsLibre[] = "nom_sel LIKE '$passe%'";
|
- |
|
| 487 |
}
|
- |
|
| 488 |
|
- |
|
| 489 |
if (!isset($masques['masque.famille'])) {
|
412 |
'lieudit', 'station', 'milieu', 'date_observation', 'dob.mots_cles_texte as mots_cles_texte', 'dob.commentaire as commentaire',
|
| 490 |
$conditionsLibre[] = "famille LIKE '$passe%'";
|
- |
|
| 491 |
}
|
- |
|
| 492 |
|
- |
|
| 493 |
if (!isset($masques['masque.milieu'])) {
|
413 |
'di.mots_cles_texte as mots_cles_texte_image ', 'date_transmission', 'di.id_image as id_image', 'di.ce_utilisateur as ce_utilisateur',
|
| 494 |
$conditionsLibre[] = "nom_sel LIKE '$passe%'";
|
- |
|
| 495 |
}
|
- |
|
| 496 |
|
- |
|
| 497 |
if (!isset($masques['masque.tag'])) {
|
414 |
'prenom', 'nom', 'courriel', 'dob.prenom_utilisateur', 'dob.nom_utilisateur', 'dob.courriel_utilisateur', 'nom_original');
|
| 498 |
$conditionsLibre[] = "mots_cles_texte LIKE '%$passe%'";
|
- |
|
| 499 |
}
|
- |
|
| 500 |
|
415 |
// Attention le LEFT JOIN est indispensable pour ramener les images n'ayant pas de votes
|
| 501 |
if (!isset($masques['masque.date'])) {
|
416 |
// en cas de tri par votes
|
| 502 |
$conditionsLibre[] = $this->creerFiltreDate($passe);
|
- |
|
| 503 |
}
|
- |
|
| 504 |
|
417 |
$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS '.implode(', ',$champs).' '.
|
| 505 |
if (!isset($masques['masque.auteur'])) {
|
418 |
($this->doitJoindreTableVotes() ?
|
| 506 |
$conditionsLibre[] = $this->creerFiltreAuteur($passe);
|
- |
|
| 507 |
}
|
- |
|
| 508 |
|
- |
|
| 509 |
$conditionsObs[] = implode(' OR ', $conditionsLibre);
|
- |
|
| 510 |
}
|
- |
|
| 511 |
|
419 |
', IF(dvote.ce_protocole = '.$this->parametres['protocole'].', AVG(dvote.valeur), 0) as total_votes ' :
|
| 512 |
// nom sel
|
- |
|
| 513 |
if (isset($masques['masque.ns'])) {
|
- |
|
| 514 |
$nom_sel = $masques['masque.ns'];
|
- |
|
| 515 |
$conditionsObs[] = "nom_sel LIKE '$nom_sel%'";
|
- |
|
| 516 |
}
|
- |
|
| 517 |
|
420 |
''
|
| 518 |
// famille
|
421 |
).
|
| 519 |
if (isset($masques['masque.famille'])) {
|
422 |
($this->doitJoindreTableTags() ?
|
| 520 |
$famille = $masques['masque.famille'];
|
423 |
// attention le DISTINCT est indispensable !
|
| 521 |
$conditionsObs[] = "famille LIKE '$famille%'";
|
- |
|
| 522 |
}
|
- |
|
| 523 |
|
- |
|
| 524 |
// genre
|
- |
|
| 525 |
if (isset($masques['masque.genre'])) {
|
- |
|
| 526 |
$genre = $masques['masque.genre'];
|
- |
|
| 527 |
$conditionsObs[] = "nom_sel LIKE '$genre%'";
|
- |
|
| 528 |
}
|
- |
|
| 529 |
|
424 |
', (COUNT(DISTINCT dtag.id_tag) + '.$this->assemblercomptageOccurencesMotsClesCel().') as total_tags ' :
|
| 530 |
// milieu
|
- |
|
| 531 |
if (isset($masques['masque.milieu'])) {
|
- |
|
| 532 |
$milieu = $masques['masque.milieu'];
|
- |
|
| 533 |
$conditionsObs[] = "nom_sel LIKE '$milieu%'";
|
- |
|
| 534 |
}
|
- |
|
| 535 |
|
- |
|
| 536 |
// mots_cles_texte
|
- |
|
| 537 |
/*if (isset($masques['masque.tag'])) {
|
- |
|
| 538 |
$motscles = $masques['masque.tag'];
|
- |
|
| 539 |
$conditionsObs[] = "mots_cles_texte LIKE '%$motscles%'";
|
- |
|
| 540 |
}*/
|
- |
|
| 541 |
|
425 |
''
|
| 542 |
// date
|
- |
|
| 543 |
if (isset($masques['masque.date'])) {
|
- |
|
| 544 |
$date = $masques['masque.date'];
|
426 |
).
|
| 545 |
$conditionsObs[] = $this->creerFiltreDate($date);
|
- |
|
| 546 |
}
|
- |
|
| 547 |
|
- |
|
| 548 |
// utilisateur
|
- |
|
| 549 |
if (isset($masques['masque.auteur'])) {
|
427 |
'FROM '.$this->gestionBdd->formaterTable('del_obs_image', 'doi').
|
| 550 |
$auteur = $masques['masque.auteur'];
|
- |
|
| 551 |
$conditionsObs[] = $this->creerFiltreAuteur($auteur);
|
- |
|
| 552 |
}
|
- |
|
| 553 |
|
- |
|
| 554 |
// commune
|
- |
|
| 555 |
if (isset($masques['masque.commune'])) {
|
- |
|
| 556 |
$commune = $masques['masque.commune'];
|
- |
|
| 557 |
$conditionsObs[] = " zone_geo LIKE ".$this->proteger(str_replace(array('-',' '), '_', $commune).'%');
|
- |
|
| 558 |
}
|
- |
|
| 559 |
|
- |
|
| 560 |
// commune
|
- |
|
| 561 |
if (isset($masques['masque.departement'])) {
|
428 |
'INNER JOIN del_image di '.
|
| 562 |
$dept = $masques['masque.departement'];
|
- |
|
| 563 |
$conditionsObs[] = $this->creerFiltreIdZoneGeo($dept);
|
- |
|
| 564 |
}
|
- |
|
| 565 |
|
- |
|
| 566 |
if (!empty($conditionsObs)) {
|
- |
|
| 567 |
$where = ' WHERE '.implode(' AND ', $conditionsObs);
|
- |
|
| 568 |
$requeteObs .= $where;
|
- |
|
| 569 |
}
|
- |
|
| 570 |
|
- |
|
| 571 |
$observations = $this->bdd->recupererTous($requeteObs);
|
- |
|
| 572 |
|
- |
|
| 573 |
$tabIdsObs = array();
|
429 |
'ON doi.id_image = di.id_image '.
|
| 574 |
foreach ($observations as $observation) {
|
430 |
'INNER JOIN del_observation dob '.
|
| 575 |
$tabIdsObs[] = $observation['id_observation'];
|
- |
|
| 576 |
}
|
- |
|
| 577 |
$idsObs = implode(',', $tabIdsObs);
|
- |
|
| 578 |
if ($idsObs == '') {
|
- |
|
| 579 |
$idsObs = "''";
|
- |
|
| 580 |
}
|
- |
|
| 581 |
//var_dump($requeteObs);
|
- |
|
| 582 |
// 2. Récupérer les id images
|
- |
|
| 583 |
|
- |
|
| 584 |
$conditionsImg = array();
|
- |
|
| 585 |
if (isset($masques['masque.tag'])) {
|
431 |
'ON doi.id_observation = dob.id_observation '.
|
| 586 |
$tag = $masques['masque.tag'];
|
432 |
'LEFT JOIN del_utilisateur du '.
|
| 587 |
$conditionsImg[] = " dit.tag_normalise LIKE '$tag%' ";
|
- |
|
| 588 |
$conditionsImg[] = " di.mots_cles_texte LIKE '%$tag%' ";
|
- |
|
| 589 |
}
|
- |
|
| 590 |
|
- |
|
| 591 |
$idsImages = '';
|
433 |
'ON du.id_utilisateur = di.ce_utilisateur '.
|
| 592 |
if (!empty($conditionsImg)) {
|
- |
|
| 593 |
$requeteImages = ' SELECT doi.id_image FROM del_obs_image doi '.
|
434 |
($this->doitJoindreTableTags() ?
|
| 594 |
' INNER JOIN del_image di ON doi.id_image = di.id_image '.
|
435 |
'LEFT JOIN del_image_tag dtag '.
|
| 595 |
' INNER JOIN del_image_tag dit ON dit.ce_image = di.id_image ';
|
- |
|
| 596 |
|
- |
|
| 597 |
$where = ' WHERE '.implode(' OR ', $conditionsImg);
|
- |
|
| 598 |
$requeteImages .= $where;
|
- |
|
| 599 |
|
- |
|
| 600 |
$images = $this->bdd->recupererTous($requeteImages);
|
- |
|
| 601 |
|
- |
|
| 602 |
$tabIdsImages = array();
|
- |
|
| 603 |
foreach ($images as $image) {
|
- |
|
| 604 |
$tabIdsImages[] = $image['id_image'];
|
- |
|
| 605 |
}
|
- |
|
| 606 |
$idsImages = implode(',', $tabIdsImages);
|
- |
|
| 607 |
|
- |
|
| 608 |
if ($idsImages == '') {
|
436 |
'ON doi.id_image = dtag.ce_image AND dtag.actif = 1 ' :
|
| 609 |
$idsImages = "''";
|
437 |
''
|
| 610 |
}
|
- |
|
| 611 |
}
|
438 |
).
|
| 612 |
//var_dump($requeteImages);exit();
|
- |
|
| 613 |
// 3. Récupérer la combinaison des deux
|
- |
|
| 614 |
$requeteLiaisons = 'SELECT DISTINCT SQL_CALC_FOUND_ROWS dob.id_observation as id_observation, nom_sel, nom_sel_nn, nt, famille, ce_zone_geo, zone_geo, lieudit, station, milieu, '.
|
- |
|
| 615 |
' date_observation, dob.mots_cles_texte as mots_cles_texte, dob.commentaire as commentaire, di.mots_cles_texte as mots_cles_texte_image , date_transmission, '.
|
- |
|
| 616 |
' di.id_image as id_image, di.ce_utilisateur as ce_utilisateur, prenom, nom, courriel, dob.prenom_utilisateur, dob.nom_utilisateur, dob.courriel_utilisateur, nom_original '.
|
439 |
($this->doitJoindreTableVotes() ?
|
| 617 |
' FROM del_obs_image doi '.
|
- |
|
| 618 |
' INNER JOIN del_image di ON doi.id_image = di.id_image '.
|
440 |
'LEFT JOIN del_image_vote dvote '.
|
| 619 |
' INNER JOIN del_observation dob ON doi.id_observation = dob.id_observation '.
|
- |
|
| 620 |
' LEFT JOIN del_utilisateur du ON du.id_utilisateur = di.ce_utilisateur ';
|
- |
|
| 621 |
|
- |
|
| 622 |
|
- |
|
| 623 |
$chaineWhere = '';
|
- |
|
| 624 |
if (isset($masques['masque.tag']) && sizeof($masques) == 1) {
|
- |
|
| 625 |
$connecteur = ' OR ';
|
441 |
'ON doi.id_image = dvote.ce_image AND dvote.ce_protocole = '.$this->parametres['protocole'] :
|
| 626 |
} else {
|
- |
|
| 627 |
$connecteur = ' AND ';
|
- |
|
| 628 |
}
|
- |
|
| 629 |
|
442 |
''
|
| 630 |
$where = array();
|
- |
|
| 631 |
if (!empty($conditionsObs) && strlen($idsObs) > 0) {
|
- |
|
| 632 |
$where[] = ' dob.id_observation IN ( '.$idsObs.') ';
|
- |
|
| 633 |
}
|
- |
|
| 634 |
|
- |
|
| 635 |
if (!empty($conditionsImg) && strlen($idsImages) > 0) {
|
- |
|
| 636 |
$where[] = 'di.id_image IN ( '.$idsImages.') ';
|
- |
|
| 637 |
}
|
- |
|
| 638 |
|
- |
|
| 639 |
|
- |
|
| 640 |
if (!empty($where)) {
|
443 |
);
|
| 641 |
$chaineWhere = ' WHERE '.implode($connecteur, $where);
|
444 |
$requeteLiaisons .= $this->chargerClauseWhere();
|
| 642 |
$requeteLiaisons .= $chaineWhere;
|
- |
|
| 643 |
}
|
445 |
$requeteLiaisons .= $this->getTri();
|
| 644 |
$requeteLiaisons .= $this->gestionBdd->getLimitSql();
|
- |
|
| 645 |
|
- |
|
| 646 |
// on ne lance la requete que si on a trouvé des images ou des observations, sinon
|
- |
|
| 647 |
// cela signifie qu'il n'y a aucune correspondance dans la base
|
- |
|
| 648 |
$retour = array();
|
- |
|
| 649 |
if (strlen($idsObs) > 0 || strlen($idsImages) > 0) {
|
446 |
$requeteLiaisons .= $this->gestionBdd->getLimitSql();
|
| 650 |
$retour = $this->bdd->recupererTous($requeteLiaisons);
|
- |
|
| 651 |
}
|
- |
|
| 652 |
|
- |
|
| 653 |
return $retour;
|
- |
|
| 654 |
}
|
- |
|
| 655 |
|
- |
|
| 656 |
|
- |
|
| 657 |
/**
|
- |
|
| 658 |
* Chargement depuis la bdd de toutes les liaisons entre images et observations
|
- |
|
| 659 |
* */
|
- |
|
| 660 |
private function chargerLiaisonsSimple() {
|
- |
|
| 661 |
|
- |
|
| 662 |
// Charger les obs images / images
|
- |
|
| 663 |
// récupérer les ids
|
- |
|
| 664 |
// récupérer les observations
|
- |
|
| 665 |
|
- |
|
| 666 |
$requeteImages = 'SELECT *, di.mots_cles_texte as mots_cles_texte_image FROM del_obs_image doi '.
|
- |
|
| 667 |
'INNER JOIN del_image di ON doi.id_image = di.id_image '.
|
- |
|
| 668 |
'ORDER BY id_observation DESC'.
|
- |
|
| 669 |
$this->gestionBdd->getLimitSql();
|
- |
|
| 670 |
$liaisons = $this->bdd->recupererTous($requeteImages);
|
- |
|
| 671 |
|
- |
|
| 672 |
|
- |
|
| 673 |
$nbImages = 'SELECT count(id_image) as nb FROM del_obs_image';
|
- |
|
| 674 |
$requeteNbImages = $this->bdd->recupererTous($nbImages);
|
- |
|
| 675 |
|
- |
|
| 676 |
$total = (int) $requeteNbImages[0]['nb'];
|
- |
|
| 677 |
$this->navigation->setTotal($total);
|
- |
|
| 678 |
|
- |
|
| 679 |
$idsObservations = array();
|
- |
|
| 680 |
foreach ($liaisons as $image) {
|
- |
|
| 681 |
$idObs = $image['id_observation'];
|
- |
|
| 682 |
$idsObservations[$idObs] = $idObs;
|
- |
|
| 683 |
}
|
- |
|
| 684 |
|
- |
|
| 685 |
$requeteObservations = 'SELECT * FROM del_observation dob '.
|
- |
|
| 686 |
'LEFT JOIN del_utilisateur du ON dob.ce_utilisateur = du.id_utilisateur '.
|
- |
|
| 687 |
'WHERE id_observation IN ('.implode(',', $idsObservations).')';
|
- |
|
| 688 |
$resultatsObservations = $this->bdd->recupererTous($requeteObservations);
|
- |
|
| 689 |
|
- |
|
| 690 |
$observations = array();
|
- |
|
| 691 |
foreach ($resultatsObservations as $id => $observation) {
|
- |
|
| 692 |
$idObs = $observation['id_observation'];
|
- |
|
| 693 |
$observations[$idObs] = $observation;
|
- |
|
| 694 |
}
|
- |
|
| 695 |
|
- |
|
| 696 |
foreach ($liaisons as $id => $liaison) {
|
- |
|
| 697 |
$idObs = $liaison['id_observation'];
|
- |
|
| 698 |
|
- |
|
| 699 |
$observation = $observations[$idObs];
|
- |
|
| 700 |
foreach ($observation as $cle => $valeur) {
|
- |
|
| 701 |
$liaisons[$id][$cle] = $valeur;
|
- |
|
| 702 |
}
|
- |
|
| 703 |
}
|
- |
|
| 704 |
|
- |
|
| 705 |
return $liaisons;
|
447 |
return $this->bdd->recupererTous($requeteLiaisons);
|
| Line 706... |
Line -... |
| 706 |
}
|
- |
|
| 707 |
|
448 |
}
|
| 708 |
|
449 |
|
| 709 |
private function assemblercomptageOccurencesMotsClesCel() {
|
450 |
private function assemblercomptageOccurencesMotsClesCel() {
|
| 710 |
$chaineMotsClesAffiches = $this->conteneur->getParametre('mots_cles_cel_affiches');
|
451 |
$chaineMotsClesAffiches = $this->conteneur->getParametre('mots_cles_cel_affiches');
|
| Line 763... |
Line 504... |
| 763 |
|
504 |
|
| 764 |
if($liaison['ce_utilisateur'] == 0) {
|
505 |
if($liaison['ce_utilisateur'] == 0) {
|
| 765 |
$liaison['prenom'] = $liaison['prenom_utilisateur'];
|
506 |
$liaison['prenom'] = $liaison['prenom_utilisateur'];
|
| 766 |
$liaison['nom'] = $liaison['nom_utilisateur'];
|
507 |
$liaison['nom'] = $liaison['nom_utilisateur'];
|
| - |
|
508 |
}
|
| 767 |
}
|
509 |
|
| 768 |
// On enregistre l'ID de l'image pour n'effectuer qu'une seule requête par la suite
|
510 |
// On enregistre l'ID de l'image pour n'effectuer qu'une seule requête par la suite
|
| 769 |
$this->imageIds[] = $idImage;
|
511 |
$this->imageIds[] = $idImage;
|
| 770 |
$index = $liaison['id_image'].'-'.$liaison['id_observation'];
|
512 |
$index = $liaison['id_image'].'-'.$liaison['id_observation'];
|
| 771 |
$images[$index] = array('id_image' => $idImage, 'binaire.href' => $this->formaterLienImage($idImage),
|
513 |
$images[$index] = array('id_image' => $idImage, 'binaire.href' => $this->formaterLienImage($idImage),
|
| Line 821... |
Line 563... |
| 821 |
* @param $liaison liaison issue de la recherche
|
563 |
* @param $liaison liaison issue de la recherche
|
| 822 |
* @return $observation l'observation mise en forme
|
564 |
* @return $observation l'observation mise en forme
|
| 823 |
* */
|
565 |
* */
|
| 824 |
private function formaterObservation($liaison) {
|
566 |
private function formaterObservation($liaison) {
|
| 825 |
$observation = array();
|
567 |
$observation = array();
|
| - |
|
568 |
|
| 826 |
foreach ($this->mappingObservation as $nomOriginal => $nomFinal) {
|
569 |
foreach ($this->mappingObservation as $nomOriginal => $nomFinal) {
|
| 827 |
$observation[$nomFinal] = $liaison[$nomOriginal];
|
570 |
$observation[$nomFinal] = $liaison[$nomOriginal];
|
| 828 |
}
|
571 |
}
|
| Line 829... |
Line 572... |
| 829 |
|
572 |
|