Subversion Repositories eFlore/Applications.del

Rev

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

Rev 855 Rev 871
Line 24... Line 24...
24
		$this->gestionBdd = $conteneur->getGestionBdd();
24
		$this->gestionBdd = $conteneur->getGestionBdd();
25
		$this->bdd = $this->gestionBdd->getBdd();
25
		$this->bdd = $this->gestionBdd->getBdd();
26
	}
26
	}
Line 27... Line 27...
27
	
27
	
28
	/**
-
 
29
	 * Méthode principale de la classe.
28
	/**
30
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
-
 
31
	 * pour l'afficher.
-
 
32
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
-
 
33
	 * @param array $parametres les paramètres situés après le ? dans l'url
29
	 * Méthode seulement présente pour interdire proprement l'accès à la consultation
34
	 * */
30
	 * */
35
	public function consulter($ressources, $parametres) {
31
	public function consulter($ressources, $parametres) {
36
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
32
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
37
		RestServeur::ajouterMessage("Le service 'observation/#id/#id_proposition/vote' n'autorise pas la consultation.");
33
		RestServeur::ajouterMessage("Le service 'observation/#id/#id_proposition/vote' n'autorise pas la consultation.");
Line -... Line 34...
-
 
34
	}
-
 
35
	
-
 
36
	/**
-
 
37
	* Ajoute un vote à une proposition grâce aux informations passées en paramètres
-
 
38
	* @param array $ressources tableau des informations contenues dans l'url après le nom du service
-
 
39
	* @param array $parametres contenu du post
-
 
40
	* 
-
 
41
	* @return void
38
	}
42
	*
39
	
43
	* */
40
	public function ajouter($ressources, $parametres) {
-
 
41
		
-
 
42
		//TODO: vérifier si la proposition existe, et la créer sinon
-
 
43
		// (cas du vote sur la proposition fabriquée à partir de l'observation originale)
44
	public function ajouter($ressources, $parametres) {
-
 
45
 
-
 
46
		$this->verifierParametresAjoutModif($ressources, $parametres);
-
 
47
 
-
 
48
		// Vérifie si la proposition existe, et la crée sinon
-
 
49
		// (cas du vote sur la proposition fabriquée à partir de l'observation originale)
-
 
50
		if($ressources[1] == 0) {
Line 44... Line 51...
44
		
51
			$ressources[1] = $this->creerPropositionAPartirObservation($ressources[0]);
45
		$this->verifierParametresAjoutModif($ressources, $parametres);
52
		}
46
		
53
		
47
		$insertion = 'INSERT INTO del_commentaire_vote '.
54
		$insertion = 'INSERT INTO del_commentaire_vote '.
Line 54... Line 61...
54
		} else {
61
		} else {
55
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_CREATION_OK);
62
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_CREATION_OK);
56
		}
63
		}
57
	}
64
	}
Line -... Line 65...
-
 
65
	
-
 
66
	private function renvoyerIdPropositionObservation($id_observation) {
-
 
67
		
-
 
68
		$id_commentaire = null;
-
 
69
		// Récupération de l'utilisateur + nom sel de l'observation originale
-
 
70
		$requete_selection_obs = 'SELECT ce_utilisateur, nom_sel '.
-
 
71
		                           'FROM del_observation '.
-
 
72
		                           'WHERE id_observation ='.$this->proteger($id_observation);
-
 
73
		
-
 
74
		$obs = $this->bdd->recuperer($requete_selection_obs);
-
 
75
	
-
 
76
		if(is_array($obs) && isset($obs['ce_utilisateur'])) {
-
 
77
			// On considère que la proposition faite par le même utilisateur et ayant le même
-
 
78
			// nom sélectionné est bien la proposition composée à partir de l'obs originale 
-
 
79
			$requete_selection_comm = 'SELECT id_commentaire FROM del_commentaire '.
-
 
80
			           'WHERE ce_observation = '.$this->proteger($id_observation).' '.
-
 
81
			           ' AND nom_sel = '.$this->proteger($obs['nom_sel']).' AND '.
-
 
82
					   ' ce_utilisateur = '.$this->proteger($obs['ce_utilisateur']);
-
 
83
			
-
 
84
			$commentaire = $this->bdd->recuperer($requete_selection_comm);
-
 
85
			$id_commentaire = (is_array($commentaire) && $commentaire['id_commentaire'] != null) ? $commentaire['id_commentaire'] : null;
-
 
86
		}	
-
 
87
		
-
 
88
		return $id_commentaire;
-
 
89
	}
-
 
90
	
-
 
91
	private function creerPropositionAPartirObservation($id_observation) {
-
 
92
				
-
 
93
		$insertion = 'INSERT IGNORE INTO del_commentaire '.
-
 
94
			'(ce_observation, ce_utilisateur, utilisateur_prenom, utilisateur_nom, utilisateur_courriel, '.
-
 
95
			'nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, nt, famille, nom_referentiel) '.
-
 
96
			'SELECT id_observation, ce_utilisateur, prenom, nom, '.
-
 
97
			'		courriel, nom_sel, nom_sel_nn, nom_ret, nom_ret_nn, '.
-
 
98
			'		nt, famille, "bdtfx_v1" '.
-
 
99
			'FROM del_observation do '.
-
 
100
				' LEFT JOIN del_utilisateur du ON '.
-
 
101
				'do.ce_utilisateur = du.id_utilisateur '.
-
 
102
			'WHERE id_observation = '.$this->proteger($id_observation);
-
 
103
				
-
 
104
		$resultat = $this->bdd->requeter($insertion);
-
 
105
		// Attention à l'abstraction utilisée, récupérer le dernier id en mysql ou msqli ça marche bien, mais pour d'autres moins
-
 
106
		$id = $this->bdd->recupererIdDernierAjout();
-
 
107
		
-
 
108
		return $id;
-
 
109
	}
