Subversion Repositories eFlore/Applications.del

Rev

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

Rev 1305 Rev 1612
Line 52... Line 52...
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
	}
Line 55... Line 55...
55
 
55
 
-
 
56
	private function chargerVotes($id_commentaire) {
56
	private function chargerVotes($id_commentaire) {
57
		$id_commentaire = $this->proteger($id_commentaire);
57
		$requeteVotes = 'SELECT * FROM '.
58
		$requeteVotes = 'SELECT * '.
58
		$this->gestionBdd->formaterTable('del_commentaire_vote').
59
			'FROM del_commentaire_vote '.
59
				'WHERE ce_proposition = '.$this->proteger($id_commentaire);
60
			"WHERE ce_proposition = $id_commentaire ";
60
		$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
61
		$resultatsVotes = $this->bdd->recupererTous($requeteVotes);
61
		$votes = array();
62
		$votes = array();
62
		foreach ($resultatsVotes as $vote) {
63
		foreach ($resultatsVotes as $vote) {
63
			$votes[$vote['id_vote']] = $this->formaterVotes($vote);
64
			$votes[$vote['id_vote']] = $this->formaterVotes($vote);
64
			$utilisateur = $this->chercherUtilisateur($vote['ce_utilisateur']);
65
			$utilisateur = $this->chercherUtilisateur($vote['ce_utilisateur']);
65
			if($utilisateur) {
66
			if ($utilisateur) {
66
				$votes[$vote['id_vote']] = array_merge($votes[$vote['id_vote']], $utilisateur);
67
				$votes[$vote['id_vote']] = array_merge($votes[$vote['id_vote']], $utilisateur);
67
			}
68
			}
68
		}
69
		}
69
		return $votes;
70
		return $votes;
Line 73... Line 74...
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
	* 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
75
	* @return le tableau utilisateur
75
	* */
76
	* */
76
	private function chercherUtilisateur($id) {
77
	private function chercherUtilisateur($id) {
77
		$utilisateur = array();
78
		$utilisateur = array();
78
		$requete = "SELECT id_utilisateur as 'auteur.id', nom as 'auteur.nom', prenom as 'auteur.prenom', courriel as 'auteur.courriel' ".
79
		$requete = "SELECT id_utilisateur AS 'auteur.id', nom AS 'auteur.nom', prenom AS 'auteur.prenom', ".
-
 
80
			"courriel AS 'auteur.courriel' ".
79
						           'FROM '.$this->gestionBdd->formaterTable('del_utilisateur').
81
			'FROM del_utilisateur '.
80
								   'WHERE id_utilisateur = '.$this->bdd->proteger($id);
82
			'WHERE id_utilisateur = '.$this->bdd->proteger($id);
81
		$utilisateur = $this->bdd->recuperer($requete);
83
		$utilisateur = $this->bdd->recuperer($requete);
Line 82... Line 84...
82
 
84
 
83
		return $utilisateur;
85
		return $utilisateur;
Line 102... Line 104...
102
	*
104
	*
103
	* @return void
105
	* @return void
104
	*
106
	*
105
	* */
107
	* */
106
	public function ajouter($ressources, $parametres) {
108
	public function ajouter($ressources, $parametres) {
107
 
-
 
108
		$this->verifierParametresAjoutModif($ressources, $parametres);
109
		$this->verifierParametresAjoutModif($ressources, $parametres);
Line 109... Line 110...
109
 
110
 
110
		// Vérifie si la proposition existe, et la crée sinon
111
		// 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)
112
		// (cas du vote sur la proposition fabriquée à partir de l'observation originale)
112
		if($ressources[1] == 0) {
113
		if($ressources[1] == 0) {
113
			$ressources[1] = $this->renvoyerIdOuCreerPropositionDeterminationInitiale($ressources[0]);
114
			$ressources[1] = $this->renvoyerIdOuCreerPropositionDeterminationInitiale($ressources[0]);
Line 114... Line 115...
114
		}
115
		}
115
 
116
 
116
		$insertion = 'INSERT INTO del_commentaire_vote '.
117
		$insertion = 'INSERT INTO del_commentaire_vote '.
117
							'(ce_proposition , ce_utilisateur , valeur , date) '.
118
			'(ce_proposition , ce_utilisateur , valeur , date) '.
118
							'VALUES ('.$this->proteger($ressources[1]).','.$this->proteger($parametres['utilisateur']).','.
119
			'VALUES ('.$this->proteger($ressources[1]).','.$this->proteger($parametres['utilisateur']).','.
119
							$this->proteger($parametres['valeur']).', NOW());';
120
			$this->proteger($parametres['valeur']).', NOW());';
120
		$resultatsVotes = $this->bdd->requeter($insertion);
121
		$resultatsVotes = $this->bdd->requeter($insertion);
121
		if ($resultatsVotes == false) {
122
		if ($resultatsVotes == false) {
122
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
123
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
123
		} else {
124
		} else {
124
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_CREATION_OK);
125
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_CREATION_OK);
Line 125... Line 126...
125
		}
126
		}
126
	}
-
 
127
 
127
	}
128
	private function renvoyerIdPropositionObservation($id_observation) {
128
 
129
 
129
	private function renvoyerIdPropositionObservation($id_observation) {
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
Line 132... Line 132...
132
		$requete_selection_obs = 'SELECT ce_utilisateur, nom_sel '.
132
		$requete_selection_obs = 'SELECT ce_utilisateur, nom_sel '.
Line 133... Line 133...
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
Line 140... Line 141...
140
			// nom sélectionné est bien la proposition composée à partir de l'obs originale
141
			$requete_selection_comm = 'SELECT id_commentaire '.
-
 
142
				'FROM del_commentaire '.
141
			$requete_selection_comm = 'SELECT id_commentaire FROM del_commentaire '.
143
				'WHERE ce_observation = '.$this->proteger($id_observation).' '.
-
 
144
				' AND nom_sel = '.$this->proteger($obs['nom_sel']).' AND '.
-
 
145
				' ce_utilisateur = '.$this->proteger($obs['ce_utilisateur']);
142
			           'WHERE ce_observation = '.$this->proteger($id_observation).' '.
146
 
Line 143... Line 147...
143
			           ' AND nom_sel = '.$this->proteger($obs['nom_sel']).' AND '.
147
			$commentaire = $this->bdd->recuperer($requete_selection_comm);
144
					   ' ce_utilisateur = '.$this->proteger($obs['ce_utilisateur']);
148
			$id_commentaire = null;
Line 145... Line 149...
145
 
149
			if (is_array($commentaire) && $commentaire['id_commentaire'] != null) {
146
			$commentaire = $this->bdd->recuperer($requete_selection_comm);
150
				$id_commentaire = $commentaire['id_commentaire'];
147
			$id_commentaire = (is_array($commentaire) && $commentaire['id_commentaire'] != null) ? $commentaire['id_commentaire'] : null;
151
			}
148
		}
152
		}
149
 
153
 
-
 
154
		return $id_commentaire;
-
 
155
	}
150
		return $id_commentaire;
156
 
151
	}
