Subversion Repositories eFlore/Applications.del

Rev

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

Rev 700 Rev 702
Line 1... Line 1...
1
<?php
1
<?php
2
// VOIR IMAGE RECREATION L 294
-
 
3
 
-
 
4
/*vim: set expandtab tabstop=4 shiftwidth=4: */
2
/*vim: set expandtab tabstop=4 shiftwidth=4: */
5
// +------------------------------------------------------------------------------------------------------+
3
// +------------------------------------------------------------------------------------------------------+
6
// | PHP version 5.1.1                                                                                    |
4
// | PHP version 5.1.1                                                                                    |
7
// +------------------------------------------------------------------------------------------------------+
5
// +------------------------------------------------------------------------------------------------------+
8
// | Copyright (C) 2006 Tela Botanica (accueil@tela-botanica.org)                                         |
6
// | Copyright (C) 2006 Tela Botanica (accueil@tela-botanica.org)                                         |
Line 23... Line 21...
23
// | along with Foobar; if not, write to the Free Software                                                |
21
// | along with Foobar; if not, write to the Free Software                                                |
24
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
22
// | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA                            |
25
// +------------------------------------------------------------------------------------------------------+
23
// +------------------------------------------------------------------------------------------------------+
26
// CVS : $Id: effi_cel.action.php,v 1.9 2007-11-06 10:54:03 jp_milcent Exp $
24
// CVS : $Id: effi_cel.action.php,v 1.9 2007-11-06 10:54:03 jp_milcent Exp $
27
/**
25
/**
28
 * Gestion des des images dans la base de donnée de Détermination en Ligne (DEL)
26
 * Le web service image récupère toutes les données de la table del_obs_images
-
 
27
 * pour retourner une liste d'images associée à une observation
29
*
28
 * 
30
*
-
 
31
*@package del
29
 * @package del
32
*@subpackage images
30
 * @subpackage images
33
//Auteur original :
-
 
34
*@author	Grégoire Duché <gregoire@tela-botanica.org>
31
 * @author	Grégoire Duché <gregoire@tela-botanica.org>
35
*@copyright     Tela-Botanica 2000-2012
32
 * @copyright     Tela-Botanica 2000-2012
36
*@version       $Revision: 1.9 $ $Date: 2007-11-06 10:54:03 $
33
 * @version       $Revision: 1.9 $ $Date: 2007-11-06 10:54:03 $
37
// +------------------------------------------------------------------------------------------------------+
34
// +------------------------------------------------------------------------------------------------------+
38
 */
35
 */