-
 
110
	
-
 
111
	/**
-
 
112
	* Modifie un vote associé à une proposition grâce aux informations passées en paramètres
-
 
113
	* @param array $ressources tableau des informations contenues dans l'url après le nom du service
-
 
114
	* @param array $parametres contenu du post
-
 
115
	*
-
 
116
	* @return void
-
 
117
	*
58
	
118
	* */
Line 59... Line 119...
59
	public function modifier($ressources, $parametres) {
119
	public function modifier($ressources, $parametres) {
Line -... Line 120...
-
 
120
		
-
 
121
		$this->verifierParametresAjoutModif($ressources, $parametres);
-
 
122
		
-
 
123
		// Si l'identifiant de proposition vaut 0, c'est un vote sur une proposition
-
 
124
		// fabriquée à partir de l'observation originale, dont on doit obtenir l'id
-
 
125
		// (cas où l'on vient de voter pour celle et cela a créé la proposition, puis 
-
 
126
		// on revote pour celle ci en changeant d'avis sans recharger la page)
-
 
127
		if($ressources[1] == 0) {
-
 
128
			$id_proposition = $this->renvoyerIdPropositionObservation($ressources[0]);
-
 
129
			if($id_proposition == null) {
-
 
130
				$this->envoyerMessageErreurIdProposition();
-
 
131
				exit;
-
 
132
			} else {
-
 
133
				$ressources[1] = $id_proposition;
60
		
134
			}
61
		$this->verifierParametresAjoutModif($ressources, $parametres);
135
		}
62
		
136
		
63
		$modification = 'UPDATE del_commentaire_vote '.
137
		$modification = 'UPDATE del_commentaire_vote '.
64
						'SET valeur ='.$this->proteger($parametres['valeur']).', '.
138
						'SET valeur ='.$this->proteger($parametres['valeur']).', '.
65
						'date = NOW() '.
139
						'date = NOW() '.
-
 
140
						'WHERE '.
66
						'WHERE '.
141
							'ce_proposition = '.$this->proteger($ressources[1]).' AND '.
67
							'ce_proposition = '.$this->proteger($ressources[1]).' AND '.
142
							'ce_utilisateur = '.$this->proteger($parametres['utilisateur']);
68
							'ce_utilisateur = '.$this->proteger($parametres['utilisateur']);
143
		
69
		$resultatsVotes = $this->bdd->requeter($modification);
144
		$resultatsVotes = $this->bdd->requeter($modification);
70
		if ($resultatsVotes == false) {
145
		if ($resultatsVotes == false) {
Line 88... Line 163...
88
			$erreurs[] = '- paramètre "valeur" manquant ;';
163
			$erreurs[] = '- paramètre "valeur" manquant ;';
89
		} else {
164
		} else {
90
			if (!is_numeric($parametres['valeur'])) {
165
			if (!is_numeric($parametres['valeur'])) {
91
				$erreurs[] = '- le paramètre "valeur" doit être numérique ;';
166
				$erreurs[] = '- le paramètre "valeur" doit être numérique ;';
92
			} elseif($parametres['valeur'] != 0 && $parametres['valeur'] != 1) {
167
			} elseif($parametres['valeur'] != 0 && $parametres['valeur'] != 1) {
93
				$erreurs[] = '- le paramètre "valeur" ne peut prendre que les valeur 0 ou 1 ;';
168
				$erreurs[] = '- le paramètre "valeur" ne peut prendre que la valeur 0 ou 1 ;';
94
			}
169
			}
95
		}
170
		}
Line 96... Line 171...
96
			
171
			
97
		if (!empty($erreurs)) {
172
		if (!empty($erreurs)) {
Line 100... Line 175...
100
			RestServeur::ajouterMessage($e);
175
			RestServeur::ajouterMessage($e);
101
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
176
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
102
		}
177
		}
103
	}
178
	}
Line -... Line 179...
-
 
179
	
-
 
180
	protected function envoyerMessageErreurIdProposition() {
-
 
181
		$erreurs = array('Aucun identifiant de proposition n\'est lié à cette observation');
-
 
182
		$e = 'Erreur lors de la configuration : '."\n";
-
 
183
		$e .= implode("\n", $erreurs);
-
 
184
		RestServeur::ajouterMessage($e);
-
 
185
		throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
-
 
186
	}
104
	
187
	
105
	protected function proteger($valeur) {
188
	protected function proteger($valeur) {
106
		if (is_array($valeur)) {
189
		if (is_array($valeur)) {
107
			return $this->bdd->protegerTableau($valeur);
190
			return $this->bdd->protegerTableau($valeur);
108
		} else {
191
		} else {