Subversion Repositories eFlore/Applications.del

Rev

Rev 1428 | Rev 1564 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1428 Rev 1472
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
	* Le web service image récupère toutes les données de la table del_obs_images
4
	* Le web service image récupère toutes les données de la table del_obs_images
5
 * pour retourner une liste d'images associée à une observation
5
 * pour retourner une liste d'images associée à une observation
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=ApiIdentiplante01Images
15
 * @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
16
 */
16
 */
17
 
17
 
18
class VotesImage extends RestService {
18
class VotesImage {
19
	
19
	
20
	private $imageIds = array();
20
	private $imageIds = array();
21
	private $conteneur;
21
	private $conteneur;
22
	private $navigation;
22
	private $navigation;
23
	private $masque;
23
	private $masque;
24
	protected $gestionBdd;
24
	protected $gestionBdd;
25
	protected $bdd;
25
	protected $bdd;
26
	private $ressources;
26
	private $ressources;
27
	private $parametres;
27
	private $parametres;
28
	
28
	
29
	public function __construct(Conteneur $conteneur = null) {
29
	public function __construct(Conteneur $conteneur = null) {
30
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
30
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
31
		$this->conteneur->chargerConfiguration('config_votes.ini');
31
		$this->conteneur->chargerConfiguration('config_votes.ini');
32
		$this->conteneur->chargerConfiguration('config_mapping_votes.ini');
32
		$this->conteneur->chargerConfiguration('config_mapping_votes.ini');
33
		$this->navigation = $conteneur->getNavigation();
33
		$this->navigation = $conteneur->getNavigation();
34
		$this->masque = $conteneur->getMasque();
34
		$this->masque = $conteneur->getMasque();
35
		$this->gestionBdd = $conteneur->getGestionBdd();
35
		$this->gestionBdd = $conteneur->getGestionBdd();
36
		$this->bdd = $this->gestionBdd->getBdd();
36
		$this->bdd = $this->gestionBdd->getBdd();
37
	}
37
	}
38
	
38
	
39
	/**
39
	/**
40
	 * Méthode principale de la classe.
40
	 * Méthode principale de la classe.
41
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
41
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
42
	 * pour l'afficher.
42
	 * pour l'afficher.
43
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
43
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
44
	 * @param array $parametres les paramètres situés après le ? dans l'url
44
	 * @param array $parametres les paramètres situés après le ? dans l'url
45
	 * */
45
	 * */
46
	public function consulter($ressources, $parametres) {
46
	public function consulter($ressources, $parametres) {
47
		// Gestion des configuration du script
47
		// Gestion des configuration du script
48
		$this->ressources = $ressources;
48
		$this->ressources = $ressources;
49
		$this->parametres = $parametres;
49
		$this->parametres = $parametres;
50
		$this->configurer();
50
		$this->configurer();
51
		$this->verifierConfiguration();
51
		$this->verifierConfiguration();
52
		
52
		
53
		// Lancement du service
53
		// Lancement du service
54
		$votes = $this->chargerVotes();
54
		$votes = $this->chargerVotes();
55
		$total = $this->compterVotes();
55
		$total = $this->compterVotes();
56
		$this->navigation->setTotal($total);
56
		$this->navigation->setTotal($total);
57
		
57
		
58
		// Mettre en forme le résultat et l'envoyer pour affichage
58
		// Mettre en forme le résultat et l'envoyer pour affichage
59
		$resultat = new ResultatService();
59
		$resultat = new ResultatService();
60
		$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $votes);
60
		$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $votes);
61
		return $resultat;
61
		return $resultat;
62
	}
62
	}
63
	
63
	
