Subversion Repositories eFlore/Applications.del

Rev

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

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