| Line 14... |
Line 14... |
| 14 |
* @version $Id: Bdd.php 403 2012-02-22 14:35:20Z gduche $
|
14 |
* @version $Id: Bdd.php 403 2012-02-22 14:35:20Z gduche $
|
| 15 |
* @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Observations
|
15 |
* @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Observations
|
| 16 |
*/
|
16 |
*/
|
| Line 17... |
Line 17... |
| 17 |
|
17 |
|
| 18 |
class ListeObservations {
|
- |
|
| 19 |
|
18 |
class ListeObservations {
|
| 20 |
|
19 |
|
| 21 |
private $conteneur;
|
20 |
private $conteneur;
|
| 22 |
private $navigation;
|
21 |
private $navigation;
|
| 23 |
private $masque;
|
22 |
private $masque;
|
| 24 |
private $gestionBdd;
|
23 |
private $gestionBdd;
|
| Line 38... |
Line 37... |
| 38 |
$this->masque = $conteneur->getMasque();
|
37 |
$this->masque = $conteneur->getMasque();
|
| 39 |
$this->gestionBdd = $conteneur->getGestionBdd();
|
38 |
$this->gestionBdd = $conteneur->getGestionBdd();
|
| 40 |
$this->bdd = $this->gestionBdd->getBdd();
|
39 |
$this->bdd = $this->gestionBdd->getBdd();
|
| 41 |
}
|
40 |
}
|
| Line -... |
Line 41... |
| - |
|
41 |
|
| - |
|
42 |
|
| - |
|
43 |
/**
|
| - |
|
44 |
* RequeteSansParametres
|
| - |
|
45 |
*
|
| - |
|
46 |
* permet de vérifier qu'il n'y a aucun paramètre dans la requete, excepté les informations de start et limite,
|
| - |
|
47 |
* pour ajuster la requête pour un gain de temps
|
| - |
|
48 |
* @param array $ressources les ressources telles qu'elles sont passées au script
|
| - |
|
49 |
* @param array $parametres les paramètres tels qu'il sont passés au script
|
| - |
|
50 |
* */
|
| - |
|
51 |
public function requeteSansParametres($ressources, $parametres) {
|
| - |
|
52 |
$estSansParametres = true;
|
| - |
|
53 |
|
| - |
|
54 |
if (sizeof($ressources) > 0) {
|
| - |
|
55 |
$estSansParametres = false;
|
| - |
|
56 |
}
|
| - |
|
57 |
|
| - |
|
58 |
if (sizeof($parametres) > 2) {
|
| - |
|
59 |
// 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
|
| - |
|
60 |
$estSansParametres = false;
|
| - |
|
61 |
} else {
|
| - |
|
62 |
if (sizeof($parametres) == 1) {
|
| - |
|
63 |
if (!(isset($parametres['navigation.depart']) || isset($parametres['navigation.limite']))) {
|
| - |
|
64 |
// s'il y a des paramètres, seul les paramètres de navigation n'interfère pas sur la requête
|
| - |
|
65 |
$estSansParametres = false;
|
| - |
|
66 |
}
|
| - |
|
67 |
} elseif (sizeof($parametres) == 2) {
|
| - |
|
68 |
// s'il y a des paramètres, seul les paramètres de navigation n'interfère pas sur la requête
|
| - |
|
69 |
if (!(isset($parametres['navigation.depart']) && isset($parametres['navigation.limite']))) {
|
| - |
|
70 |
$estSansParametres = false;
|
| - |
|
71 |
}
|
| - |
|
72 |
}
|
| - |
|
73 |
}
|
| - |
|
74 |
|
| - |
|
75 |
return $estSansParametres;
|
| - |
|
76 |
}
|
| 42 |
|
77 |
|
| 43 |
/**
|
78 |
/**
|
| 44 |
* Méthode principale de la classe.
|
79 |
* Méthode principale de la classe.
|
| 45 |
* Lance la récupération des images dans la base et les place dans un objet ResultatService
|
80 |
* Lance la récupération des images dans la base et les place dans un objet ResultatService
|
| 46 |
* pour l'afficher.
|
81 |
* pour l'afficher.
|
| 47 |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
|
82 |
* @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
|
| 48 |
* @param array $parametres les paramètres situés après le ? dans l'url
|
83 |
* @param array $parametres les paramètres situés après le ? dans l'url
|
| 49 |
* */
|
84 |
* */
|
| 50 |
public function consulter($ressources, $parametres) {
|
- |
|
| Line 51... |
Line 85... |
| 51 |
$this->initialiserRessourcesEtParametres($ressources, $parametres);
|
85 |
public function consulter($ressources, $parametres) {
|
| 52 |
|
86 |
|
| 53 |
// Gestion des configuration du script
|
87 |
$this->initialiserRessourcesEtParametres($ressources, $parametres);
|
| 54 |
$this->configurer();
|
- |
|
| 55 |
$this->verifierConfiguration();
|
88 |
$this->configurer();
|
| 56 |
|
89 |
$this->verifierConfiguration();
|
| 57 |
$this->verifierParametresTri();
|
90 |
$this->verifierParametresTri();
|
| - |
|
91 |
$this->initialiserTri();
|
| - |
|
92 |
|
| - |
|
93 |
if ($this->requeteSansParametres($ressources, $parametres)) {
|
| - |
|
94 |
|
| - |
|
95 |
$liaisons = $this->chargerLiaisonsSimple();
|
| - |
|
96 |
$observations = $this->chargerObservations($liaisons);
|
| - |
|
97 |
$total = $this->compterObservations();
|
| - |
|
98 |
$this->navigation->setTotal($total);
|
| - |
|
99 |
$observations = $this->chargerImages($observations);
|
| - |
|
100 |
$observations = $this->chargerDeterminations($observations);
|
| - |
|
101 |
|
| - |
|
102 |
//Compute
|
| - |
|
103 |
$resultats = array();
|
| - |
|
104 |
foreach ($observations as $id => $observation) {
|
| - |
|
105 |
$idObs = $observation['id_observation'];
|
| - |
|
106 |
$resultats['"'.$idObs.'"'] = $observation;
|
| - |
|
107 |
}
|
| - |
|
108 |
|
| - |
|
109 |
// Mettre en forme le résultat et l'envoyer pour affichage
|
| - |
|
110 |
$resultat = new ResultatService();
|
| - |
|
111 |
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $resultats);
|
| - |
|
112 |
|
| - |
|
113 |
return $resultat;
|
| 58 |
$this->initialiserTri();
|
114 |
} else {
|
| 59 |
|
115 |
|
| 60 |
// Lancement du service
|
116 |
// Lancement du service
|
| 61 |
$liaisons = $this->chargerLiaisons();
|
117 |
$liaisons = $this->chargerLiaisons();
|
| 62 |
|
118 |
|
| 63 |
$total = $this->compterObservations();
|
119 |
$total = $this->compterObservations();
|
| 64 |
$this->navigation->setTotal($total);
|
120 |
$this->navigation->setTotal($total);
|
| 65 |
$observations = $this->chargerObservations($liaisons);
|
121 |
$observations = $this->chargerObservations($liaisons);
|
| 66 |
$observations = $this->chargerImages($observations);
|
122 |
$observations = $this->chargerImages($observations);
|
| 67 |
$observations = $this->chargerDeterminations($observations);
|
123 |
$observations = $this->chargerDeterminations($observations);
|
| 68 |
|
124 |
|
| 69 |
// Mettre en forme le résultat et l'envoyer pour affichage
|
125 |
// Mettre en forme le résultat et l'envoyer pour affichage
|
| 70 |
$resultat = new ResultatService();
|
126 |
$resultat = new ResultatService();
|
| - |
|
127 |
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $observations);
|
| 71 |
$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $observations);
|
128 |
return $resultat;
|
| Line 72... |
Line 129... |
| 72 |
return $resultat;
|
129 |
}
|
| 73 |
}
|
130 |
}
|
| 74 |
|
131 |
|
| Line 450... |
Line 507... |
| 450 |
$requeteLiaisons .= $this->gestionBdd->getLimitSql();
|
507 |
$requeteLiaisons .= $this->gestionBdd->getLimitSql();
|
| Line 451... |
Line 508... |
| 451 |
|
508 |
|
| 452 |
return $this->bdd->recupererTous($requeteLiaisons);
|
509 |
return $this->bdd->recupererTous($requeteLiaisons);
|
| Line -... |
Line 510... |
| - |
|
510 |
}
|
| - |
|
511 |
|
| - |
|
512 |
|
| - |
|
513 |
private function chargerLiaisonsSimple() {
|
| - |
|
514 |
$requeteObs = 'SELECT SQL_CALC_FOUND_ROWS dob.id_observation, nom_sel, famille, ce_zone_geo, zone_geo, lieudit, '.
|
| - |
|
515 |
'station, milieu, date_observation, dob.mots_cles_texte, date_transmission, '.
|
| - |
|
516 |
'dob.ce_utilisateur, prenom, nom, courriel, '.
|
| - |
|
517 |
'dob.prenom_utilisateur, dob.nom_utilisateur, dob.courriel_utilisateur, '.
|
| - |
|
518 |
'dob.commentaire as dob_commentaire, '.
|
| - |
|
519 |
'dob.nt, dob.nom_sel_nn '.
|
| - |
|
520 |
'FROM del_observation dob '.
|
| - |
|
521 |
' LEFT JOIN del_utilisateur du ON dob.ce_utilisateur = du.id_utilisateur '.
|
| - |
|
522 |
' ORDER BY id_observation DESC ';
|
| - |
|
523 |
$requeteObs .= $this->gestionBdd->getLimitSql();
|
| - |
|
524 |
$liaisons = $this->bdd->recupererTous($requeteObs);
|
| - |
|
525 |
|
| - |
|
526 |
return $liaisons;
|
| 453 |
}
|
527 |
}
|
| 454 |
|
528 |
|
| 455 |
/**
|
529 |
/**
|
| 456 |
* Compter le nombre total d'images dans la base pour affichage dans entete.
|
530 |
* Compter le nombre total d'images dans la base pour affichage dans entete.
|
| 457 |
* */
|
531 |
* */
|
| Line 474... |
Line 548... |
| 474 |
if($liaison['ce_utilisateur'] == 0) {
|
548 |
if($liaison['ce_utilisateur'] == 0) {
|
| 475 |
$liaison['prenom'] = $liaison['prenom_utilisateur'];
|
549 |
$liaison['prenom'] = $liaison['prenom_utilisateur'];
|
| 476 |
$liaison['nom'] = $liaison['nom_utilisateur'];
|
550 |
$liaison['nom'] = $liaison['nom_utilisateur'];
|
| 477 |
}
|
551 |
}
|
| Line 478... |
Line 552... |
| 478 |
|
552 |
|
| - |
|
553 |
$observation = $this->formaterObservation($liaison);
|
| 479 |
$observation = $this->formaterObservation($liaison);
|
554 |
|
| 480 |
// attention, il est important que les index du tableau soient des chaines
|
555 |
// attention, il est important que les index du tableau soient des chaines
|
| 481 |
// de caractères pour que l'ordre d'insertion soit respecté lors de la lecture
|
556 |
// de caractères pour que l'ordre d'insertion soit respecté lors de la lecture
|
| 482 |
// du json par les navigateur (voir bug du moteur javascript v8 #164)
|
557 |
// du json par les navigateur (voir bug du moteur javascript v8 #164)
|
| 483 |
$observations['"'.$idObs.'"'] = $observation;
|
558 |
$observations['"'.$idObs.'"'] = $observation;
|
| Line 590... |
Line 665... |
| 590 |
* @param $liaison liaison issue de la recherche
|
665 |
* @param $liaison liaison issue de la recherche
|
| 591 |
* @return $observation l'observation mise en forme
|
666 |
* @return $observation l'observation mise en forme
|
| 592 |
* */
|
667 |
* */
|
| 593 |
private function formaterObservation($liaison) {
|
668 |
private function formaterObservation($liaison) {
|
| 594 |
$observation = array();
|
669 |
$observation = array();
|
| 595 |
|
- |
|
| 596 |
foreach ($this->mappingObservation as $nomOriginal => $nomFinal) {
|
670 |
foreach ($this->mappingObservation as $nomOriginal => $nomFinal) {
|
| 597 |
$observation[$nomFinal] = $liaison[$nomOriginal];
|
671 |
$observation[$nomFinal] = $liaison[$nomOriginal];
|
| 598 |
}
|
672 |
}
|
| 599 |
|
- |
|
| 600 |
$observation['images'] = array();
|
673 |
$observation['images'] = array();
|
| Line 601... |
Line 674... |
| 601 |
|
674 |
|
| 602 |
return $observation;
|
675 |
return $observation;
|