Subversion Repositories eFlore/Applications.del

Rev

Rev 1209 | Rev 1305 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1209 Rev 1252
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Les web service permet d'ajouter ou de modifier les votes associés aux propositions d'une observation
4
 * Les web service permet d'ajouter ou de modifier les votes associés aux propositions d'une observation
5
 *
5
 *
6
 * @category	php 5.2
6
 * @category	php 5.2
7
 * @package	del
7
 * @package	del
8
 * @subpackage images
8
 * @subpackage images
9
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
10
 * @copyright	Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
10
 * @copyright	Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
11
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
12
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
13
 * @version	$Id: Bdd.php 403 2012-02-22 14:35:20Z gduche $
13
 * @version	$Id: Bdd.php 403 2012-02-22 14:35:20Z gduche $
14
 * @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
14
 * @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
15
 */
15
 */
16
 
16
 
17
class VoteObservation extends RestService {
17
class VoteObservation extends RestService {
18
	protected $conteneur;
18
	protected $conteneur;
19
	protected $gestionBdd;
19
	protected $gestionBdd;
20
	protected $bdd;
20
	protected $bdd;
21
	protected $navigation;
21
	protected $navigation;
22
	
22
	
23
	
23
	
24
	public function __construct(Conteneur $conteneur = null) {
24
	public function __construct(Conteneur $conteneur = null) {
25
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
25
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
26
		$this->gestionBdd = $conteneur->getGestionBdd();
26
		$this->gestionBdd = $conteneur->getGestionBdd();
27
		$this->bdd = $this->gestionBdd->getBdd();
27
		$this->bdd = $this->gestionBdd->getBdd();
28
		$this->navigation = $conteneur->getNavigation();
28
		$this->navigation = $conteneur->getNavigation();
29
		$this->conteneur->chargerConfiguration('config_mapping_votes.ini');
29
		$this->conteneur->chargerConfiguration('config_mapping_votes.ini');
30
	}
30
	}
31
	
31
	
32
	/**
32
	/**
33
	* Configuration du service en fonction du fichier de config config_del.ini
33
	* Configuration du service en fonction du fichier de config config_del.ini
34
	* */
34
	* */
35
	private function configurer() {
35
	private function configurer() {
36
		$this->mappingVotes = $this->conteneur->getParametre('mapping_votes');
36
		$this->mappingVotes = $this->conteneur->getParametre('mapping_votes');
37
	}
37
	}
38
	
38
	
39
	/**
39
	/**
40
	 * Méthode seulement présente pour interdire proprement l'accès à la consultation
40
	 * Méthode seulement présente pour interdire proprement l'accès à la consultation
41
	 * */
41
	 * */
42
	public function consulter($ressources, $parametres) {	
42
	public function consulter($ressources, $parametres) {	
43
 
43
 
44
		$this->configurer();
44
		$this->configurer();
45
		
45
		
46
		//TODO: faut il vérifier quelque chose, si on n'a pas renseigné les valeurs correctement
46
		//TODO: faut il vérifier quelque chose, si on n'a pas renseigné les valeurs correctement
47
		// dans ressource, le service n'est même pas appelé
47
		// dans ressource, le service n'est même pas appelé
48
		$votes = $this->chargerVotes($ressources[1]);
48
		$votes = $this->chargerVotes($ressources[1]);
49
		$this->conteneur->getNavigation()->setTotal(count($votes));
49
		$this->conteneur->getNavigation()->setTotal(count($votes));
50
		// Mettre en forme le résultat et l'envoyer pour affichage
50
		// Mettre en forme le résultat et l'envoyer pour affichage
51
		$resultat = new ResultatService();
51
		$resultat = new ResultatService();
52
		$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $votes);
52
		$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $votes);
53
		return $resultat;
53
		return $resultat;
54
	}
54
	}
55
	
55
	
