Subversion Repositories eFlore/Applications.del

Rev

Rev 1881 | Rev 1933 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1881 Rev 1922
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
	}