39
class Images extends Commun {
36
class Images extends Commun {
Line 40... Line -...
40
	
-
 
41
	
-
 
42
	//Paramètres
-
 
43
	private $depart = 0;
-
 
44
	private $limite = 1;
-
 
45
	private $format = 'json';
-
 
46
	private $total;
-
 
47
	private $idImage;
37
	
-
 
38
	private $config;
-
 
39
	private $schemaBdd;
-
 
40
	private $depart = 0;
-
 
41
	private $limite = 10;
-
 
42
	private $total; // Le nombre total d'images
-
 
43
	private $masque = array(); //Enregistrer les paramètres du masque
-
 
44
	private $auteurIds = array(); // La liste des identifiants des auteurs pour retrouver leur nom dans la base
-
 
45
	private $imageIds = array();
Line 48... Line 46...
48
	private $config;
46
	
49
	
47
	
50
	/**
48
	/**
51
	 * Méthode principale de la classe
49
	 * Méthode principale de la classe
-
 
50
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
-
 
51
	 * pour l'afficher.
52
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
52
	 * @param $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
53
	 * pour l'afficher.
53
	 * @param $parametres les paramètres situés après le ? dans l'url
-
 
54
	 * */
-
 
55
	public function consulter($ressources, $parametres) {
-
 
56
		// Gestion des configuration du script
54
	 * */
57
		// TODO : gérer les erreurs de config
-
 
58
		// TODO : voir la classe Conteneur
-
 
59
		$this->config = Config::get('images');
55
	public function consulter($ressources, $parametres) {
60
		$this->schemaBdd = $this->config['schemaBdd'];
-
 
61
		$this->UrlNavigation = new Url($this->config['url_service']);
Line -... Line 62...
-
 
62
		$this->chargerParametres($parametres);
56
		$this->config = Config::get('images');
63
		$this->compterImages();
-
 
64
		
-
 
65
		// Lancement du service
-
 
66
		$liaisons = $this->chargerLiaisons();
Line -... Line 67...
-
 
67
		$images = $this->chargerImage($liaisons);
57
		$this->chargerParametres($parametres);
68
		$this->chargerAuteurs($images);
58
		
-
 
59
		$this->UrlNavigation = new Url($this->config['url_service']);
-
 
60
		
-
 
61
		$resultat = new ResultatService();
-
 
62
		
-
 
63
		$this->compterImages();
-
 
64
		$entete = $this->getEntete();
-
 
65
		
-
 
66
		$resultats = $this->chargerImages($this->idImage);
69
		$this->chargerVotes($images);
67
		$this->formaterImages($resultats);
70
		
68
		$this->chargerObservations($resultats);
71
		// Mettre en forme le résultat et l'envoyer pour affichage
Line -... Line 72...
-
 
72
		$resultat = new ResultatService();
-
 
73
		$resultat->corps = array('entete' => $this->getEntete(), 'resultats' => $images);
-
 
74
		return $resultat;
69
		$this->chargerVotes($resultats);
75
	}
70
		$resultat->corps = array('entete' => $entete, 'resultats' => $resultats);
76
	
-
 
77
	/*-------------------------------------------------------------------------------
71
		return $resultat;
78
	 							CONFIGURATION DU SERVICE
72
	}
79
	 --------------------------------------------------------------------------------*/
73
	
80
	/**
Line 74... Line 81...
74
	/**
81
	 * Gestion des paramètres de l'application pour stockage dans variable de classe
Line 83... Line 90...
83
		
90
		
84
		if (isset($this->parametres['navigation.limite'])) {
91
		if (isset($this->parametres['navigation.limite'])) {
85
			$this->limite = $this->parametres['navigation.limite'];
92
			$this->limite = $this->parametres['navigation.limite'];
Line -... Line 93...
-
 
93
		}
-
 
94
		
-
 
95
		foreach ($parametres as $id => $parametre) {
-
 
96
			if (strpos($id, 'masque.') === 0) {
-
 
97
				$champ = substr($id, 7, strlen($id));	
-
 
98
				$this->masque[$champ] = $parametre;
-
 
99
			}
-
 
100
		}
-
 
101
	}
-
 
102
	
-
 
103
	/**
-
 
104
	* Créer la chaine de limite de requête en fonction des paramètres donnés
-
 
105
	* */
-
 
106
	private function getLimite() {
-
 
107
		return ' LIMIT '.$this->depart.', '.$this->limite;
-
 
108
	}
-
 
109
	
-
 
110
	/**
-
 
111
	* Charger la clause WHERE en fonction des paramètres de masque
-
 
112
	* */
-
 
113
	private function chargerClauseWhere() {
-
 
114
		$where = array();
-
 
115
		if (isset($this->masque['famille'])) {
-
 
116
			$where[] = " famille = '".$this->masque['famille']."' ";
-
 
117
		}
-
 
118
		
-
 
119
		if (isset($this->masque['genre'])) {
-
 
120
			$where[] = " genre = '".$this->masque['genre']."' ";
-
 
121
		}
-
 
122
		
-
 
123
		if (isset($this->masque['espece'])) {
-
 
124
			$where[] = " nom_sel = '".$this->masque['espece']."' ";
-
 
125
		}
-
 
126
		
-
 
127
		if (isset($this->masque['ns'])) {
-
 
128
			$where[] = " nom_sel_nn = '".$this->masque['ns']."' ";
-
 
129
		}
-
 
130
		
-
 
131
		// TODO : voir la définition du webservice et la gestion nn et ns
-
 
132
		/*if (isset($this->masque['nn'])) {
-
 
133
			$where[] = " nn = '".$this->masque['nn']."' ";
-
 
134
		}*/
-
 
135
		
86
		}
136
		
-
 
137
		// TODO : voir la liaision avec auteur : sur id ?
-
 
138
		if (isset($this->masque['auteur'])) {
-
 
139
			$where[] = " ce_utilisateur = '".$this->masque['auteur']."' ";
-
 
140
		}
87
		
141
		
-
 
142
		// TODO : date de quoi ? 
-
 
143
		/*if (isset($this->masque['date'])) {
-
 
144
			$where[] = " date = '".$this->masque['date']."' ";
-
 
145
		}*/
-
 
146
		
-
 
147
		//TODO : ???
-
 
148
		/*if (isset($this->masque['commune'])) {
-
 
149
			$where[] = " commune = '".$this->masque['commune']."' ";
-
 
150
		}*/
-
 
151
		
-
 
152
		//TODO : ???
-
 
153
		/*if (isset($this->masque['departement'])) {
-
 
154
			$where[] = " departement = '".$this->masque['departement']."' ";
88
		if (isset($this->parametres['masque.id'])) {
155
		}*/
-
 
156
		
89
			$idImage = $this->parametres['masque.id'];
157
		if (isset($this->masque['tag'])) {
Line -... Line 158...
-
 
158
			$where[] = " mots_cles_texte = '".$this->masque['tag']."' ";
90
			$this->idImage = $idImage;
159
		}
Line 91... Line 160...
91
		}
160
		
92
		
161
		return 'WHERE '.implode('AND', $where);
93
	}
162
	}