56
	private function chargerVotes($id_commentaire) {
56
	private function chargerVotes($id_commentaire) {
57
		$requeteVotes = 'SELECT * FROM '.
57
		$requeteVotes = 'SELECT * FROM '.
58
		$this->gestionBdd->formaterTable('del_commentaire_vote').
58
		$this->gestionBdd->formaterTable('del_commentaire_vote').
59
				'WHERE ce_proposition = '.$this->proteger($id_commentaire);
59
				'WHERE ce_proposition = '.$this->proteger($id_commentaire);
60
		$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
60
		$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
61
		$votes = array();
61
		$votes = array();
62
		foreach ($resultatsVotes as $vote) {
62
		foreach ($resultatsVotes as $vote) {
63
			$votes[$vote['id_vote']] = $this->formaterVotes($vote);
63
			$votes[$vote['id_vote']] = $this->formaterVotes($vote);
64
			$utilisateur = $this->chercherUtilisateur($vote['ce_utilisateur']);
64
			$utilisateur = $this->chercherUtilisateur($vote['ce_utilisateur']);
65
			if($utilisateur) {
65
			if($utilisateur) {
66
				$votes[$vote['id_vote']] = array_merge($votes[$vote['id_vote']], $utilisateur);
66
				$votes[$vote['id_vote']] = array_merge($votes[$vote['id_vote']], $utilisateur);
67
			}
67
			}
68
		}
68
		}
69
		return $votes;
69
		return $votes;
70
	}
70
	}
71
	
71
	
72
	/**
72
	/**
73
	* Trouver l'utilisateur en fonction des paramètres ou de la base de données si le nom, prénom et courriel ne sont pas donnés
73
	* Trouver l'utilisateur en fonction des paramètres ou de la base de données si le nom, prénom et courriel ne sont pas donnés
74
	* @return le tableau utilisateur
74
	* @return le tableau utilisateur
75
	* */
75
	* */
76
	private function chercherUtilisateur($id) {
76
	private function chercherUtilisateur($id) {
77
		$utilisateur = array();
77
		$utilisateur = array();
78
		$requete = "SELECT id_utilisateur as 'auteur.id', nom as 'auteur.nom', prenom as 'auteur.prenom', courriel as 'auteur.courriel' ".
78
		$requete = "SELECT id_utilisateur as 'auteur.id', nom as 'auteur.nom', prenom as 'auteur.prenom', courriel as 'auteur.courriel' ".
79
						           'FROM '.$this->gestionBdd->formaterTable('del_utilisateur').
79
						           'FROM '.$this->gestionBdd->formaterTable('del_utilisateur').
80
								   'WHERE id_utilisateur = '.$this->bdd->proteger($id);
80
								   'WHERE id_utilisateur = '.$this->bdd->proteger($id);
81
		$utilisateur = $this->bdd->recuperer($requete);
81
		$utilisateur = $this->bdd->recuperer($requete);
82
	
82
	
83
		return $utilisateur;
83
		return $utilisateur;
84
	}
84
	}
85
	
85
	
86
	/**
86
	/**
87
	*  Formater un vote en fonction du fichier de configuration config_votes.ini
87
	*  Formater un vote en fonction du fichier de configuration config_votes.ini
88
	*  @param $votes array()
88
	*  @param $votes array()
89
	* */
89
	* */
90
	private function formaterVotes($vote) {
90
	private function formaterVotes($vote) {
91
		$retour = array();
91
		$retour = array();
92
		foreach ($vote as $param => $valeur) {
92
		foreach ($vote as $param => $valeur) {
93
			$retour[$this->mappingVotes[$param]] = $valeur;
93
			$retour[$this->mappingVotes[$param]] = $valeur;
94
		}
94
		}
95
		return $retour;
95
		return $retour;
96
	}
96
	}
97
	
97
	
