Subversion Repositories eFlore/Applications.del

Rev

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

Rev 950 Rev 971
Line 35... Line 35...
35
		$this->navigation = $conteneur->getNavigation();
35
		$this->navigation = $conteneur->getNavigation();
36
		$this->masque = $conteneur->getMasque();
36
		$this->masque = $conteneur->getMasque();
37
		$this->gestionBdd = $conteneur->getGestionBdd();
37
		$this->gestionBdd = $conteneur->getGestionBdd();
38
		$this->bdd = $this->gestionBdd->getBdd();	
38
		$this->bdd = $this->gestionBdd->getBdd();	
39
	}
39
	}
40
	
40
		
41
	/**
41
	/**
42
	 * Méthode principale de la classe.
42
	 * Méthode principale de la classe.
43
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
43
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
44
	 * pour l'afficher.
44
	 * pour l'afficher.
45
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
45
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
Line 49... Line 49...
49
		$resultat = new ResultatService();
49
		$resultat = new ResultatService();
Line 50... Line 50...
50
		
50
		
51
		$this->initialiserRessourcesEtParametres($ressources, $parametres);
51
		$this->initialiserRessourcesEtParametres($ressources, $parametres);
52
		// Gestion des configuration du script
52
		// Gestion des configuration du script
-
 
53
		$this->configurer();
-
 
54
		
-
 
55
		// la suppression est autorisée pour le propriétaire et l'admin sur un commentaire ou une proposition
53
		$this->configurer();
56
		// qui n'a jamais été commentée en retour
54
		if ($this->sansEnfant() && $this->estProprietaire()) {
57
		if ($this->sansEnfant() && $this->utilisateurEstAutorise()) {
-
 
58
			$this->supprimerCommentaire();
55
			$this->supprimerCommentaire();
59
			$this->supprimerVotesAssocies();
56
		} else {
60
		} else {
57
			$e = 'Impossible de supprimer le commentaire car il a des réponses ou ce n\'est pas le vôtre.';
-
 
58
			echo var_dump($e);
61
			$e = 'Impossible de supprimer le commentaire car il a des réponses ou ce n\'est pas le vôtre.';
59
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
62
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
Line 60... Line 63...
60
		}
63
		}
61
				
64
				
62
		return $resultat;
-
 
63
	}
65
		return $resultat;
64
	
66
	}
65
	
67
		
66
	private function initialiserRessourcesEtParametres($ressources, $parametres) {
68
	private function initialiserRessourcesEtParametres($ressources, $parametres) {
67
		$this->ressources = $ressources;
69
		$this->ressources = $ressources;
Line 79... Line 81...
79
				   'WHERE (ce_proposition  = '.$this->commentaireId.' '.
81
				   'WHERE (ce_proposition  = '.$this->commentaireId.' '.
80
				   'OR ce_commentaire_parent = '.$this->commentaireId.')';
82
				   'OR ce_commentaire_parent = '.$this->commentaireId.')';
81
		$resultats = $this->bdd->recupererTous($requete);
83
		$resultats = $this->bdd->recupererTous($requete);
82
		if (!empty($resultats)) {
84
		if (!empty($resultats)) {
83
			$e = 'Impossible de supprimer le commentaire car il a des réponses';
85
			$e = 'Impossible de supprimer le commentaire car il a des réponses';
84
			echo var_dump($resultats);
-
 
85
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
86
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
86
		}
87
		}
Line 87... Line 88...
87
		
88
		
88
		return true;
89
		return true;
Line -... Line 90...
-
 
90
	}
-
 
91
	
-
 
92
	private function utilisateurEstAutorise() {
-
 
93
		$autorise = true;
-
 
94
		if(!$this->estProprietaire() && !$this->utilisateurEstAdmin()) {
-
 
95
			$e = 'Impossible de supprimer le commentaire car l\'utilisateur n\'a pas les droits requis';
-
 
96
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
-
 
97
			$autorise = false;
-
 
98
		}
-
 
99
		return $autorise;
-
 
100
	}
89
	}
101
	
-
 
102
	/** 
90
	
103
	* estProprietaire permet de vérifier que le commentaire appartient à l'utilisateur
91
	/** estProprietaire permet de vérifier que le commentaire appartient à l'utilisateur
104
	* 
-
 
105
	* */
92
	* */