94
	
163
	
95
	/**
-
 
96
	 * Compter le nombre total d'images dans la base pour affichage dans entete.
164
	/**
97
	 * */
165
	 * Compter le nombre total d'images dans la base pour affichage dans entete.
98
	private function compterImages() {
166
	 * */
99
		//TODO : gérer le nom de la base par fichier de config
167
	private function compterImages() {
100
		//TODO : gérer les erreurs de connexion à la bdd
168
		$requeteNbImages = 'SELECT COUNT(*) AS nb '.
Line -... Line 169...
-
 
169
						   'FROM '.$this->schemaBdd.'.del_image ';
-
 
170
		$resultatNbImages = $this->getBdd()->recuperer($requeteNbImages);
-
 
171
		$this->total = $resultatNbImages['nb'];
-
 
172
	}
-
 
173
	
-
 
174
	/*-------------------------------------------------------------------------------
-
 
175
								CHARGEMENT DES IMAGES 
-
 
176
	--------------------------------------------------------------------------------*/
-
 
177
	/**
-
 
178
	* Chargement depuis la bdd de toutes les liaisons entre images et observations
-
 
179
	* */
-
 
180
	private function chargerLiaisons() {
-
 
181
	
-
 
182
		$requeteLiaisons = 'SELECT * '.
-
 
183
						   'FROM '.$this->schemaBdd.'.del_obs_images doi '.
-
 
184
						   'INNER JOIN del_image di '.
-
 
185
						   'ON doi.ce_image = di.id_image '.
-
 
186
						   'INNER JOIN del_observation dob '.
-
 
187
						   'ON doi.ce_observation = dob.id_observation ';
-
 
188
		$requeteLiaisons .= $this->chargerClauseWhere();
-
 
189
		$requeteLiaisons .= $this->getLimite();
-
 
190
		
-
 
191
		return $this->getBdd()->recupererTous($requeteLiaisons);
-
 
192
	}
-
 
193
	
-
 
194
	/**
-
 
195
	* Retourner un tableau d'images formaté en fonction des liaisons trouvées
-
 
196
	* @param $liaisons les liaisons de la table del_obs_images
-
 
197
	* */
-
 
198
	private function chargerImage($liaisons) {
-
 
199
	
-
 
200
		$images = array();
-
 
201
		foreach ($liaisons as $liaison) {
-
 
202
			$idImage = $liaison['ce_image'];
-
 
203
			
-
 
204
			// On enregistre l'ID de l'auteur pour n'effectuer qu'une seule requête par la suite
-
 
205
			$this->auteursIds[$liaison['ce_utilisateur']] = true;
-
 
206
			
-
 
207
			// On enregistre l'ID de l'image pour n'effectuer qu'une seule requête par la suite
-
 
208
			$this->imageIds[] = $idImage;
-
 
209
			
-
 
210
			$images[] = array('id_image' => $idImage, 'date' => $liaison['date_prise_de_vue'], 'binaire.href' => $this->formaterLienImage($idImage),
-
 
211
						'hauteur' => $liaison['hauteur'], 'largeur' => $liaison['largeur'], 'votes' => array(), 'observation' => $this->formaterObservation($liaison));
-
 
212
		}
-
 
213
		return $images;
-
 
214
	}
-
 
215
	
-
 
216
	/**
-
 
217
	* Récupère les auteurs utilisés dans la sous-liste, effectue une requête, et met à jour
-
 
218
	* les résultats
-
 
219
	* @param $images le tableau d'images récupéré et mis en forme 
-
 
220
	* */
-
 
221
	private function chargerAuteurs(&$images) {
-
 
222
		if (sizeof($this->auteursIds) > 0) {
-
 
223
			$auteursIds = array_keys($this->auteursIds);
-
 
224
			
-
 
225
			$chaineAuteursIds = implode(',', $auteursIds);
-
 
226
			$requeteAuteurs = 'SELECT * FROM '.$this->schemaBdd.'.del_utilisateur '.
-
 
227
								 'WHERE id_utilisateur IN ('.$chaineAuteursIds.')';
-
 
228
			$resultatAuteurs = $this->getBdd()->recupererTous($requeteAuteurs);
-
 
229
			
-
 
230
			$auteurs = array();
-
 
231
			foreach ($resultatAuteurs as $auteur) {
-
 
232
				
-
 
233
				$id = $auteur['id_utilisateur'];
-
 
234
				$auteurs[$id]['nom'] = $auteur['nom'];
-
 
235
				$auteurs[$id]['prenom'] = $auteur['prenom'];
-
 
236
			}
-
 
237
	
-
 
238
			foreach ($images as &$image) {
-
 
239
				$idAuteur = $image['observation']['auteur.id'];
-
 
240
				$image['observation']['auteur.nom'] = $auteurs["$idAuteur"]['nom'];
-
 
241
				$image['observation']['auteur.prenom'] = $auteurs["$idAuteur"]['prenom'];
-
 
242
			}
-
 
243
		}
-
 
244
	}
-
 
245
	
-
 
246
	/**
-
 
247
	* Charger les votes pour chaque image
-
 
248
	* */
-
 
249
	private function chargerVotes(&$images) {
-
 
250
		if (sizeof($this->imageIds) > 0) {
-
 
251
			$chaineImageIds = implode(',', $this->imageIds);
-
 
252
			
-
 
253
			$requeteVotes = 'SELECT * FROM '.
-
 
254
			                $this->schemaBdd.'.del_vote_image '.
-
 
255
			                'WHERE ce_image IN ('.$chaineImageIds.')';
-
 
256
			$resultatsVotes = $this->getBdd()->recupererTous($requeteVotes);
-
 
257
			
-
 
258
			$votes = array();
-
 
259
			foreach ($resultatsVotes as $vote) {
-
 
260
				$idImage = $vote['ce_image'];
-
 
261
				$id = $vote['id_vote_image'];
-
 
262
				$id_protocole = $vote['ce_protocole'];
-
 
263
				$auteur_id = $vote['ce_utilisateur'];
-
 
264
				$valeur = $vote['valeur_vote'];
-
 
265
				//TODO : voir la définition du webservice ! La date n'est pas présent dans la base
-
 
266
				//$date = $vote[''];
-
 
267
				
-
 
268
				//TODO : voir la définition du webservice : ne devrait pas être "valeur" ?
-
 
269
				$votes[$idImage]['vote'] = $valeur;
-
 
270
				$votes[$idImage]['protocole'] = $id_protocole;
-
 
271
				$votes[$idImage]['auteur_id'] = $auteur_id;
-
 
272
			}
-
 
273
	
-
 
274
			foreach ($images as &$image) {
-
 
275
				if (isset($votes[$image['id_image']])) {
-
 
276
					$image['votes'] = $votes[$image['id_image']];
-
 
277
				}
-
 
278
			}
-
 
279
		}
-
 
280
	}
-
 
281
	
-
 
282
	/*-------------------------------------------------------------------------------
-
 
283
								FORMATER ET METTRE EN FORME
-
 
284
	--------------------------------------------------------------------------------*/
-
 
285
	/**
-
 
286
	*  Formater une observation depuis une ligne liaison
-
 
287
	*  @param $liaison liaison issue de la recherche
-
 
288
	* */
-
 
289
	private function formaterObservation($liaison) {
-
 
290
		$observation = array();
-
 
291
		$observation['id_observation'] = $liaison['id_observation'];
-
 
292
		$observation['date_observation'] = $liaison['date_observation'];
-
 
293
		$observation['date_transmission'] = $liaison['date_transmission'];
-
 
294
		$observation['determination.famille'] = $liaison['famille'];
-
 
295
		$observation['determination.ns'] = $liaison['nom_sel'];
-
 
296
		$observation['determination.nn'] = $liaison['nom_sel_nn'];
-
 
297
		$observation['determination.nt'] = $liaison['nt'];
-
 
298
		$observation['id_zone_geo'] = $liaison['ce_zone_geo'];
-
 
299
		$observation['zone_geo'] = $liaison['zone_geo'];
-
 
300
		$observation['lieudit'] = $liaison['lieudit'];
-
 
301
		$observation['station'] = $liaison['station'];
-
 
302
		$observation['milieu'] = $liaison['milieu'];
101
		$requeteNbImages = 'SELECT COUNT(*) AS nb FROM del.del_image ';
303
		$observation['auteur.id'] = $liaison['ce_utilisateur'];
102
		$resultatNbImages = $this->getBdd()->recuperer($requeteNbImages);
304
		//$this->chargerAuteur($observation);
103
		$this->total = $resultatNbImages['nb'];
305
		return $observation;
104
	}
306
	}