64
	public function ajouter($ressources, $parametres) {
64
	public function ajouter($ressources, $parametres) {
65
		
65
		
66
		$this->verifierParametresAjoutModif($ressources, $parametres);
66
		$this->verifierParametresAjoutModif($ressources, $parametres);
67
		
67
		
68
		$insertion = 'INSERT INTO del_image_vote '.
68
		$insertion = 'INSERT INTO del_image_vote '.
69
						'(ce_image, ce_protocole, ce_utilisateur, valeur, date) '.
69
						'(ce_image, ce_protocole, ce_utilisateur, valeur, date) '.
70
						'VALUES ('.
70
						'VALUES ('.
71
							$this->proteger($ressources[0]).','.
71
							$this->proteger($ressources[0]).','.
72
							$this->proteger($parametres['protocole']).','.
72
							$this->proteger($parametres['protocole']).','.
73
							$this->proteger($parametres['utilisateur']).','.
73
							$this->proteger($parametres['utilisateur']).','.
74
							$this->proteger($parametres['valeur']).', '.
74
							$this->proteger($parametres['valeur']).', '.
75
						'NOW()'.
75
						'NOW()'.
76
						');';
76
						');';
77
		
77
 
78
		$resultat = $this->bdd->requeter($insertion);
78
		$resultat = $this->bdd->requeter($insertion);
79
		if ($resultat == false) {
79
		if ($resultat == false) {
80
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
80
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
81
		} else {
81
		} else {
-
 
82
			$retour = $this->bdd->recupererIdDernierAjout();
-
 
83
			
-
 
84
			$resultat = new ResultatService();
-
 
85
			$resultat->corps = array('id_vote' => $retour);
-
 
86
			
82
			self::updateStats($this->bdd, $ressources[0],$parametres['protocole']);
87
			self::updateStats($this->bdd, $ressources[0],$parametres['protocole']);
-
 
88
 
83
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_CREATION_OK);
89
			return $resultat;
84
		}
90
		}
85
	}
91
	}
86
	
92
	
87
	public function modifier($ressources, $parametres) {
93
	public function modifier($ressources, $parametres) {
88
	
94
	
89
		$this->verifierParametresAjoutModif($ressources, $parametres);
95
		$this->verifierParametresAjoutModif($ressources, $parametres);
90
		
96
		
91
		//TODO: est il nécessaire de tester si ça existe et renoyer une erreur 404
97
		//TODO: est il nécessaire de tester si ça existe et renoyer une erreur 404
92
		// si l'on vote ? Cela peut ralentir considérablement les choses
98
		// si l'on vote ? Cela peut ralentir considérablement les choses
93
		// une contrainte d'unicité sur le triplet image, protocole, vote existe,
99
		// une contrainte d'unicité sur le triplet image, protocole, vote existe,
94
		// ça suffira pour provoquer une erreur 500
100
		// ça suffira pour provoquer une erreur 500
95
		$modification = 'UPDATE del_image_vote '.
101
		$modification = 'UPDATE del_image_vote '.
96
							'SET valeur = '.$this->proteger($parametres['valeur']).', '.
102
							'SET valeur = '.$this->proteger($parametres['valeur']).', '.
97
							'    date = NOW() '.
103
							'    date = NOW() '.
98
						'WHERE '.
104
						'WHERE '.
99
							'ce_image = '.$this->proteger($ressources[0]).' AND '.
105
							'ce_image = '.$this->proteger($ressources[0]).' AND '.
100
							'ce_protocole = '.$this->proteger($parametres['protocole']).' AND '.
106
							'ce_protocole = '.$this->proteger($parametres['protocole']).' AND '.
101
							'ce_utilisateur = '.$this->proteger($parametres['utilisateur']).' ';		
107
							'ce_utilisateur = '.$this->proteger($parametres['utilisateur']).' ';		
102
		$resultat = $this->bdd->requeter($modification);
108
		$resultat = $this->bdd->requeter($modification);
103
		if ($resultat == false) {
109
		if ($resultat == false) {
104
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
110
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
105
		} else {
111
		} else {
106
			self::updateStats($this->bdd, $ressources[0],$parametres['protocole']);
112
			self::updateStats($this->bdd, $ressources[0],$parametres['protocole']);
107
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_OK);
113
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_OK);
108
		}
114
		}
109
	}
115
	}
-
 
116
	
-
 