98
	/**
98
	/**
99
	* Ajoute un vote à une proposition grâce aux informations passées en paramètres
99
	* Ajoute un vote à une proposition grâce aux informations passées en paramètres
100
	* @param array $ressources tableau des informations contenues dans l'url après le nom du service
100
	* @param array $ressources tableau des informations contenues dans l'url après le nom du service
101
	* @param array $parametres contenu du post
101
	* @param array $parametres contenu du post
102
	* 
102
	* 
103
	* @return void
103
	* @return void
104
	*
104
	*
105
	* */
105
	* */
106
	public function ajouter($ressources, $parametres) {
106
	public function ajouter($ressources, $parametres) {
107
 
107
 
108
		$this->verifierParametresAjoutModif($ressources, $parametres);
108
		$this->verifierParametresAjoutModif($ressources, $parametres);
109
 
109
 
110
		// Vérifie si la proposition existe, et la crée sinon
110
		// Vérifie si la proposition existe, et la crée sinon
111
		// (cas du vote sur la proposition fabriquée à partir de l'observation originale)
111
		// (cas du vote sur la proposition fabriquée à partir de l'observation originale)
112
		if($ressources[1] == 0) {
112
		if($ressources[1] == 0) {
113
			$ressources[1] = $this->creerPropositionAPartirObservation($ressources[0]);
113
			$ressources[1] = $this->renvoyerIdOuCreerPropositionDeterminationInitiale($ressources[0]);
114
		}
114
		}
115
		
115
		
116
		$insertion = 'INSERT INTO del_commentaire_vote '.
116
		$insertion = 'INSERT INTO del_commentaire_vote '.
117
							'(ce_proposition , ce_utilisateur , valeur , date) '.
117
							'(ce_proposition , ce_utilisateur , valeur , date) '.
118
							'VALUES ('.$this->proteger($ressources[1]).','.$this->proteger($parametres['utilisateur']).','.
118
							'VALUES ('.$this->proteger($ressources[1]).','.$this->proteger($parametres['utilisateur']).','.
119
							$this->proteger($parametres['valeur']).', NOW());';
119
							$this->proteger($parametres['valeur']).', NOW());';
120
		$resultatsVotes = $this->bdd->requeter($insertion);
120
		$resultatsVotes = $this->bdd->requeter($insertion);
121
		if ($resultatsVotes == false) {
121
		if ($resultatsVotes == false) {
122
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
122
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
123
		} else {
123
		} else {
124
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_CREATION_OK);
124
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_CREATION_OK);
125
		}
125
		}
126
	}
126
	}
127
	
127
	
128
	private function renvoyerIdPropositionObservation($id_observation) {
128
	private function renvoyerIdPropositionObservation($id_observation) {
129
		
129
		
130
		$id_commentaire = null;
130
		$id_commentaire = null;
131
		// Récupération de l'utilisateur + nom sel de l'observation originale
131
		// Récupération de l'utilisateur + nom sel de l'observation originale
132
		$requete_selection_obs = 'SELECT ce_utilisateur, nom_sel '.
132
		$requete_selection_obs = 'SELECT ce_utilisateur, nom_sel '.
133
		                           'FROM del_observation '.
133
		                           'FROM del_observation '.
134
		                           'WHERE id_observation ='.$this->proteger($id_observation);
134
		                           'WHERE id_observation ='.$this->proteger($id_observation);
135
		
135
		
136
		$obs = $this->bdd->recuperer($requete_selection_obs);
136
		$obs = $this->bdd->recuperer($requete_selection_obs);
137
	
137
	
138
		if(is_array($obs) && isset($obs['ce_utilisateur'])) {
138
		if(is_array($obs) && isset($obs['ce_utilisateur'])) {
139
			// On considère que la proposition faite par le même utilisateur et ayant le même
139
			// On considère que la proposition faite par le même utilisateur et ayant le même
140
			// nom sélectionné est bien la proposition composée à partir de l'obs originale 
140
			// nom sélectionné est bien la proposition composée à partir de l'obs originale 
141
			$requete_selection_comm = 'SELECT id_commentaire FROM del_commentaire '.
141
			$requete_selection_comm = 'SELECT id_commentaire FROM del_commentaire '.
142
			           'WHERE ce_observation = '.$this->proteger($id_observation).' '.
142
			           'WHERE ce_observation = '.$this->proteger($id_observation).' '.
143
			           ' AND nom_sel = '.$this->proteger($obs['nom_sel']).' AND '.
143
			           ' AND nom_sel = '.$this->proteger($obs['nom_sel']).' AND '.
144
					   ' ce_utilisateur = '.$this->proteger($obs['ce_utilisateur']);
144
					   ' ce_utilisateur = '.$this->proteger($obs['ce_utilisateur']);
145
			
145
			
146
			$commentaire = $this->bdd->recuperer($requete_selection_comm);
146
			$commentaire = $this->bdd->recuperer($requete_selection_comm);
147
			$id_commentaire = (is_array($commentaire) && $commentaire['id_commentaire'] != null) ? $commentaire['id_commentaire'] : null;
147
			$id_commentaire = (is_array($commentaire) && $commentaire['id_commentaire'] != null) ? $commentaire['id_commentaire'] : null;
148
		}	
148
		}	
149
		
149
		
150
		return $id_commentaire;
150
		return $id_commentaire;
151
	}
151
	}