105
	
307
	
Line 132... Line 334...
132
		$departActuel = $this->depart;
334
		$departActuel = $this->depart;
133
		$limite = $this->limite;
335
		$limite = $this->limite;
134
		$departSuivant = $departActuel - $limite;
336
		$departSuivant = $departActuel - $limite;
Line 135... Line 337...
135
	
337
	
-
 
338
		$url = null;
136
		$url = null;
339
		
137
		if ($departSuivant > 0) {
340
		if ($departActuel > 0) {
138
			$parametres = array();
-
 
139
			if ($this->idImage != null) {
-
 
140
				$parametres['masque.id'] = $this->idImage;
-
 
141
			}
341
			$parametres = array();
142
			$url = $this->obtenirUrlNavigation($departSuivant, $limite, $parametres);
342
			$url = $this->obtenirUrlNavigation($departSuivant, $limite, $parametres);
143
		}
343
		}
144
		return $url;
344
		return $url;
Line -... Line 345...
-
 
345
	}
-
 
346
	
-
 
347
	/**
145
	}
348
	* Récupérer le lien pour afficher les images suivantes en fonction des paramètres
146
	
349
	* */
147
	private function recupererHrefSuivant() {
350
	private function recupererHrefSuivant() {
148
		$departActuel = $this->depart;
351
		$departActuel = $this->depart;
Line 149... Line 352...
149
		$limite = $this->limite;
352
		$limite = $this->limite;
150
		$departSuivant = $departActuel + $limite;
353
		$departSuivant = $departActuel + $limite;
151
	
354
	
152
		$url = null;
-
 
153
		if ($departSuivant < $this->total) {
-
 
154
			$parametres = array();
-
 
155
			if ($this->idImage != null) {
355
		$url = null;
156
				$parametres['masque.id'] = $this->idImage;
356
		if ($departSuivant < $this->total) {
157
			}
357
			$parametres = array();
158
			$url = $this->obtenirUrlNavigation($departSuivant, $limite, $parametres);
358
			$url = $this->obtenirUrlNavigation($departSuivant, $limite, $parametres);
Line -... Line 359...
-
 
359
		}
-
 
360
		return $url;
-
 
361
	}
-
 
362
	
-
 
363
	/**
-
 
364
	* Récupérer l'url de navigation en concaténant d'éventuels paramètres
159
		}
365
	* @param $depart l'entier de départ de la recherche
160
		return $url;
-
 
161
	}
-
 
162
	
366
	* @param $limite le nombre de résultats à retourner
Line 163... Line 367...
163
	private function obtenirUrlNavigation($depart, $limite, $parametresAdditionnels) {
367
	* @param $parametresAdditionnels le tableau contenant les parametres => valeurs additionnels
164
		$parametres = array(
368
	* */
165
				'navigation.depart' => $depart,
369
	private function obtenirUrlNavigation($depart, $limite, $parametresAdditionnels) {
166
				'navigation.limite' => $limite);
370
		$parametres = array('navigation.depart' => $depart, 'navigation.limite' => $limite);
167
	
371
	
168
		if ($parametresAdditionnels != null) {
372
		if ($parametresAdditionnels != null) {
169
			$parametres = array_merge($parametres, $parametresAdditionnels);
373
			$parametres = array_merge($parametres, $parametresAdditionnels);
Line 170... Line -...
170
		}
-
 
171
		$this->UrlNavigation->setRequete($parametres);
-
 
172
		$url = $this->UrlNavigation->getURL();
-
 
173
		return $url;
-
 
174
	}
-
 
175
	
-
 
176
	
-
 
177
	
-
 
178
	/**
-
 
179
	 * Chargement depuis la bdd d'une ou plusieurs images
-
 
180
	 * */
-
 
181
	private function chargerImages($imageId = null) {
-
 
182
		//TODO : gérer le nom de la base par fichier de config
-
 
183
		$requeteImages = 'SELECT * FROM del.del_image';
-
 
184
		if ($imageId != null) {
-
 
185
			$requeteImages .= ' WHERE id_image = '.$this->getBdd()->proteger($imageId);
-
 
186
		}
-
 
187
		$requeteImages .= $this->getLimite();
-
 
188
		return $this->getBdd()->recupererTous($requeteImages);
-
 
189
	}
-
 
190
	
-
 
191
	/**
-
 
192
	 * Créer la chaine de limite de requête en fonction des paramètres donnés
-
 
193
	 * */
-
 
194
	private function getLimite() {
-
 
195
		return ' LIMIT '.$this->depart.', '.$this->limite;
-
 
196
	}
-
 
197
	
-
 
198
	/**
-
 
199
	 * Charger les observations pour chaque image
-
 
200
	 * */
-
 
201
	private function chargerObservations(&$images) {
-
 
202
		$i = 0;
-
 
203
		foreach ($images as $image) {
-
 
204
			$idImage = $image['id_image'];
-
 
205
			$requeteLiaison = 'SELECT ce_observation as idObs '.
-
 
206
							  'FROM del.del_obs_images WHERE ce_image = '.$this->getBdd()->proteger($idImage);
-
 
207
			$resultatLiaison = $this->getBdd()->recupererTous($requeteLiaison);
-
 
208
			$observations = array();
-
 
209
			foreach ($resultatLiaison as $liaison) {
-
 
210
				$idObs = $liaison['idObs'];
-
 
211
				$requeteObservation = 'SELECT * FROM del.del_observation '.
-
 
212
									  'WHERE id_observation = '.$this->getBdd()->proteger($idObs);
-
 
213
				
-
 
214
				$resultatObservation = $this->getBdd()->recuperer($requeteObservation);
-
 
215
				$observations[] = $this->formaterObservation($resultatObservation);
-
 
216
			}
-
 
217
			$images[$i]['observations'] = $observations;
-
 
218
			
-
 
219
			$i++;
-
 
220
		}
-
 
221
	}
-
 
222
	
-
 
223
	/**
-
 
224
	 * Charger les votes pour chaque image
-
 
225
	 * */
-
 
226
	private function chargerVotes(&$images) {
-
 
227
		$i = 0;
-
 
228
		foreach ($images as $image) {
-
 
229
			$idImage = $image['id_image'];
-
 
230
			$requeteVotes = 'SELECT * FROM del.del_vote_image WHERE ce_image = '.$this->getBdd()->proteger($idImage);
-
 
231
			$votes = $this->getBdd()->recupererTous($requeteVotes);
-
 
232
			$images[$i]['votes'] = $votes;
-
 
233
			$i++;
-
 
234
		}
-
 
235
	}
-
 
236
	
-
 
237
	/**
-
 
238
	* Formater les résultats des images de la requête pour retour
-
 
239
	* */
-
 
240
	private function formaterImages(&$resultats) {
-
 
241
		$images = array();
-
 
242
		foreach ($resultats as $ligne) {
-
 
243
			$image = array();
-
 
244
			$image['id_image'] = $ligne['id_image'];
-
 
245
			$image['date'] = $ligne['date_prise_de_vue'];
-
 
246
	
-
 
247
			// TODO : gérer le lien vers tela à partir de l'identifiant
-
 
248
			$image['binaire.href'] = $this->formaterLienImage($ligne['id_image']);
-
 
249
			$image['hauteur'] = $ligne['hauteur'];
-
 
250
			$image['largeur'] = $ligne['largeur'];
-
 
251
				
-
 
252
			// Votes et observations sont mis à jour plus a posteriori dans l'application
-
 
253
			$image['votes'] = array();
-
 
254
			$image['observations'] = array();
-
 
255
				
-
 
256
			$images[] = $image;
374
		}
257
		}
375
		$this->UrlNavigation->setRequete($parametres);
258
	
376
		$url = $this->UrlNavigation->getURL();
259
		$resultats = $images;
377
		return $url;
260
	}
378
	}