117
	public function supprimer($ressources) {
-
 
118
		
-
 
119
		$id_image = $ressources[0];
-
 
120
		$id_vote = $ressources[2];
-
 
121
		$id_vote_p = $this->proteger($id_vote);
-
 
122
 
-
 
123
		$requete_infos_vote = 'SELECT * FROM del_image_vote '.
-
 
124
		                'WHERE id_vote = '.$id_vote_p;
-
 
125
				
-
 
126
		$infos_vote = $this->bdd->recuperer($requete_infos_vote);
-
 
127
		if ($infos_vote == false) {
-
 
128
			throw new Exception("Aucun vote ne correspond à cet identifiant", RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE);
-
 
129
		}
-
 
130
		
-
 
131
		$controle_acces = new ControleAcces($this->conteneur);
-
 
132
		$utilisateur = 	$controle_acces->getInfosUtilisateurConnecte();
-
 
133
		
-
 
134
		if($utilisateur['id_utilisateur'] != $infos_vote['ce_utilisateur'] && 
-
 
135
			$controle_acces->getIdAnonymeTemporaire() != $infos_vote['ce_utilisateur']) {
-
 
136
			throw new Exception("Vous n'êtes pas autorisé à supprimer ce vote",
-
 
137
			RestServeur::HTTP_CODE_ACCES_NON_AUTORISE);
-
 
138
		}
-
 
139
		
-
 
140
		$suppression = 'DELETE FROM del_image_vote '.
-
 
141
							'WHERE id_vote = '.$id_vote_p;
-
 
142
			
-
 
143
		$resultat = $this->bdd->requeter($suppression);
-
 
144
		if ($resultat == false) {
-
 
145
			throw new Exception("Impossible de supprimer le vote", RestServeur::HTTP_CODE_ERREUR);
-
 
146
		} else {
-
 
147
			self::updateStats($this->bdd, $ressources[0],$infos_vote['ce_protocole']);
-
 
148
		}
-
 
149
	}
110
	
150
	
111
	static function updateStats($db, $id_image, $id_proto) {
151
	static function updateStats($db, $id_image, $id_proto) {
112
		$id_image = intval($id_image);
152
		$id_image = intval($id_image);
113
		$id_proto = intval($id_proto);
153
		$id_proto = intval($id_proto);
114
		if(!$id_image || !$id_proto) throw new Exception("Ne peut mettre à jour les statistiques de vote",
154
		if(!$id_image || !$id_proto) throw new Exception("Ne peut mettre à jour les statistiques de vote",
115
														 RestServeur::HTTP_CODE_ERREUR);
155
														 RestServeur::HTTP_CODE_ERREUR);
116
		/* REPLACE ... SELECT: réinitalise les champs non-défini (MySQL 5.1)
156
		/* REPLACE ... SELECT: réinitalise les champs non-défini (MySQL 5.1)
117
		   REPLACE ... SET a=b, c=d: idem ou plusieurs requête
157
		   REPLACE ... SET a=b, c=d: idem ou plusieurs requête
118
		   Du coup il faut récupérer les données actuelles mais REPLACE ne le permet pas
158
		   Du coup il faut récupérer les données actuelles mais REPLACE ne le permet pas
119
		   (http://dev.mysql.com/doc/refman/5.5/en/replace.html :
159
		   (http://dev.mysql.com/doc/refman/5.5/en/replace.html :
120
		   You cannot refer to values from the current row and use them in the new row.)
160
		   You cannot refer to values from the current row and use them in the new row.)
121
		   D'où INSERT ... ON DUPLICATE KEY UPDATE. Notons que VALUES() récupère la valeur
161
		   D'où INSERT ... ON DUPLICATE KEY UPDATE. Notons que VALUES() récupère la valeur
122
		   *associée* au champ passé en paramètre, c'est à dire VALUES(moyenne) == divo.moyenne */
162
		   *associée* au champ passé en paramètre, c'est à dire VALUES(moyenne) == divo.moyenne */
123
		$db->requeter(sprintf('INSERT INTO del_image_stat (ce_image, ce_protocole, moyenne, nb_votes)'.
163
		$db->requeter(sprintf('INSERT INTO del_image_stat (ce_image, ce_protocole, moyenne, nb_votes)'.
124
							  ' SELECT ce_image, ce_protocole, AVG(valeur) AS moyenne, COUNT(valeur) AS nb_votes'.
164
							  ' SELECT ce_image, ce_protocole, AVG(valeur) AS moyenne, COUNT(valeur) AS nb_votes'.
125
							  ' FROM del_image_vote divo'.
165
							  ' FROM del_image_vote divo'.
126
							  ' WHERE ce_image = %d AND ce_protocole = %d GROUP BY ce_image, ce_protocole'.
166
							  ' WHERE ce_image = %d AND ce_protocole = %d GROUP BY ce_image, ce_protocole'.
127
							  ' ON DUPLICATE KEY UPDATE moyenne = VALUES(moyenne), nb_votes = VALUES(nb_votes)',
167
							  ' ON DUPLICATE KEY UPDATE moyenne = VALUES(moyenne), nb_votes = VALUES(nb_votes)',
128
							  $id_image, $id_proto));
168
							  $id_image, $id_proto));
129
		
169
		
130
 
170
 
131
	}
171
	}