157
	private function renvoyerIdOuCreerPropositionDeterminationInitiale($id_observation) {
152
 
158
		$proposition_existe = $this->propositionInitialeExiste($id_observation);
153
	private function renvoyerIdOuCreerPropositionDeterminationInitiale($id_observation) {
159
		if(!$proposition_existe) {
154
		$proposition_existe = $this->propositionInitialeExiste($id_observation);
160
			$id_proposition = $this->creerPropositionAPartirObservation($id_observation);
155
		if(!$proposition_existe) {
161
		} else {
156
			$id_proposition = $this->creerPropositionAPartirObservation($id_observation);
162
			$requete = 'SELECT id_commentaire '.
Line 157... Line 163...
157
		} else {
163
				'FROM del_commentaire '.
158
			$requete = "SELECT id_commentaire FROM del_commentaire WHERE ce_observation = ".$id_observation." ".
-
 
-
 
164
				"WHERE ce_observation = $id_observation ".
-
 
165
				'AND proposition_initiale = 1 ';
159
					   "AND proposition_initiale = 1";
166
			$resultat = $this->bdd->recuperer($requete);
160
			$resultat = $this->bdd->recuperer($requete);
167
			$id_proposition = $resultat['id_commentaire'];
161
			$id_proposition = $resultat['id_commentaire'];
168
		}
162
		}
169
		return $id_proposition;
163
		return $id_proposition;
170
	}
Line 164... Line 171...
164
	}