261
	
379
	
262
	/**
380
	/**
263
	 * Formater le lien de l'image en fonction du fichier de config et de l'identifiant de l'image
381
	 * Formater le lien de l'image en fonction du fichier de config et de l'identifiant de l'image
264
	 * */
382
	 * */
265
	private function formaterLienImage($idImage) {
-
 
266
		$idImage = sprintf('%09s', $idImage);
-
 
267
		$url = $this->config['url_images'];
-
 
268
		$urlImage = str_replace('%s', $idImage, $url);
-
 
269
		return $urlImage;
-
 
270
	}
-
 
271
	
-
 
272
	/**
-
 
273
	 * Formater les résultats de la requête observation pour retour
-
 
274
	 * */
-
 
275
	private function formaterObservation(&$observation) {
-
 
276
		$retour = array();
-
 
277
		$retour['id_observation'] = $observation['id_observation'];
-
 
278
		$retour['date_observation'] = $observation['date_observation'];
-
 
279
		$retour['date_transmission'] = $observation['date_transmission'];
-
 
280
		$retour['determination.famille'] = $observation['famille'];
-
 
281
		$retour['determination.ns'] = $observation['nom_sel'];
-
 
282
		$retour['determination.nn'] = $observation['nom_sel_nn'];
-
 
283
		$retour['determination.nt'] = $observation['nt'];
-
 
284
		$retour['id_zone_geo'] = $observation['ce_zone_geo'];
-
 
285
		$retour['zone_geo'] = $observation['zone_geo'];
-
 
286
		$retour['lieudit'] = $observation['lieudit'];
-
 
287
		$retour['station'] = $observation['station'];
-
 
288
		$retour['milieu'] = $observation['milieu'];
-
 
289
		$retour['auteur.id'] = $observation['ce_utilisateur'];
-
 
290
		
-
 
291
		$this->chargerAuteur($retour);
-
 
292
		return $retour;
-
 
293
	}
-
 
294
	
-
 
295
	/**
-
 
296
	 * Récupérer le nom et prénom de l'auteur dans la table utilisateurs
-
 
297
	 * */
-
 
298
	private function chargerAuteur(&$retour) {
-
 
Line 299... Line 383...
299
		$idAuteur = $retour['auteur.id'];
383
	private function formaterLienImage($idImage) {
300
		$requeteAuteur = 'SELECT * FROM del.del_utilisateur WHERE id_utilisateur = '.$this->getBdd()->proteger($idAuteur);
384
		$idImage = sprintf('%09s', $idImage);
301
		$resultatAuteur = $this->getBdd()->recuperer($requeteAuteur);
385
		$url = $this->config['url_images'];
302
		$retour['auteur.nom'] = $resultatAuteur['nom'];
386
		$urlImage = str_replace('%s', $idImage, $url);