106
	public function estProprietaire() {
93
	public function estProprietaire() {
107
		
94
		$requete = 'SELECT * FROM '.$this->gestionBdd->formaterTable('del_commentaire').
108
		$requete = 'SELECT * FROM '.$this->gestionBdd->formaterTable('del_commentaire').
-
 
109
				   'WHERE id_commentaire = '.$this->commentaireId.' '.
95
				   'WHERE id_commentaire = '.$this->commentaireId.' '.
110
				   'AND ce_utilisateur = '.$this->utilisateurId;
-
 
111
		
96
				   'AND ce_utilisateur = '.$this->utilisateurId;
112
		$resultats = $this->bdd->recupererTous($requete);
-
 
113
	
-
 
114
		return !empty($resultats);
-
 
115
	}
-
 
116
	
-
 
117
	/**
-
 
118
	* Obtient l'utilisateur par le cookie
97
		$resultats = $this->bdd->recupererTous($requete);
119
	*/
-
 
120
	public function getUtilisateurParCookie() {
-
 
121
		//TODO: utiliser le cookie n'est pas très sécurisé
98
		if (!empty($resultats)) {
122
		// ceci aussi devrait être dans une classe utilitaire
-
 
123
		if(isset($_COOKIE['del_courriel']) && $_COOKIE['del_courriel'] != '') {
-
 
124
			$courriel = $_COOKIE['del_courriel'];
-
 
125
			$requete = 'SELECT id_utilisateur FROM '.$this->gestionBdd->formaterTable('del_utilisateur', 'du').
99
			$e = 'Impossible de supprimer le commentaire car ce n\'est pas le vôtre';
126
										'WHERE courriel = '.$this->bdd->proteger($courriel);
100
			echo var_dump($e);
127
			$utilisateur = $this->bdd->recuperer($requete);
-
 
128
			$this->utilisateurId = $utilisateur['id_utilisateur'];
Line -... Line 129...
-
 
129
		}
-
 
130
	}
-
 
131
	
-
 
132
	/**
-
 
133
	 * Renvoie vrai si l'utilisateur existe dans la base de données et si son champ admin est à 1
-
 
134
	 */
-
 
135
	private function utilisateurEstAdmin() {
-
 
136
		//TODO: déplacer ceci dans une classe utilitaire
-
 
137
		$requete = 'SELECT admin FROM '.$this->gestionBdd->formaterTable('del_utilisateur', 'du').
101
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
138
									'WHERE id_utilisateur = '.$this->bdd->proteger($this->utilisateurId);
102
		}
139
	
Line 103... Line 140...
103
	
140
		$resultat = $this->bdd->recuperer($requete);
104
		return true;
141
		return ($resultat && $resultat['admin'] == 1);
Line 114... Line 151...
114
			$this->commentaireId = $this->ressources[0];
151
			$this->commentaireId = $this->ressources[0];
115
		} else {
152
		} else {
116
			$erreurs[] = ' - l\identifiant du commentaire doit être un entier; ';
153
			$erreurs[] = ' - l\identifiant du commentaire doit être un entier; ';
117
		}
154
		}
Line 118... Line 155...
118
		
155
		
119
		if (isset($this->ressources[1]) && is_numeric($this->ressources[1])) {
156
		if(isset($_COOKIE['del_courriel']) && $_COOKIE['del_courriel'] != '') {
120
			$this->utilisateurId = $this->ressources[1];
157
			$this->getUtilisateurParCookie();
121
		} else {
158
		} else {
122
			$erreurs[] = ' - l\identifiant de l\utilisateur doit être un entier; ';
159
			$erreurs[] = ' - Ce service nécessite d\'être identifié; ';
123
		}
160
		}
124
		
161
				
125
		if (!empty($erreurs)) {
162
		if (!empty($erreurs)) {
126
			$e = 'Erreur de configuration :';
163
			$e = 'Erreur de configuration :';
127
			$e = implode("\n", $erreurs);
-
 
128
			echo var_dump($e);
164
			$e = implode("\n", $erreurs);
129
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
165
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
130
		}
166
		}
Line 131... Line 167...
131
	}
167
	}
Line 135... Line 171...
135
	--------------------------------------------------------------------------------*/
171
	--------------------------------------------------------------------------------*/
136
	/**
172
	/**
137
	 * Requete effective de suppression
173
	 * Requete effective de suppression
138
	 * */
174
	 * */
139
	public function supprimerCommentaire() {
175
	public function supprimerCommentaire() {
140
		$requete = 'DELETE FROM '.$this->gestionBdd->formaterTable('del_commentaire').
176
		$requete = 'DELETE FROM '.$this->gestionBdd->formaterTable('del_commentaire').' '.
141
				   'WHERE id_commentaire = '.$this->bdd->proteger($this->commentaireId).
177
				   'WHERE id_commentaire = '.$this->bdd->proteger($this->commentaireId).' '.
142
				   ' AND ce_utilisateur = '.$this->bdd->proteger($this->utilisateurId);
178
				   	'AND ce_utilisateur = '.$this->bdd->proteger($this->utilisateurId);
143
		$retour = $this->bdd->requeter($requete);
179
		$retour = $this->bdd->requeter($requete);
144
		if ($retour == null) {
180
		if (!$retour) {
145
			$e = 'Erreur lors de la suppression';
181
			$e = 'Erreur lors de la suppression';
-
 
182
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
-
 
183
		}
-
 
184
	}
-
 
185
	
-
 
186
	/**
-
 
187
	 * Requete de suppression de votes associés au commentaire
-
 
188
	 */
-
 
189
	public function supprimerVotesAssocies() {
-
 
190
		$requete = 'DELETE FROM '.$this->gestionBdd->formaterTable('del_commentaire_vote').' '.
-
 
191
				   'WHERE ce_proposition = '.$this->bdd->proteger($this->commentaireId);
-
 
192
		$retour = $this->bdd->requeter($requete);
146
			echo var_dump($e);
193
		if (!$retour) {
-
 
194
			$e = 'Erreur lors de la suppression des votes associés';
147
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
195
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
148
		}
196
		}
149
	}
197
	}
150
}
198
}
151
?>
199
?>
152
200