-
 
152
	
-
 
153
	private function renvoyerIdOuCreerPropositionDeterminationInitiale($id_observation) {
-
 
154
		$proposition_existe = $this->propositionInitialeExiste($id_observation);
-
 
155
		if(!$proposition_existe) {
-
 
156
			$id_proposition = $this->creerPropositionAPartirObservation($id_observation);
-
 
157
		} else {
-
 
158
			$requete = "SELECT id_commentaire FROM del_commentaire WHERE ce_observation = ".$id_observation." ".
-
 
159
					   "AND proposition_initiale = 1";
-
 
160
			$resultat = $this->bdd->recuperer($requete);
-
 
161
			$id_proposition = $resultat['id_commentaire'];
-
 
162
		}
-
 
163
		return $id_proposition;
-
 
164
	}
-
 
165
	
-
 
166
	private function propositionInitialeExiste($id_observation) {
-
 
167
	
-
 
168
		$requete = "SELECT COUNT(*) >= 1 as existe FROM del_commentaire WHERE ce_observation = ".$id_observation." ".
-
 
169
												"AND proposition_initiale = 1";		
-
 
170
		$resultat = $this->bdd->recuperer($requete);
-
 
171
		return $resultat['existe'] == 1;
-
 
172
	}
152
	
173
	
153
	private function creerPropositionAPartirObservation($id_observation) {
174
	private function creerPropositionAPartirObservation($id_observation) {
154
				
175
				
155
		$insertion = 'INSERT IGNORE INTO del_commentaire '.
176
		$insertion = 'INSERT IGNORE INTO del_commentaire '.
156
			'(ce_observation, ce_utilisateur, utilisateur_prenom, utilisateur_nom, utilisateur_courriel, '.
177
			'(ce_observation, ce_utilisateur, utilisateur_prenom, utilisateur_nom, utilisateur_courriel, '.
157
			'nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, nom_referentiel, proposition_initiale) '.
178
			'nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, nom_referentiel, proposition_initiale) '.
158
			'SELECT id_observation, ce_utilisateur, prenom, nom, '.
179
			'SELECT id_observation, ce_utilisateur, prenom, nom, '.
159
			'		courriel, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, '.
180
			'		courriel, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, '.
160
			'		nt, famille, "bdtfx_v1", "1" '.
181
			'		nt, famille, "bdtfx_v1", "1" '.
161
			'FROM del_observation do '.
182
			'FROM del_observation do '.
162
				' LEFT JOIN del_utilisateur du ON '.
183
				' LEFT JOIN del_utilisateur du ON '.
163
				'do.ce_utilisateur = du.id_utilisateur '.
184
				'do.ce_utilisateur = du.id_utilisateur '.
164
			'WHERE id_observation = '.$this->proteger($id_observation);
185
			'WHERE id_observation = '.$this->proteger($id_observation);
165
				
186
				
166
		$resultat = $this->bdd->requeter($insertion);
187
		$resultat = $this->bdd->requeter($insertion);
167
		// Attention à l'abstraction utilisée, récupérer le dernier id en mysql ou msqli ça marche bien, mais pour d'autres moins
188
		// Attention à l'abstraction utilisée, récupérer le dernier id en mysql ou msqli ça marche bien, mais pour d'autres moins
168
		$id = $this->bdd->recupererIdDernierAjout();
189
		$id = $this->bdd->recupererIdDernierAjout();
169
		
190
		
170
		return $id;
191
		return $id;
171
	}
192
	}
