Subversion Repositories eFlore/Applications.del

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
864 gduche 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
	* Le web service image récupère toutes les données de la table del_obs_images
5
 * pour retourner une liste d'images associée à une observation
6
 *
7
 * @category	php 5.2
8
 * @package	del
9
 * @subpackage images
10
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
11
 * @copyright	Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
12
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
13
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
14
 * @version	$Id: Bdd.php 403 2012-02-22 14:35:20Z gduche $
15
 * @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
16
 */
17
 
18
class SupprimerCommentaire {
19
 
20
	private $conteneur;
21
	private $navigation;
22
	private $masque;
23
	private $gestionBdd;
24
	private $bdd;
25
	private $parametres = array();
26
	private $ressources = array();
27
 
28
	private $commentaireId;
29
	private $utilisateurId;
30
 
31
	public function __construct(Conteneur $conteneur = null) {
32
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
33
		$this->conteneur->chargerConfiguration('config_commentaires.ini');
34
		$this->navigation = $conteneur->getNavigation();
35
		$this->masque = $conteneur->getMasque();
36
		$this->gestionBdd = $conteneur->getGestionBdd();
37
		$this->bdd = $this->gestionBdd->getBdd();
38
	}
39
 
40
	/**
41
	 * Méthode principale de la classe.
42
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService
43
	 * pour l'afficher.
44
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
45
	 * @param array $parametres les paramètres situés après le ? dans l'url
46
	 * */
47
	public function supprimer($ressources, $parametres) {
48
		$resultat = new ResultatService();
49
 
50
		$this->initialiserRessourcesEtParametres($ressources, $parametres);
51
		// Gestion des configuration du script
52
		$this->configurer();
53
		if ($this->sansEnfant() && $this->estProprietaire()) {
54
			$this->supprimerCommentaire();
55
		} else {
56
			$e = 'Impossible de supprimer le commentaire car il a des réponses ou ce n\'est pas le vôtre.';
57
			echo var_dump($e);
58
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
59
		}
60
 
61
		return $resultat;
62
	}
63
 
64
 
65
	private function initialiserRessourcesEtParametres($ressources, $parametres) {
66
		$this->ressources = $ressources;
67
		$this->parametres = $parametres;
68
	}
69
 
70
	/*-------------------------------------------------------------------------------
71
	 							CONFIGURATION DU SERVICE
72
	 --------------------------------------------------------------------------------*/
73
	/** sansEnfant permet de vérifier que le commentaire que l'on veut supprimer
74
	 * n'a aucune réponse
75
	 * */
76
	public function sansEnfant() {
77
		$requete = 'SELECT * FROM '.$this->gestionBdd->formaterTable('del_commentaire').
78
				   'WHERE (ce_proposition  = '.$this->commentaireId.' '.
79
				   'OR ce_commentaire_parent = '.$this->commentaireId.')';
80
		$resultats = $this->bdd->recupererTous($requete);
81
		if (!empty($resultats)) {
82
			$e = 'Impossible de supprimer le commentaire car il a des réponses';
83
			echo var_dump($resultats);
84
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
85
		}
86
 
87
		return true;
88
	}
89
 
90
	/** estProprietaire permet de vérifier que le commentaire appartient à l'utilisateur
91
	* */
92
	public function estProprietaire() {
93
		$requete = 'SELECT * FROM '.$this->gestionBdd->formaterTable('del_commentaire').
94
				   'WHERE id_commentaire = '.$this->commentaireId.' '.
95
				   'AND ce_utilisateur = '.$this->utilisateurId;
96
		$resultats = $this->bdd->recupererTous($requete);
97
		if (!empty($resultats)) {
98
			$e = 'Impossible de supprimer le commentaire car ce n\'est pas le vôtre';
99
			echo var_dump($e);
100
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
101
		}
102
 
103
		return true;
104
	}
105
 
106
 
107
	/**
108
	 * Initialiser les attributs de la classe avec les parametres
109
	 * */
110
	public function configurer() {
111
		$erreurs= array();
112
		if (isset($this->ressources[0]) && is_numeric($this->ressources[0])) {
113
			$this->commentaireId = $this->ressources[0];
114
		} else {
115
			$erreurs[] = ' - l\identifiant du commentaire doit être un entier; ';
116
		}
117
 
118
		if (isset($this->ressources[1]) && is_numeric($this->ressources[1])) {
119
			$this->utilisateurId = $this->ressources[1];
120
		} else {
121
			$erreurs[] = ' - l\identifiant de l\utilisateur doit être un entier; ';
122
		}
123
 
124
		if (!empty($erreurs)) {
125
			$e = 'Erreur de configuration :';
126
			$e = implode("\n", $erreurs);
127
			echo var_dump($e);
128
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
129
		}
130
	}
131
 
132
	/*-------------------------------------------------------------------------------
133
							   SUPPRESSION DES COMMENTAIRES
134
	--------------------------------------------------------------------------------*/
135
	/**
136
	 * Requete effective de suppression
137
	 * */
138
	public function supprimerCommentaire() {
139
		$requete = 'DELETE FROM '.$this->gestionBdd->formaterTable('del_commentaire').
140
				   'WHERE id_commentaire = '.$this->bdd->proteger($this->commentaireId).
141
				   ' AND ce_utilisateur = '.$this->bdd->proteger($this->utilisateurId);
142
		$retour = $this->bdd->requeter($requete);
143
		if ($retour == null) {
144
			$e = 'Erreur lors de la suppression';
145
			echo var_dump($e);
146
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
147
		}
148
	}
149
}
150
?>