Line 115... |
Line 115... |
115 |
* Après avoir récupérer seulement les ids dans une première requête, nous récupérons maintenant les infos.
|
115 |
* Après avoir récupérer seulement les ids dans une première requête, nous récupérons maintenant les infos.
|
116 |
* Le web service est ainsi 3 fois plus rapide.
|
116 |
* Le web service est ainsi 3 fois plus rapide.
|
117 |
*/
|
117 |
*/
|
118 |
private function getInfosObs() {
|
118 |
private function getInfosObs() {
|
119 |
$idsObsConcat = implode(',', $this->idsObsOrdonnees);
|
119 |
$idsObsConcat = implode(',', $this->idsObsOrdonnees);
|
- |
|
120 |
// TODO : bizarement MYSQL 5.6 retourne plusieurs fois les mêmes enregistrements d'où le DISTINCT (normalement inutile)
|
120 |
$requete = "SELECT id_observation, nom_sel AS `determination.ns`, nt AS `determination.nt`, ".
|
121 |
$requete = "SELECT DISTINCT id_observation, nom_sel AS `determination.ns`, nt AS `determination.nt`, ".
|
121 |
'nom_sel_nn AS `determination.nn`, famille AS `determination.famille`, '.
|
122 |
'nom_sel_nn AS `determination.nn`, famille AS `determination.famille`, '.
|
122 |
'nom_referentiel AS `determination.referentiel`, ce_zone_geo AS id_zone_geo, '.
|
123 |
'nom_referentiel AS `determination.referentiel`, ce_zone_geo AS id_zone_geo, '.
|
123 |
'zone_geo, lieudit, station, milieu, date_observation, do.mots_cles_texte, '.
|
124 |
'zone_geo, lieudit, station, milieu, date_observation, do.mots_cles_texte, '.
|
124 |
'do.date_transmission, do.commentaire, '.
|
125 |
'do.date_transmission, do.commentaire, '.
|
125 |
'do.ce_utilisateur AS `auteur.id`, do.prenom_utilisateur AS `auteur.prenom`, '.
|
126 |
'do.ce_utilisateur AS `auteur.id`, do.prenom_utilisateur AS `auteur.prenom`, '.
|
Line 127... |
Line 128... |
127 |
'id_image, date_prise_de_vue AS `date`, hauteur, largeur, nom_original '.
|
128 |
'id_image, date_prise_de_vue AS `date`, hauteur, largeur, nom_original '.
|
128 |
'FROM del_observation AS do '.
|
129 |
'FROM del_observation AS do '.
|
129 |
' LEFT JOIN del_image AS di ON (do.id_observation = di.ce_observation) '.
|
130 |
' LEFT JOIN del_image AS di ON (do.id_observation = di.ce_observation) '.
|
130 |
"WHERE id_observation IN ($idsObsConcat) ".
|
131 |
"WHERE id_observation IN ($idsObsConcat) ".
|
131 |
' -- '.__FILE__.':'.__LINE__;
|
132 |
' -- '.__FILE__.':'.__LINE__;
|
- |
|
133 |
//Debug::printr($requete);
|
132 |
return $this->bdd->recupererTous($requete);
|
134 |
return $this->bdd->recupererTous($requete);
|
133 |
}
|
135 |
}
|
Line 134... |
Line 136... |
134 |
|
136 |
|
135 |
/**
|
137 |
/**
|
Line 138... |
Line 140... |
138 |
* des images.
|
140 |
* des images.
|
139 |
*/
|
141 |
*/
|
140 |
private function formaterObservations() {
|
142 |
private function formaterObservations() {
|
141 |
$observations = array_map('array_filter', $this->infosObs);
|
143 |
$observations = array_map('array_filter', $this->infosObs);
|
142 |
$obsFormatees = array_flip($this->idsObsOrdonnees);// Permet de garder l'ordre de sortie !
|
144 |
$obsFormatees = array_flip($this->idsObsOrdonnees);// Permet de garder l'ordre de sortie !
|
143 |
foreach ($observations as $obs) {
|
145 |
foreach ($observations as &$obs) {
|
144 |
$this->nettoyerAuteur($obs);
|
146 |
$this->nettoyerAuteur($obs);
|
Line 145... |
Line 147... |
145 |
|
147 |
|
- |
|
148 |
$id = $obs['id_observation'];
|
- |
|
149 |
// ATTENTION : la requête retourne de nombreuses lignes avec les mêmes données (test de l'existence nécessaire)
|
146 |
$id = $obs['id_observation'];
|
150 |
if (is_array($obsFormatees[$id]) === false) {
|
147 |
$obsFormatees[$id] = $obs;
|
151 |
$obsFormatees[$id] = $obs;
|
148 |
|
152 |
}
|
149 |
$image = $this->extraireInfosImage($obs);
|
- |
|
150 |
$obsFormatees[$id]['images'][] = $image;
|
153 |
$obsFormatees[$id]['images'][] = $this->extraireInfosImage($obs);
|
151 |
}
|
154 |
}
|
152 |
return $obsFormatees;
|
155 |
return $obsFormatees;
|
Line 153... |
Line 156... |
153 |
}
|
156 |
}
|