132
 
172
 
133
	/*-------------------------------------------------------------------------------
173
	/*-------------------------------------------------------------------------------
134
	 							CONFIGURATION DU SERVICE
174
	 							CONFIGURATION DU SERVICE
135
	 --------------------------------------------------------------------------------*/
175
	 --------------------------------------------------------------------------------*/
136
	/**
176
	/**
137
	 * Configuration du service en fonction du fichier de config config_del.ini
177
	 * Configuration du service en fonction du fichier de config config_del.ini
138
	 * */
178
	 * */
139
	public function configurer() {
179
	public function configurer() {
140
		$this->mappingFiltre = $this->conteneur->getParametre('mapping_masque');
180
		$this->mappingFiltre = $this->conteneur->getParametre('mapping_masque');
141
		$this->mappingVotes = $this->conteneur->getParametre('mapping_votes');
181
		$this->mappingVotes = $this->conteneur->getParametre('mapping_votes');
142
	}
182
	}
143
	
183
	
144
	/**
184
	/**
145
	 * Vérifier que le service est bien configuré 
185
	 * Vérifier que le service est bien configuré 
146
	 * */
186
	 * */
147
	public function verifierConfiguration() {
187
	public function verifierConfiguration() {
148
	
188
	
149
		$erreurs = array();
189
		$erreurs = array();
150
		$tableauImages = $this->conteneur->getParametre('images');
190
		$tableauImages = $this->conteneur->getParametre('images');
151
		if (empty($tableauImages)) {
191
		if (empty($tableauImages)) {
152
			$erreurs[] = '- le fichier de configuration ne contient pas le tableau [images] ou celui-ci est vide ;'; 
192
			$erreurs[] = '- le fichier de configuration ne contient pas le tableau [images] ou celui-ci est vide ;'; 
153
		} else {
193
		} else {
154
			if ($this->conteneur->getParametre('url_service') == null) {
194
			if ($this->conteneur->getParametre('url_service') == null) {
155
				$erreurs[] = '- paramètre "url_service" manquant ;';
195
				$erreurs[] = '- paramètre "url_service" manquant ;';
156
			}
196
			}
157
		}
197
		}
158
 
198
 
159
		if (empty($this->mappingVotes)) {
199
		if (empty($this->mappingVotes)) {
160
			$erreurs[] = '- le fichier de configuration ne contient pas le tableau [mapping_votes] ou celui-ci est vide ;';
200
			$erreurs[] = '- le fichier de configuration ne contient pas le tableau [mapping_votes] ou celui-ci est vide ;';
161
		} else {
201
		} else {
162
			$champsMappingObs = array('ce_protocole','id_vote','valeur','ce_image', 'ce_utilisateur', 'nom', 'prenom');
202
			$champsMappingObs = array('ce_protocole','id_vote','valeur','ce_image', 'ce_utilisateur', 'nom', 'prenom');
163
			foreach ($champsMappingObs as $champ) {
203
			foreach ($champsMappingObs as $champ) {
164
				if (!isset($this->mappingVotes[$champ])) {
204
				if (!isset($this->mappingVotes[$champ])) {
165
					$erreurs[] = '- le mapping du champ "'.$champ.'" pour le vote est manquant ;';
205
					$erreurs[] = '- le mapping du champ "'.$champ.'" pour le vote est manquant ;';
166
				}				
206
				}				
167
			}
207
			}
168
		}
208
		}
169
		
209
		
170
		
210
		
171
		if (!empty($erreurs)) {
211
		if (!empty($erreurs)) {
172
			$e = 'Erreur lors de la configuration : '."\n";
212
			$e = 'Erreur lors de la configuration : '."\n";
173
			$e .= implode("\n", $erreurs);
213
			$e .= implode("\n", $erreurs);
174
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
214
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
175
		}
215
		}
176
	}
216
	}
