37,7 → 37,7 |
$this->gestionBdd = $conteneur->getGestionBdd(); |
$this->bdd = $this->gestionBdd->getBdd(); |
} |
|
|
/** |
* Méthode principale de la classe. |
* Lance la récupération des images dans la base et les place dans un objet ResultatService |
51,18 → 51,20 |
$this->initialiserRessourcesEtParametres($ressources, $parametres); |
// Gestion des configuration du script |
$this->configurer(); |
if ($this->sansEnfant() && $this->estProprietaire()) { |
|
// 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 retour |
if ($this->sansEnfant() && $this->utilisateurEstAutorise()) { |
$this->supprimerCommentaire(); |
$this->supprimerVotesAssocies(); |
} else { |
$e = 'Impossible de supprimer le commentaire car il a des réponses ou ce n\'est pas le vôtre.'; |
echo var_dump($e); |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR); |
} |
|
return $resultat; |
} |
|
|
|
private function initialiserRessourcesEtParametres($ressources, $parametres) { |
$this->ressources = $ressources; |
$this->parametres = $parametres; |
81,7 → 83,6 |
$resultats = $this->bdd->recupererTous($requete); |
if (!empty($resultats)) { |
$e = 'Impossible de supprimer le commentaire car il a des réponses'; |
echo var_dump($resultats); |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR); |
} |
|
88,20 → 89,56 |
return true; |
} |
|
/** estProprietaire permet de vérifier que le commentaire appartient à l'utilisateur |
private function utilisateurEstAutorise() { |
$autorise = true; |
if(!$this->estProprietaire() && !$this->utilisateurEstAdmin()) { |
$e = 'Impossible de supprimer le commentaire car l\'utilisateur n\'a pas les droits requis'; |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR); |
$autorise = false; |
} |
return $autorise; |
} |
|
/** |
* estProprietaire permet de vérifier que le commentaire appartient à l'utilisateur |
* |
* */ |
public function estProprietaire() { |
|
$requete = 'SELECT * FROM '.$this->gestionBdd->formaterTable('del_commentaire'). |
'WHERE id_commentaire = '.$this->commentaireId.' '. |
'AND ce_utilisateur = '.$this->utilisateurId; |
|
$resultats = $this->bdd->recupererTous($requete); |
if (!empty($resultats)) { |
$e = 'Impossible de supprimer le commentaire car ce n\'est pas le vôtre'; |
echo var_dump($e); |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR); |
|
return !empty($resultats); |
} |
|
/** |
* Obtient l'utilisateur par le cookie |
*/ |
public function getUtilisateurParCookie() { |
//TODO: utiliser le cookie n'est pas très sécurisé |
// ceci aussi devrait être dans une classe utilitaire |
if(isset($_COOKIE['del_courriel']) && $_COOKIE['del_courriel'] != '') { |
$courriel = $_COOKIE['del_courriel']; |
$requete = 'SELECT id_utilisateur FROM '.$this->gestionBdd->formaterTable('del_utilisateur', 'du'). |
'WHERE courriel = '.$this->bdd->proteger($courriel); |
$utilisateur = $this->bdd->recuperer($requete); |
$this->utilisateurId = $utilisateur['id_utilisateur']; |
} |
} |
|
return true; |
/** |
* Renvoie vrai si l'utilisateur existe dans la base de données et si son champ admin est à 1 |
*/ |
private function utilisateurEstAdmin() { |
//TODO: déplacer ceci dans une classe utilitaire |
$requete = 'SELECT admin FROM '.$this->gestionBdd->formaterTable('del_utilisateur', 'du'). |
'WHERE id_utilisateur = '.$this->bdd->proteger($this->utilisateurId); |
|
$resultat = $this->bdd->recuperer($requete); |
return ($resultat && $resultat['admin'] == 1); |
} |
|
|
116,16 → 153,15 |
$erreurs[] = ' - l\identifiant du commentaire doit être un entier; '; |
} |
|
if (isset($this->ressources[1]) && is_numeric($this->ressources[1])) { |
$this->utilisateurId = $this->ressources[1]; |
if(isset($_COOKIE['del_courriel']) && $_COOKIE['del_courriel'] != '') { |
$this->getUtilisateurParCookie(); |
} else { |
$erreurs[] = ' - l\identifiant de l\utilisateur doit être un entier; '; |
$erreurs[] = ' - Ce service nécessite d\'être identifié; '; |
} |
|
|
if (!empty($erreurs)) { |
$e = 'Erreur de configuration :'; |
$e = implode("\n", $erreurs); |
echo var_dump($e); |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR); |
} |
} |
137,15 → 173,27 |
* Requete effective de suppression |
* */ |
public function supprimerCommentaire() { |
$requete = 'DELETE FROM '.$this->gestionBdd->formaterTable('del_commentaire'). |
'WHERE id_commentaire = '.$this->bdd->proteger($this->commentaireId). |
' AND ce_utilisateur = '.$this->bdd->proteger($this->utilisateurId); |
$requete = 'DELETE FROM '.$this->gestionBdd->formaterTable('del_commentaire').' '. |
'WHERE id_commentaire = '.$this->bdd->proteger($this->commentaireId).' '. |
'AND ce_utilisateur = '.$this->bdd->proteger($this->utilisateurId); |
$retour = $this->bdd->requeter($requete); |
if ($retour == null) { |
if (!$retour) { |
$e = 'Erreur lors de la suppression'; |
echo var_dump($e); |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR); |
} |
} |
|
/** |
* Requete de suppression de votes associés au commentaire |
*/ |
public function supprimerVotesAssocies() { |
$requete = 'DELETE FROM '.$this->gestionBdd->formaterTable('del_commentaire_vote').' '. |
'WHERE ce_proposition = '.$this->bdd->proteger($this->commentaireId); |
$retour = $this->bdd->requeter($requete); |
if (!$retour) { |
$e = 'Erreur lors de la suppression des votes associés'; |
throw new Exception($e, RestServeur::HTTP_CODE_ERREUR); |
} |
} |
} |
?> |