Subversion Repositories eFlore/Applications.del

Rev

Rev 744 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 744 Rev 745
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
	* Le web service observations récupère toutes les observations et, pour chacune d'elle, les
4
	* Le web service observations récupère toutes les observations et, pour chacune d'elle, les
5
	* images qui lui sont associées.
5
	* images qui lui sont associées.
6
 *
6
 *
7
 * @category	php 5.2
7
 * @category	php 5.2
8
 * @package	del
8
 * @package	del
9
 * @subpackage images
9
 * @subpackage images
10
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
10
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
11
 * @copyright	Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
11
 * @copyright	Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
12
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
12
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
13
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
13
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
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
 */
17
 
17
 
18
class Observations {
18
class Observations {
19
	
19
	
20
	private $conteneur;
20
	private $conteneur;
21
	private $navigation;
21
	private $navigation;
22
	private $masque;
22
	private $masque;
23
	private $gestionBdd;
23
	private $gestionBdd;
24
	private $bdd;
24
	private $bdd;
25
	
25
	
26
	public function __construct(Conteneur $conteneur = null) {
26
	public function __construct(Conteneur $conteneur = null) {
27
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
27
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
28
		$this->conteneur->chargerConfiguration('config_departements.ini');
28
		$this->conteneur->chargerConfiguration('config_departements.ini');
29
		$this->navigation = $conteneur->getNavigation();
29
		$this->navigation = $conteneur->getNavigation();
30
		$this->masque = $conteneur->getMasque();
30
		$this->masque = $conteneur->getMasque();
31
		$this->gestionBdd = $conteneur->getGestionBdd();
31
		$this->gestionBdd = $conteneur->getGestionBdd();
32
		$this->bdd = $this->gestionBdd->getBdd();
32
		$this->bdd = $this->gestionBdd->getBdd();
33
	}
33
	}
34
	
34
	
35
	/**
35
	/**
36
	 * Méthode principale de la classe.
36
	 * Méthode principale de la classe.
37
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
37
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
38
	 * pour l'afficher.
38
	 * pour l'afficher.
39
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
39
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
40
	 * @param array $parametres les paramètres situés après le ? dans l'url
40
	 * @param array $parametres les paramètres situés après le ? dans l'url
41
	 * */
41
	 * */
42
	public function consulter($ressources, $parametres) {
42
	public function consulter($ressources, $parametres) {
43
		
43
		
44
		// Gestion des configuration du script
44
		// Gestion des configuration du script
45
		$this->configurer();
45
		$this->configurer();
46
		$this->verifierConfiguration();
46
		$this->verifierConfiguration();
47
		
47
		
48
		// Lancement du service
48
		// Lancement du service
49
		$liaisons = $this->chargerLiaisons();
49
		$liaisons = $this->chargerLiaisons();
50
		$total = $this->compterObservations();
50
		$total = $this->compterObservations();
51
		$this->navigation->setTotal($total);
51
		$this->navigation->setTotal($total);
52
		$images = $this->chargerObservations($liaisons);
52
		$images = $this->chargerObservations($liaisons);
53
		$images = $this->chargerImages($images);
53
		$images = $this->chargerImages($images);
54
		
54
		
55
		// Mettre en forme le résultat et l'envoyer pour affichage
55
		// Mettre en forme le résultat et l'envoyer pour affichage
56
		$resultat = new ResultatService();
56
		$resultat = new ResultatService();
57
		$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
57
		$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $images);
58
		return $resultat;
58
		return $resultat;
59
	}
59
	}
60
	
60
	
61
	/*-------------------------------------------------------------------------------
61
	/*-------------------------------------------------------------------------------
62
	 							CONFIGURATION DU SERVICE
62
	 							CONFIGURATION DU SERVICE
63
	 --------------------------------------------------------------------------------*/
63
	 --------------------------------------------------------------------------------*/
64
	/**
64
	/**
65
	 * Configuration du service en fonction du fichier de config config_del.ini
65
	 * Configuration du service en fonction du fichier de config config_del.ini
66
	 * */
66
	 * */
67
	public function configurer() {
67
	public function configurer() {
68
		$this->mappingFiltre = $this->conteneur->getParametre('mapping_masque');
68
		$this->mappingFiltre = $this->conteneur->getParametre('mapping_masque');
69
		$this->mappingObservation = $this->conteneur->getParametre('mapping_observation');
69
		$this->mappingObservation = $this->conteneur->getParametre('mapping_observation');
70
	}
70
	}
71
	
71
	
72
	/**
72
	/**
73
	 * Vérifier que le service est bien configuré 
73
	 * Vérifier que le service est bien configuré 
74
	 * */
74
	 * */
75
	public function verifierConfiguration() {
75
	public function verifierConfiguration() {
76
	
76
	
77
		$erreurs = array();
77
		$erreurs = array();
78
		$tableauImages = $this->conteneur->getParametre('images');
78
		$tableauImages = $this->conteneur->getParametre('images');
79
		if (empty($tableauImages)) {
79
		if (empty($tableauImages)) {
80
			$erreurs[] = '- le fichier de configuration ne contient pas le tableau [images] ou celui-ci est vide ;'; 
80
			$erreurs[] = '- le fichier de configuration ne contient pas le tableau [images] ou celui-ci est vide ;'; 
81
		} else {
81
		} else {
82
			if ($this->conteneur->getParametre('url_service') == null) {
82
			if ($this->conteneur->getParametre('url_service') == null) {
83
				$erreurs[] = '- paramètre "url_service" manquant ;';
83
				$erreurs[] = '- paramètre "url_service" manquant ;';
84
			}
84
			}
85
			
85
			
86
			if ($this->conteneur->getParametre('url_images') == null) {
86
			if ($this->conteneur->getParametre('url_images') == null) {
87
				$erreurs[] = '- paramètre "url_images" manquant ;';
87
				$erreurs[] = '- paramètre "url_images" manquant ;';
88
			}
88
			}
89
			
89
			
90
		}
90
		}
91
 
91
 
92
		if (empty($this->mappingObservation)) {
92
		if (empty($this->mappingObservation)) {
93
			$erreurs[] = '- le fichier de configuration ne contient pas le tableau [mapping_observation] ou celui-ci est vide ;';
93
			$erreurs[] = '- le fichier de configuration ne contient pas le tableau [mapping_observation] ou celui-ci est vide ;';
94
		} else {
94
		} else {
95
			$champsMappingObs = array('id_observation', 'date_observation', 'date_transmission', 'famille', 'nom_sel', 'nom_sel_nn', 'nt',
95
			$champsMappingObs = array('id_observation', 'date_observation', 'date_transmission', 'famille', 'nom_sel', 'nom_sel_nn', 'nt',
96
								'ce_zone_geo', 'zone_geo', 'lieudit', 'station', 'courriel', 'ce_utilisateur', 'nom', 'prenom');
96
								'ce_zone_geo', 'zone_geo', 'lieudit', 'station', 'courriel', 'ce_utilisateur', 'nom', 'prenom');
97
			
97
			
98
			foreach ($champsMappingObs as $champ) {
98
			foreach ($champsMappingObs as $champ) {
99
				if (!isset($this->mappingObservation[$champ])) {
99
				if (!isset($this->mappingObservation[$champ])) {
100
					$erreurs[] = '- le mapping du champ "'.$champ.'" pour l\'observation est manquant ;';
100
					$erreurs[] = '- le mapping du champ "'.$champ.'" pour l\'observation est manquant ;';
101
				}				
101
				}				
102
			}
102
			}
103
		}
103
		}
104
		
104
		
105
		if (empty($this->mappingFiltre)) {
105
		if (empty($this->mappingFiltre)) {
106
			$erreurs[] = '- le fichier de configuration ne contient pas le tableau [mapping_masque] ou celui-ci est vide ;';
106
			$erreurs[] = '- le fichier de configuration ne contient pas le tableau [mapping_masque] ou celui-ci est vide ;';
107
		} else {
107
		} else {
108
			$champsMappingFiltre = array('famille', 'ns', 'nn', 'date', 'tag', 'commune');
108
			$champsMappingFiltre = array('famille', 'ns', 'nn', 'date', 'tag', 'commune');
109
			foreach ($champsMappingFiltre as $champ) {
109
			foreach ($champsMappingFiltre as $champ) {
110
				if (!isset($this->mappingFiltre[$champ])) {
110
				if (!isset($this->mappingFiltre[$champ])) {
111
					$erreurs[] = '- le mapping du champ "'.$champ.'" pour l\'observation est manquant ;';
111
					$erreurs[] = '- le mapping du champ "'.$champ.'" pour l\'observation est manquant ;';
112
				}				
112
				}				
113
			}
113
			}
114
		}
114
		}
115
		
115
		
116
		if (!empty($erreurs)) {
116
		if (!empty($erreurs)) {
117
			$e = 'Erreur lors de la configuration : '."\n";
117
			$e = 'Erreur lors de la configuration : '."\n";
118
			$e .= implode("\n", $erreurs);
118
			$e .= implode("\n", $erreurs);
119
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
119
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
120
		}
120
		}
121
	}
121
	}
122
	
122
	
123
	
123
	
124
	
124
	
125
	/**
125
	/**
126
	 * Obtenir une chaine de caractère concaténant nom et prénom séparé par une virgule
126
	 * Obtenir une chaine de caractère concaténant nom et prénom séparé par une virgule
127
	 * @param String $auteurId l'identifiant de l'auteur
127
	 * @param String $auteurId l'identifiant de l'auteur
128
	 * @return String la chaine de concaténation
128
	 * @return String la chaine de concaténation
129
	 * */
129
	 * */
130
	private function getChaineNomPrenom($auteurId) {
130
	private function getChaineNomPrenom($auteurId) {
131
		$nomPrenom = explode(' ', $auteurId);
131
		$nomPrenom = explode(' ', $auteurId);
132
		$nomPrenom = $this->proteger($nomPrenom);
132
		$nomPrenom = $this->proteger($nomPrenom);
133
		$chaineNomPrenom = implode(', ', $nomPrenom);
133
		$chaineNomPrenom = implode(', ', $nomPrenom);
134
		return $chaineNomPrenom;
134
		return $chaineNomPrenom;
135
	}
135
	}
136
	
136
	
137
	/**
137
	/**
138
	* Charger la clause WHERE en fonction des paramètres de masque
138
	* Charger la clause WHERE en fonction des paramètres de masque
139
	* */
139
	* */
140
	private function chargerClauseWhere() {
140
	private function chargerClauseWhere() {
141
		$where = array();
141
		$where = array();
142
		$tableauMasque = $this->masque->getMasque();
142
		$tableauMasque = $this->masque->getMasque();
143
		// FIXME : Les communes avec une apostrophe (ex: saint michel d'euzet) arrivent dans les paramètres sans l'apostrophe
143
		// FIXME : Les communes avec une apostrophe (ex: saint michel d'euzet) arrivent dans les paramètres sans l'apostrophe
144
		if (!empty($tableauMasque)) {
144
		if (!empty($tableauMasque)) {
145
			foreach($tableauMasque as $idMasque => $valeurMasque) {
145
			foreach($tableauMasque as $idMasque => $valeurMasque) {
146
					
146
					
147
				$idMasque = str_replace('masque.', '', $idMasque);
147
				$idMasque = str_replace('masque.', '', $idMasque);
148
				switch ($idMasque) {
148
				switch ($idMasque) {
149
					// nom du masque => nom BDD
149
					// nom du masque => nom BDD
150
					case 'auteur' :
150
					case 'auteur' :
151
						$auteurId = $this->masque->getMasque('auteur');
151
						$auteurId = $this->masque->getMasque('auteur');
152
						if (is_numeric($auteurId)) {
152
						if (is_numeric($auteurId)) {
153
							$where[] = ' ce_utilisateur = '.$auteurId;
153
							$where[] = ' ce_utilisateur = '.$auteurId;
154
						} else {
154
						} else {
155
							if (strpos($auteurId, '@') === false) {
155
							if (strpos($auteurId, '@') === false) {
156
								$chaineNomPrenom = $this->getChaineNomPrenom($auteurId);
156
								$chaineNomPrenom = $this->getChaineNomPrenom($auteurId);
157
								$where[] = '((nom IN ('.$chaineNomPrenom.')) OR (prenom IN ('.$chaineNomPrenom.')))';
157
								$where[] = '((nom IN ('.$chaineNomPrenom.')) OR (prenom IN ('.$chaineNomPrenom.')))';
158
							} else {
158
							} else {
159
								$where[] = " courriel LIKE ".$this->proteger($this->masque->getMasque('auteur').'%')." ";
159
								$where[] = " courriel LIKE ".$this->proteger($this->masque->getMasque('auteur').'%')." ";
160
							}
160
							}
161
						}
161
						}
162
						break;
162
						break;
163
			
163
			
164
						//TODO : gérer le format de la date ?
164
						//TODO : gérer le format de la date ?
165
						// rechercher sur LIKE DATE % ?
165
						// rechercher sur LIKE DATE % ?
166
						// TODO : recherche sur JOUR MOIS ou ANNEE
166
						// TODO : recherche sur JOUR MOIS ou ANNEE
167
					case 'departement' :
167
					case 'departement' :
168
						$dept = $valeurMasque;
168
						$dept = $valeurMasque;
169
						if (is_numeric($dept)) {
169
						if (is_numeric($dept)) {
170
							$dept = sprintf('%02s', $dept);
170
							$dept = sprintf('%02s', $dept);
171
							$dept = sprintf("%-'_5s", $dept);
171
							$dept = sprintf("%-'_5s", $dept);
172
							$where[] = " ce_zone_geo LIKE ".$this->proteger('INSEE-C:'.$dept);
172
							$where[] = " ce_zone_geo LIKE ".$this->proteger('INSEE-C:'.$dept);
173
						} else {
173
						} else {
174
							
174
							
175
							//FIXME : et les apostrophes dans les départements ?
175
							//FIXME : et les apostrophes dans les départements ?
176
							
176
							
177
							$deptId = $this->conteneur->getParametre($dept);
177
							$deptId = $this->conteneur->getParametre($dept);
178
							if ($deptId != null) {
178
							if ($deptId != null) {
179
								$where[] = " ce_zone_geo LIKE ".$this->proteger('INSEE-C:'.$deptId.'%');
179
								$where[] = " ce_zone_geo LIKE ".$this->proteger('INSEE-C:'.$deptId.'%');
180
							}
180
							}
181
						}
181
						}
182
						break;
182
						break;
183
					case 'genre' :
183
					case 'genre' :
184
						$where[] = ' '.$this->mappingFiltre['ns'].' LIKE '.$this->proteger('%'.$valeurMasque.'% %');
184
						$where[] = ' '.$this->mappingFiltre['ns'].' LIKE '.$this->proteger('%'.$valeurMasque.'% %');
185
						break;
185
						break;
186
					case 'tag' :
186
					case 'tag' :
187
						$where[] = " mots_cles_texte LIKE ".$this->proteger($valeurMasque);
187
						$where[] = " mots_cles_texte LIKE ".$this->proteger($valeurMasque);
188
						break;
188
						break;
189
					case 'nn' :
189
					case 'nn' :
190
						$where[] = ' '.$this->mappingFiltre['nn'].'  = '.$this->proteger($valeurMasque);
190
						$where[] = ' '.$this->mappingFiltre['nn'].'  = '.$this->proteger($valeurMasque);
191
						break;
191
						break;
192
					default:
192
					default:
193
						$where[] = ' '.$this->mappingFiltre[$idMasque].' LIKE '.$this->proteger('%'.$valeurMasque.'%');
193
						$where[] = ' '.$this->mappingFiltre[$idMasque].' LIKE '.$this->proteger('%'.$valeurMasque.'%');
194
				}
194
				}
195
			}	
195
			}	
196
		}
196
		}
197
		
197
		
198
		if (!empty($where)) {
198
		if (!empty($where)) {
199
			return ' WHERE '.implode('AND', $where);
199
			return ' WHERE '.implode('AND', $where);
200
		} else {
200
		} else {
201
			return;
201
			return;
202
		}
202
		}
203
	}
203
	}
204
	
204
	
205
	/*-------------------------------------------------------------------------------
205
	/*-------------------------------------------------------------------------------
206
								CHARGEMENT DES IMAGES 
206
								CHARGEMENT DES OBSERVATIONS 
207
	--------------------------------------------------------------------------------*/
207
	--------------------------------------------------------------------------------*/
208
	/**
208
	/**
209
	* Chargement depuis la bdd de toutes les liaisons entre images et observations
209
	* Chargement depuis la bdd de toutes les liaisons entre images et observations
210
	* */
210
	* */
211
	private function chargerLiaisons() {
211
	private function chargerLiaisons() {
212
	
212
	
213
		$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS * '.
213
		$requeteLiaisons = 'SELECT SQL_CALC_FOUND_ROWS * '.
214
						   'FROM '.$this->gestionBdd->formaterTable('del_observation', 'dob').
214
						   'FROM '.$this->gestionBdd->formaterTable('del_observation', 'dob').
215
						   'INNER JOIN '.$this->gestionBdd->formaterTable('del_obs_images', 'doi').
215
						   'INNER JOIN '.$this->gestionBdd->formaterTable('del_obs_images', 'doi').
216
						   'ON doi.id_observation = dob.id_observation '.
216
						   'ON doi.id_observation = dob.id_observation '.
217
						   'INNER JOIN del_utilisateur du '.
217
						   'INNER JOIN del_utilisateur du '.
218
						   'ON du.id_utilisateur = doi.id_utilisateur ';
218
						   'ON du.id_utilisateur = doi.id_utilisateur ';
219
		$requeteLiaisons .= $this->chargerClauseWhere();
219
		$requeteLiaisons .= $this->chargerClauseWhere();
220
		$requeteLiaisons .=  ' GROUP BY doi.id_observation';
220
		$requeteLiaisons .=  ' GROUP BY doi.id_observation';
221
		$requeteLiaisons .= ' ORDER BY date_transmission DESC ';
221
		$requeteLiaisons .= ' ORDER BY date_transmission DESC ';
222
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
222
		$requeteLiaisons .= $this->gestionBdd->getLimitSql();
223
		
223
		
224
		return $this->bdd->recupererTous($requeteLiaisons);
224
		return $this->bdd->recupererTous($requeteLiaisons);
225
	}
225
	}
226
	
226
	
227
	/**
227
	/**
228
	* Compter le nombre total d'images dans la base pour affichage dans entete.
228
	* Compter le nombre total d'images dans la base pour affichage dans entete.
229
	* */
229
	* */
230
	private function compterObservations() {
230
	private function compterObservations() {
231
		$requete = 'SELECT FOUND_ROWS() AS nbre ';
231
		$requete = 'SELECT FOUND_ROWS() AS nbre ';
232
		$resultats = $this->bdd->recuperer($requete);
232
		$resultats = $this->bdd->recuperer($requete);
233
		return (int) $resultats['nbre'];
233
		return (int) $resultats['nbre'];
234
	}
234
	}
235
	
235
	
236
	/**
236
	/**
237
	* Retourner un tableau d'images formaté en fonction des liaisons trouvées
237
	* Retourner un tableau d'images formaté en fonction des liaisons trouvées
238
	* @param $liaisons les liaisons de la table del_obs_images
238
	* @param $liaisons les liaisons de la table del_obs_images
239
	* */
239
	* */
240
	private function chargerObservations($liaisons) {
240
	private function chargerObservations($liaisons) {
241
	
241
	
242
		$observations = array();
242
		$observations = array();
243
		foreach ($liaisons as $liaison) {
243
		foreach ($liaisons as $liaison) {
244
			$idObs = $liaison[$this->mappingObservation['id_observation']];
244
			$idObs = $liaison[$this->mappingObservation['id_observation']];
245
			
-
 
246
			$observation = array();
245
			
247
			foreach ($this->mappingObservation as $id => $champ) {
-
 
248
				$observation[$champ] = $liaison[$id];
-
 
249
			}
-
 
250
			$observation['images'] = array();
246
			$observation = $this->formaterObservation($liaison); 
251
			$observations[$idObs] = $observation;
247
			$observations[$idObs] = $observation;
252
		}
248
		}
253
		return $observations;
249
		return $observations;
254
	}
250
	}
255
	
251
	
256
	/**
252
	/**
257
	 * Sélectionner toutes les images de chaque observation
253
	 * Sélectionner toutes les images de chaque observation
258
	 * @param array $observations la liste des observations 
254
	 * @param array $observations la liste des observations 
259
	 * */
255
	 * */
260
	public function chargerImages($observations) {
256
	public function chargerImages($observations) {
261
		
257
		
262
		foreach ($observations as $id => $observation) {
258
		foreach ($observations as $id => $observation) {
263
			
259
			
264
			$requeteImages = 'SELECT * FROM '. $this->gestionBdd->formaterTable('del_obs_images', 'doi').
260
			$requeteImages = 'SELECT * FROM '. $this->gestionBdd->formaterTable('del_obs_images', 'doi').
265
							 'INNER JOIN '.$this->gestionBdd->formaterTable('del_image', 'di').
261
							 'INNER JOIN '.$this->gestionBdd->formaterTable('del_image', 'di').
266
							 'ON doi.id_image = di.id_image '.
262
							 'ON doi.id_image = di.id_image '.
267
							 'WHERE doi.id_observation = '.$observation['id_observation'];
263
							 'WHERE doi.id_observation = '.$observation['id_observation'];
268
			
264
			
269
			$images = $this->bdd->recupererTous($requeteImages);
265
			$images = $this->bdd->recupererTous($requeteImages);
270
			$images = $this->formaterImages($images);
266
			$images = $this->formaterImages($images);
271
			$observations[$id]['images'] = $images;
267
			$observations[$id]['images'] = $images;
272
		}
268
		}
273
		
269
		
274
		return $observations;
270
		return $observations;
275
	}
271
	}
276
	
272
	
277
	
273
	
278
	
274
	
279
	/*-------------------------------------------------------------------------------
275
	/*-------------------------------------------------------------------------------
280
								FORMATER ET METTRE EN FORME
276
								FORMATER ET METTRE EN FORME
281
	--------------------------------------------------------------------------------*/
277
	--------------------------------------------------------------------------------*/
282
	
278
	
283
	/**
279
	/**
284
	 * Formater les images d'une observation
280
	 * Formater les images d'une observation
285
	 * @param array $images les images de l'observation
281
	 * @param array $images les images de l'observation
286
	 * */
282
	 * */
287
	private function formaterImages($images) {
283
	private function formaterImages($images) {
288
		$imagesRetour = array();
284
		$imagesRetour = array();
289
		foreach ($images as $image) {
285
		foreach ($images as $image) {
290
			$imageCourante = array();
286
			$imageCourante = array();
291
			$imageCourante['id_image'] = $image['id_image'];
287
			$imageCourante['id_image'] = $image['id_image'];
292
			$imageCourante['date'] = $image['date_prise_de_vue'];
288
			$imageCourante['date'] = $image['date_prise_de_vue'];
293
			$imageCourante['binaire.href'] = $this->formaterLienImage($image['id_image']);
289
			$imageCourante['binaire.href'] = $this->formaterLienImage($image['id_image']);
294
			$imageCourante['hauteur'] = $image['hauteur'];
290
			$imageCourante['hauteur'] = $image['hauteur'];
295
			$imageRetour['largeur'] = $image['largeur'];
291
			$imageRetour['largeur'] = $image['largeur'];
296
			
292
			
297
			$imagesRetour[] = $imageCourante;
293
			$imagesRetour[] = $imageCourante;
298
		}
294
		}
299
		
295
		
300
		return $imagesRetour;
296
		return $imagesRetour;
301
	} 
297
	} 
302
	
298
	
303
	/**
299
	/**
304
	*  Formater une observation depuis une ligne liaison
300
	*  Formater une observation depuis une ligne liaison
305
	*  @param $liaison liaison issue de la recherche
301
	*  @param $liaison liaison issue de la recherche
306
	*  @return $observation l'observation mise en forme
302
	*  @return $observation l'observation mise en forme
307
	* */
303
	* */
308
	private function formaterObservation($liaison) {
304
	private function formaterObservation($liaison) {
309
		$observation = array();
305
		$observation = array();
310
		
306
		
311
		foreach ($this->mappingObservation as $nomOriginal => $nomFinal) {
307
		foreach ($this->mappingObservation as $nomOriginal => $nomFinal) {
312
			$observation[$nomFinal] = $liaison[$nomOriginal];
308
			$observation[$nomFinal] = $liaison[$nomOriginal];
313
		}
309
		}
-
 
310
		
-
 
311
		$observation['images'] = array();
314
 
312
 
315
		return $observation;
313
		return $observation;
316
	}
314
	}
317
	
-
 
318
	/**
-
 
319
	*  Formater une observation depuis une ligne liaison
-
 
320
	*  @param $liaison liaison issue de la recherche
-
 
321
	*  @return $observation l'observation mise en forme
-
 
322
	* */
-
 
323
	private function formaterVotes($votes) {
-
 
324
		$retour = array();
-
 
325
		foreach ($votes as $vote) {
-
 
326
			$idImage = $vote['ce_image'];
-
 
327
			$id = $vote['id_vote_image'];
-
 
328
			$id_protocole = $vote['ce_protocole'];
-
 
329
			$auteur_id = $vote['ce_utilisateur'];
-
 
330
			$valeur = $vote['valeur_vote'];
-
 
331
			$date = $vote['date_vote_image'];
-
 
332
		
-
 
333
			$retour[$idImage]['valeur'] = $valeur;
-
 
334
			$retour[$idImage]['protocole'] = $id_protocole;
-
 
335
			$retour[$idImage]['auteur_id'] = $auteur_id;
-
 
336
			$retour[$idImage]['date'] = $auteur_id;
-
 
337
		}
-
 
338
		
-
 
339
		return $retour;
-
 
340
	}
315
	
341
	
316
	
342
	/**
317
	/**
343
	 * Formater le lien de l'image en fonction du fichier de config et de l'identifiant de l'image
318
	 * Formater le lien de l'image en fonction du fichier de config et de l'identifiant de l'image
344
	 * */
319
	 * */
345
	private function formaterLienImage($idImage) {
320
	private function formaterLienImage($idImage) {
346
		$idImage = sprintf('%09s', $idImage);
321
		$idImage = sprintf('%09s', $idImage);
347
		$url = $this->conteneur->getParametre('url_images');
322
		$url = $this->conteneur->getParametre('url_images');
348
		$urlImage = str_replace('%s', $idImage, $url);
323
		$urlImage = str_replace('%s', $idImage, $url);
349
		return $urlImage;
324
		return $urlImage;
350
	}
325
	}
351
	
326
	
352
	private function proteger($valeur) {
327
	private function proteger($valeur) {
353
		if (is_array($valeur)) {
328
		if (is_array($valeur)) {
354
			return $this->bdd->protegerTableau($valeur);
329
			return $this->bdd->protegerTableau($valeur);
355
		} else {
330
		} else {
356
			return $this->bdd->proteger($valeur);
331
			return $this->bdd->proteger($valeur);
357
		}
332
		}
358
	}
333
	}
359
}
334
}
360
?>
335
?>