177
	
217
	
178
	
218
	
179
	public function verifierParametresAjoutModif($ressources, $parametres) {
219
	public function verifierParametresAjoutModif($ressources, $parametres) {
180
		$erreurs = array();
220
		$erreurs = array();
181
		if (!is_numeric($ressources[0])) {
221
		if (!is_numeric($ressources[0])) {
182
			$erreurs[] = '- le paramètre indiquant l\'identifiant de l\'image doit être numérique ;';
222
			$erreurs[] = '- le paramètre indiquant l\'identifiant de l\'image doit être numérique ;';
183
		}
223
		}
184
			
224
			
185
		if (!isset($parametres['utilisateur'])) {
225
		if (!isset($parametres['utilisateur'])) {
186
			$erreurs[] = '- paramètre "utilisateur" manquant ;';
226
			$erreurs[] = '- paramètre "utilisateur" manquant ;';
187
		}
227
		}
188
	
228
	
189
		if (!isset($parametres['protocole'])) {
229
		if (!isset($parametres['protocole'])) {
190
			$erreurs[] = '- paramètre "id_protocole" manquant ;';
230
			$erreurs[] = '- paramètre "id_protocole" manquant ;';
191
		} else {
231
		} else {
192
			if (!is_numeric($parametres['protocole'])) {
232
			if (!is_numeric($parametres['protocole'])) {
193
				$erreurs[] = '- le paramètre "protocole" doit être numérique ;';
233
				$erreurs[] = '- le paramètre "protocole" doit être numérique ;';
194
			}
234
			}
195
		}
235
		}
196
			
236
			
197
		if (!isset($parametres['valeur'])) {
237
		if (!isset($parametres['valeur'])) {
198
			$erreurs[] = '- paramètre "valeur" manquant ;';
238
			$erreurs[] = '- paramètre "valeur" manquant ;';
199
		} else {
239
		} else {
200
			if (!is_numeric($parametres['valeur'])) {
240
			if (!is_numeric($parametres['valeur'])) {
201
				$erreurs[] = '- le paramètre "valeur" doit être numérique ;';
241
				$erreurs[] = '- le paramètre "valeur" doit être numérique ;';
202
			}
242
			}
203
		}
243
		}
204
			
244
			
205
		if (!empty($erreurs)) {
245
		if (!empty($erreurs)) {
206
			$e = 'Erreur lors de la configuration : '."\n";
246
			$e = 'Erreur lors de la configuration : '."\n";
207
			$e .= implode("\n", $erreurs);
247
			$e .= implode("\n", $erreurs);
208
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
248
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
209
		}
249
		}
210
	}
250
	}
-
 
251
	
-
 
252
	public function verifierParametresSuppression($ressources, $parametres) {
-
 
253
		$erreurs = array();
-
 
254
		if (!is_numeric($ressources[0])) {
-
 
255
			$erreurs[] = '- le paramètre indiquant l\'identifiant de l\'image doit être numérique ;';
-
 
256
		}
-
 
257
		
-
 
258
		/*if (!is_numeric($parametres['id_protocole'])) {
-
 
259
			$erreurs[] = '- le paramètre indiquant l\'identifiant du vote doit être numérique ;';
-
 
260
		}*/
-
 
261
				
-
 
262
		if (!empty($erreurs)) {
-
 
263
			$e = 'Erreur lors de la configuration : '."\n";
-
 
264
			$e .= implode("\n", $erreurs);
-
 
265
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
-
 
266
		}
211
 
267
	}
212
	
268
	
213
	/**
269
	/**
214
	* Charger la clause WHERE en fonction des paramètres de masque
270
	* Charger la clause WHERE en fonction des paramètres de masque
215
	* */
271
	* */