171
 
165
 
-
 
166
	private function propositionInitialeExiste($id_observation) {
172
	private function propositionInitialeExiste($id_observation) {
167
 
173
		$requete = 'SELECT COUNT(*) >= 1 AS existe '.
168
		$requete = "SELECT COUNT(*) >= 1 as existe FROM del_commentaire WHERE ce_observation = ".$id_observation." ".
174
			'FROM del_commentaire '.
169
												"AND proposition_initiale = 1";
175
			"WHERE ce_observation = $id_observation ".
170
		$resultat = $this->bdd->recuperer($requete);
176
			'AND proposition_initiale = 1 ';
171
		return $resultat['existe'] == 1;
177
		$resultat = $this->bdd->recuperer($requete);
172
	}
178
		return $resultat['existe'] == 1;
173
 
-
 
174
	private function creerPropositionAPartirObservation($id_observation) {
179
	}
175
 
180
 
Line 176... Line 181...
176
		$insertion = 'INSERT IGNORE INTO del_commentaire '.
181
	private function creerPropositionAPartirObservation($id_observation) {
-
 
182
		$insertion = 'INSERT IGNORE INTO del_commentaire '.
177
			'(ce_observation, ce_utilisateur, utilisateur_prenom, utilisateur_nom, utilisateur_courriel, '.
183
			'(ce_observation, ce_utilisateur, utilisateur_prenom, utilisateur_nom, utilisateur_courriel, '.
178
			'nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, nom_referentiel, date, proposition_initiale) '.
184
			'nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, nom_referentiel, date, proposition_initiale) '.
179
			'SELECT id_observation, ce_utilisateur, prenom, nom, '.
-
 
180
			'		courriel, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, '.
185
			'SELECT id_observation, ce_utilisateur, prenom, nom, '.
181
			"		nt, famille, 'bdtfx_v1', NOW(), '1' ".
186
			'		courriel, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, '.
Line 182... Line 187...
182
			'FROM del_observation do '.
187
			"		nt, famille, 'bdtfx_v1', NOW(), '1' ".
183
				' LEFT JOIN del_utilisateur du ON '.
188
			'FROM del_observation do '.
Line 198... Line 203...
198
	*
203
	*
199
	* @return void
204
	* @return void
200
	*
205
	*
201
	* */
206
	* */
202
	public function modifier($ressources, $parametres) {
207
	public function modifier($ressources, $parametres) {
203
 
-
 
204
		$this->verifierParametresAjoutModif($ressources, $parametres);
208
		$this->verifierParametresAjoutModif($ressources, $parametres);
Line 205... Line 209...
205
 
209
 
206
		// Si l'identifiant de proposition vaut 0, c'est un vote sur une proposition
210
		// Si l'identifiant de proposition vaut 0, c'est un vote sur une proposition
207
		// fabriquée à partir de l'observation originale, dont on doit obtenir l'id
211
		// fabriquée à partir de l'observation originale, dont on doit obtenir l'id
Line 216... Line 220...
216
				$ressources[1] = $id_proposition;
220
				$ressources[1] = $id_proposition;
217
			}
221
			}
218
		}
222
		}
Line 219... Line 223...
219
 
223
 
220
		$modification = 'UPDATE del_commentaire_vote '.
224
		$modification = 'UPDATE del_commentaire_vote '.
221
						'SET valeur ='.$this->proteger($parametres['valeur']).', '.
225
			'SET valeur ='.$this->proteger($parametres['valeur']).', '.
222
						'date = NOW() '.
-
 
223
						'WHERE '.
226
			'date = NOW() '.
224
							'ce_proposition = '.$this->proteger($ressources[1]).' AND '.
227
			'WHERE ce_proposition = '.$this->proteger($ressources[1]).' '.
Line 225... Line 228...
225
							'ce_utilisateur = '.$this->proteger($parametres['utilisateur']);
228
			'AND ce_utilisateur = '.$this->proteger($parametres['utilisateur']);
226
 
229
 
227
		$resultatsVotes = $this->bdd->requeter($modification);
230
		$resultatsVotes = $this->bdd->requeter($modification);
228
		if ($resultatsVotes == false) {
231
		if ($resultatsVotes == false) {