Rev 1794 | Rev 1950 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Permet de supprimer un commentaire.** @category DEL* @package Services* @subpackage Commentaires* @version 0.1* @author Mathias CHOUET <mathias@tela-botanica.org>* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>* @author Aurelien PERONNET <aurelien@tela-botanica.org>* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>* @copyright 1999-2014 Tela Botanica <accueil@tela-botanica.org>*/class SupprimerCommentaire {private $conteneur;private $navigation;private $bdd;private $utilisateur;private $commentaireId;private $utilisateurId;public function __construct(Conteneur $conteneur = null) {$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;$this->navigation = $conteneur->getNavigation();$this->bdd = $this->conteneur->getBdd();$this->utilisateur = $this->conteneur->getUtilisateur();}public function supprimer($ressources) {$this->commentaireId = $ressources[0];$utilisateur = $this->utilisateur->getUtilisateurIdentifie();$this->verifierIdentificationUtilisateur($utilisateur);$this->utilisateurId = $utilisateur['id_utilisateur'];// la suppression est autorisée pour le propriétaire et l'admin sur un commentaire ou une proposition// qui n'a jamais été commentée en retourif ($this->etreCommentaireSansEnfant() && $this->etreUtilisateurAutorise()) {$this->supprimerCommentaire();$this->supprimerVotesAssocies();}$resultat = new ResultatService();return $resultat;}private function verifierIdentificationUtilisateur($utilisateur) {if ($utilisateur == null) {$msg = "Ce service nécessite d'être identifié.";throw new Exception($msg, RestServeur::HTTP_CODE_MAUVAISE_REQUETE);}}private function etreCommentaireSansEnfant() {$idCommentaireP = $this->bdd->proteger($this->commentaireId);$requete = 'SELECT * '.'FROM del_commentaire '."WHERE (ce_proposition = $idCommentaireP "."OR ce_commentaire_parent = $idCommentaireP) ".' -- '.__FILE__.' : '.__LINE__;$resultats = $this->bdd->recupererTous($requete);if (!empty($resultats)) {$msg = "Impossible de supprimer le commentaire car il a des réponses.";throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);}return true;}private function etreUtilisateurAutorise() {if (! $this->etreProprietaire() && ! $this->utilisateur->etreAdmin()) {$msg = "Impossible de supprimer le commentaire car l'utilisateur n'a pas les droits requis.";throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);}return true;}private function etreProprietaire() {$requete = 'SELECT * '.'FROM del_commentaire '."WHERE id_commentaire = {$this->commentaireId} "."AND ce_utilisateur = {$this->utilisateurId} ".' -- '.__FILE__.' : '.__LINE__;$resultats = $this->bdd->recupererTous($requete);return !empty($resultats);}private function supprimerCommentaire() {$commentaireIdP = $this->bdd->proteger($this->commentaireId);$utilisateurIdP = $this->bdd->proteger($this->utilisateurId);$requete = 'DELETE FROM del_commentaire '."WHERE id_commentaire = $commentaireIdP "."AND ce_utilisateur = $utilisateurIdP ".' -- '.__FILE__.' : '.__LINE__;$retour = $this->bdd->requeter($requete);if (!$retour) {$msg = 'Erreur lors de la suppression.';throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);}}private function supprimerVotesAssocies() {$commentaireId = $this->bdd->proteger($this->commentaireId);$requete = 'DELETE FROM del_commentaire_vote '."WHERE ce_proposition = $commentaireId ".' -- '.__FILE__.' : '.__LINE__;$retour = $this->bdd->requeter($requete);if (!$retour) {$msg = 'Erreur lors de la suppression des votes associés.';throw new Exception($msg, RestServeur::HTTP_CODE_ERREUR);}}}