172
	
193
	
173
	/**
194
	/**
174
	* Modifie un vote associé à une proposition grâce aux informations passées en paramètres
195
	* Modifie un vote associé à une proposition grâce aux informations passées en paramètres
175
	* @param array $ressources tableau des informations contenues dans l'url après le nom du service
196
	* @param array $ressources tableau des informations contenues dans l'url après le nom du service
176
	* @param array $parametres contenu du post
197
	* @param array $parametres contenu du post
177
	*
198
	*
178
	* @return void
199
	* @return void
179
	*
200
	*
180
	* */
201
	* */
181
	public function modifier($ressources, $parametres) {
202
	public function modifier($ressources, $parametres) {
182
		
203
		
183
		$this->verifierParametresAjoutModif($ressources, $parametres);
204
		$this->verifierParametresAjoutModif($ressources, $parametres);
184
		
205
		
185
		// Si l'identifiant de proposition vaut 0, c'est un vote sur une proposition
206
		// Si l'identifiant de proposition vaut 0, c'est un vote sur une proposition
186
		// fabriquée à partir de l'observation originale, dont on doit obtenir l'id
207
		// fabriquée à partir de l'observation originale, dont on doit obtenir l'id
187
		// (cas où l'on vient de voter pour celle et cela a créé la proposition, puis 
208
		// (cas où l'on vient de voter pour celle et cela a créé la proposition, puis 
188
		// on revote pour celle ci en changeant d'avis sans recharger la page)
209
		// on revote pour celle ci en changeant d'avis sans recharger la page)
189
		if($ressources[1] == 0) {
210
		if($ressources[1] == 0) {
190
			$id_proposition = $this->renvoyerIdPropositionObservation($ressources[0]);
211
			$id_proposition = $this->renvoyerIdOuCreerPropositionDeterminationInitiale($ressources[0]);
191
			if($id_proposition == null) {
212
			if($id_proposition == null) {
192
				$this->envoyerMessageErreurIdProposition();
213
				$this->envoyerMessageErreurIdProposition();
193
				exit;
214
				exit;
194
			} else {
215
			} else {
195
				$ressources[1] = $id_proposition;
216
				$ressources[1] = $id_proposition;
196
			}
217
			}
197
		}
218
		}
198
		
219
		
199
		$modification = 'UPDATE del_commentaire_vote '.
220
		$modification = 'UPDATE del_commentaire_vote '.
200
						'SET valeur ='.$this->proteger($parametres['valeur']).', '.
221
						'SET valeur ='.$this->proteger($parametres['valeur']).', '.
201
						'date = NOW() '.
222
						'date = NOW() '.
202
						'WHERE '.
223
						'WHERE '.
203
							'ce_proposition = '.$this->proteger($ressources[1]).' AND '.
224
							'ce_proposition = '.$this->proteger($ressources[1]).' AND '.
204
							'ce_utilisateur = '.$this->proteger($parametres['utilisateur']);
225
							'ce_utilisateur = '.$this->proteger($parametres['utilisateur']);
205
		
226
		
206
		$resultatsVotes = $this->bdd->requeter($modification);
227
		$resultatsVotes = $this->bdd->requeter($modification);
207
		if ($resultatsVotes == false) {
228
		if ($resultatsVotes == false) {
208
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
229
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
209
		} else {
230
		} else {
210
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_OK);
231
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_OK);
211
		}
232
		}