216
	private function chargerClauseWhere() {
272
	private function chargerClauseWhere() {
217
		$where[] = 'WHERE ce_image = '.$this->proteger($this->ressources[0]);
273
		$where[] = 'WHERE ce_image = '.$this->proteger($this->ressources[0]);
218
		if (isset($this->parametres['protocole'])) {
274
		if (isset($this->parametres['protocole'])) {
219
			$where[] = 'ce_protocole = '.$this->proteger($this->parametres['protocole']);
275
			$where[] = 'ce_protocole = '.$this->proteger($this->parametres['protocole']);
220
		}
276
		}
221
		return implode(' AND ', $where);
277
		return implode(' AND ', $where);
222
	}	
278
	}	
223
	/*-------------------------------------------------------------------------------
279
	/*-------------------------------------------------------------------------------
224
								CHARGEMENT DES IMAGES 
280
								CHARGEMENT DES IMAGES 
225
	--------------------------------------------------------------------------------*/
281
	--------------------------------------------------------------------------------*/
226
	/**
282
	/**
227
	* Charger les votes pour chaque image
283
	* Charger les votes pour chaque image
228
	* */
284
	* */
229
	private function chargerVotes() {
285
	private function chargerVotes() {
230
		$requeteVotes = 'SELECT * FROM '.
286
		$requeteVotes = 'SELECT * FROM '.
231
						$this->gestionBdd->formaterTable('del_image_vote').
287
						$this->gestionBdd->formaterTable('del_image_vote').
232
						$this->chargerClauseWhere();
288
						$this->chargerClauseWhere();
233
		$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
289
		$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
234
		$votes = $this->formaterVotes($resultatsVotes);
290
		$votes = $this->formaterVotes($resultatsVotes);
235
		return $votes;
291
		return $votes;
236
	}
292
	}
237
	
293
	
238
	/**
294
	/**
239
	* Compter le nombre total d'images dans la base pour affichage dans entete.
295
	* Compter le nombre total d'images dans la base pour affichage dans entete.
240
	* */
296
	* */
241
	private function compterVotes() {
297
	private function compterVotes() {
242
		$requete = 'SELECT FOUND_ROWS() AS nbre ';
298
		$requete = 'SELECT FOUND_ROWS() AS nbre ';
243
		$resultats = $this->bdd->recuperer($requete);
299
		$resultats = $this->bdd->recuperer($requete);
244
		return (int) $resultats['nbre'];
300
		return (int) $resultats['nbre'];
245
	}	
301
	}	
246
 
302
 
247
	
303
	
248
	/*-------------------------------------------------------------------------------
304
	/*-------------------------------------------------------------------------------
249
								FORMATER ET METTRE EN FORME
305
								FORMATER ET METTRE EN FORME
250
	--------------------------------------------------------------------------------*/
306
	--------------------------------------------------------------------------------*/
251
	
307
	
252
	/**
308
	/**
253
	*  Formater une observation depuis une ligne liaison
309
	*  Formater une observation depuis une ligne liaison
254
	*  @param $liaison liaison issue de la recherche
310
	*  @param $liaison liaison issue de la recherche
255
	*  @return $observation l'observation mise en forme
311
	*  @return $observation l'observation mise en forme
256
	* */
312
	* */
257
	private function formaterVotes($votes) {
313
	private function formaterVotes($votes) {
258
		$retour = array();
314
		$retour = array();
259
		foreach ($votes as $vote) {
315
		foreach ($votes as $vote) {
260
			foreach ($vote as $p=>$valeur) {
316
			foreach ($vote as $p=>$valeur) {
261
				$retour[$vote['id_vote']][$this->mappingVotes[$p]] = $valeur;
317
				$retour[$vote['id_vote']][$this->mappingVotes[$p]] = $valeur;
262
			}
318
			}
263
		}
319
		}
264
		
320
		
265
		return $retour;
321
		return $retour;
266
	}
322
	}
267
	
323
	
268
	private function proteger($valeur) {
324
	private function proteger($valeur) {
269
		if (is_array($valeur)) {
325
		if (is_array($valeur)) {
270
			return $this->bdd->protegerTableau($valeur);
326
			return $this->bdd->protegerTableau($valeur);
271
		} else {
327
		} else {
272
			return $this->bdd->proteger($valeur);
328
			return $this->bdd->proteger($valeur);
273
		}
329
		}
274
	}
330
	}
275
}
331
}
276
?>
332
?>