Subversion Repositories eFlore/Applications.del

Rev

Rev 864 | Rev 971 | Go to most recent revision | Details | Compare with Previous | 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');
950 aurelien 34
		$this->conteneur->chargerConfiguration('config_mapping_commentaires.ini');
864 gduche 35
		$this->navigation = $conteneur->getNavigation();
36
		$this->masque = $conteneur->getMasque();
37
		$this->gestionBdd = $conteneur->getGestionBdd();
38
		$this->bdd = $this->gestionBdd->getBdd();
39
	}
40
 
41
	/**
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
44
	 * pour l'afficher.
45
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
46
	 * @param array $parametres les paramètres situés après le ? dans l'url
47
	 * */
48
	public function supprimer($ressources, $parametres) {
49
		$resultat = new ResultatService();
50
 
51
		$this->initialiserRessourcesEtParametres($ressources, $parametres);
52
		// Gestion des configuration du script
53
		$this->configurer();
54
		if ($this->sansEnfant() && $this->estProprietaire()) {
55
			$this->supprimerCommentaire();
56
		} 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);
59
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
60
		}
61
 
62
		return $resultat;
63
	}
64
 
65
 
66
	private function initialiserRessourcesEtParametres($ressources, $parametres) {
67
		$this->ressources = $ressources;
68
		$this->parametres = $parametres;
69
	}
70
 
71
	/*-------------------------------------------------------------------------------
72
	 							CONFIGURATION DU SERVICE
73
	 --------------------------------------------------------------------------------*/
74
	/** sansEnfant permet de vérifier que le commentaire que l'on veut supprimer
75
	 * n'a aucune réponse
76
	 * */
77
	public function sansEnfant() {
78
		$requete = 'SELECT * FROM '.$this->gestionBdd->formaterTable('del_commentaire').
79
				   'WHERE (ce_proposition  = '.$this->commentaireId.' '.
80
				   'OR ce_commentaire_parent = '.$this->commentaireId.')';
81
		$resultats = $this->bdd->recupererTous($requete);
82
		if (!empty($resultats)) {
83
			$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
		}
87
 
88
		return true;
89
	}
90
 
91
	/** estProprietaire permet de vérifier que le commentaire appartient à l'utilisateur
92
	* */
93
	public function estProprietaire() {
94
		$requete = 'SELECT * FROM '.$this->gestionBdd->formaterTable('del_commentaire').
95
				   'WHERE id_commentaire = '.$this->commentaireId.' '.
96
				   'AND ce_utilisateur = '.$this->utilisateurId;
97
		$resultats = $this->bdd->recupererTous($requete);
98
		if (!empty($resultats)) {
99
			$e = 'Impossible de supprimer le commentaire car ce n\'est pas le vôtre';
100
			echo var_dump($e);
101
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
102
		}
103
 
104
		return true;
105
	}
106
 
107
 
108
	/**
109
	 * Initialiser les attributs de la classe avec les parametres
110
	 * */
111
	public function configurer() {
112
		$erreurs= array();
113
		if (isset($this->ressources[0]) && is_numeric($this->ressources[0])) {
114
			$this->commentaireId = $this->ressources[0];
115
		} else {
116
			$erreurs[] = ' - l\identifiant du commentaire doit être un entier; ';
117
		}
118
 
119
		if (isset($this->ressources[1]) && is_numeric($this->ressources[1])) {
120
			$this->utilisateurId = $this->ressources[1];
121
		} else {
122
			$erreurs[] = ' - l\identifiant de l\utilisateur doit être un entier; ';
123
		}
124
 
125
		if (!empty($erreurs)) {
126
			$e = 'Erreur de configuration :';
127
			$e = implode("\n", $erreurs);
128
			echo var_dump($e);
129
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
130
		}
131
	}
132
 
133
	/*-------------------------------------------------------------------------------
134
							   SUPPRESSION DES COMMENTAIRES
135
	--------------------------------------------------------------------------------*/
136
	/**
137
	 * Requete effective de suppression
138
	 * */
139
	public function supprimerCommentaire() {
140
		$requete = 'DELETE FROM '.$this->gestionBdd->formaterTable('del_commentaire').
141
				   'WHERE id_commentaire = '.$this->bdd->proteger($this->commentaireId).
142
				   ' AND ce_utilisateur = '.$this->bdd->proteger($this->utilisateurId);
143
		$retour = $this->bdd->requeter($requete);
144
		if ($retour == null) {
145
			$e = 'Erreur lors de la suppression';
146
			echo var_dump($e);
147
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
148
		}
149
	}
150
}
151
?>