212
	}
233
	}
213
	
234
	
214
	public function verifierParametresAjoutModif($ressources, $parametres) {
235
	public function verifierParametresAjoutModif($ressources, $parametres) {
215
		$erreurs = array();
236
		$erreurs = array();
216
		if (!is_numeric($ressources[1])) {
237
		if (!is_numeric($ressources[1])) {
217
			$erreurs[] = '- le paramètre indiquant l\'identifiant de la proposition doit être numérique ;';
238
			$erreurs[] = '- le paramètre indiquant l\'identifiant de la proposition doit être numérique ;';
218
		}
239
		}
219
			
240
			
220
		if (!isset($parametres['utilisateur'])) {
241
		if (!isset($parametres['utilisateur'])) {
221
			$erreurs[] = '- paramètre "utilisateur" manquant ;';
242
			$erreurs[] = '- paramètre "utilisateur" manquant ;';
222
		}
243
		}
223
			
244
			
224
		if (!isset($parametres['valeur'])) {
245
		if (!isset($parametres['valeur'])) {
225
			$erreurs[] = '- paramètre "valeur" manquant ;';
246
			$erreurs[] = '- paramètre "valeur" manquant ;';
226
		} else {
247
		} else {
227
			if (!is_numeric($parametres['valeur'])) {
248
			if (!is_numeric($parametres['valeur'])) {
228
				$erreurs[] = '- le paramètre "valeur" doit être numérique ;';
249
				$erreurs[] = '- le paramètre "valeur" doit être numérique ;';
229
			} elseif($parametres['valeur'] != 0 && $parametres['valeur'] != 1) {
250
			} elseif($parametres['valeur'] != 0 && $parametres['valeur'] != 1) {
230
				$erreurs[] = '- le paramètre "valeur" ne peut prendre que la valeur 0 ou 1 ;';
251
				$erreurs[] = '- le paramètre "valeur" ne peut prendre que la valeur 0 ou 1 ;';
231
			}
252
			}
232
		}
253
		}
233
			
254
			
234
		if (!empty($erreurs)) {
255
		if (!empty($erreurs)) {
235
			$e = 'Erreur lors de la configuration : '."\n";
256
			$e = 'Erreur lors de la configuration : '."\n";
236
			$e .= implode("\n", $erreurs);
257
			$e .= implode("\n", $erreurs);
237
			RestServeur::ajouterMessage($e);
258
			RestServeur::ajouterMessage($e);
238
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
259
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
239
		}
260
		}
240
	}
261
	}
241
	
262
	
242
	protected function envoyerMessageErreurIdProposition() {
263
	protected function envoyerMessageErreurIdProposition() {
243
		$erreurs = array('Aucun identifiant de proposition n\'est lié à cette observation');
264
		$erreurs = array('Aucun identifiant de proposition n\'est lié à cette observation');
244
		$e = 'Erreur lors de la configuration : '."\n";
265
		$e = 'Erreur lors de la configuration : '."\n";
245
		$e .= implode("\n", $erreurs);
266
		$e .= implode("\n", $erreurs);
246
		RestServeur::ajouterMessage($e);
267
		RestServeur::ajouterMessage($e);
247
		throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
268
		throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
248
	}
269
	}
249
	
270
	
250
	protected function proteger($valeur) {
271
	protected function proteger($valeur) {
251
		if (is_array($valeur)) {
272
		if (is_array($valeur)) {
252
			return $this->bdd->protegerTableau($valeur);
273
			return $this->bdd->protegerTableau($valeur);
253
		} else {
274
		} else {
254
			return $this->bdd->proteger($valeur);
275
			return $this->bdd->proteger($valeur);
255
		}
276
		}
256
	}
277
	}
257
}
278
}
258
?>
279
?>