Subversion Repositories eFlore/Applications.del

Rev

Rev 841 | Rev 871 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
787 delphine 1
<?php
2
// declare(encoding='UTF-8');
3
/**
831 aurelien 4
 * Les web service permet d'ajouter ou de modifier les votes associés aux propositions d'une observation
787 delphine 5
 *
6
 * @category	php 5.2
7
 * @package	del
8
 * @subpackage images
9
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
10
 * @copyright	Copyright (c) 2012, Tela Botanica (accueil@tela-botanica.org)
11
 * @license	http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
12
 * @license	http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
13
 * @version	$Id: Bdd.php 403 2012-02-22 14:35:20Z gduche $
14
 * @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
15
 */
16
 
841 aurelien 17
class VoteObservation extends RestService {
18
	protected $conteneur;
19
	protected $gestionBdd;
20
	protected $bdd;
787 delphine 21
 
22
	public function __construct(Conteneur $conteneur = null) {
23
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
24
		$this->gestionBdd = $conteneur->getGestionBdd();
25
		$this->bdd = $this->gestionBdd->getBdd();
26
	}
27
 
28
	/**
29
	 * Méthode principale de la classe.
30
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService
31
	 * pour l'afficher.
32
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
33
	 * @param array $parametres les paramètres situés après le ? dans l'url
34
	 * */
35
	public function consulter($ressources, $parametres) {
36
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
831 aurelien 37
		RestServeur::ajouterMessage("Le service 'observation/#id/#id_proposition/vote' n'autorise pas la consultation.");
787 delphine 38
	}
39
 
40
	public function ajouter($ressources, $parametres) {
855 aurelien 41
 
42
		//TODO: vérifier si la proposition existe, et la créer sinon
43
		// (cas du vote sur la proposition fabriquée à partir de l'observation originale)
44
 
45
		$this->verifierParametresAjoutModif($ressources, $parametres);
46
 
841 aurelien 47
		$insertion = 'INSERT INTO del_commentaire_vote '.
48
							'(ce_proposition , ce_utilisateur , valeur , date) '.
49
							'VALUES ('.$this->proteger($ressources[1]).','.$this->proteger($parametres['utilisateur']).','.
50
							$this->proteger($parametres['valeur']).', NOW());';
787 delphine 51
		$resultatsVotes = $this->bdd->requeter($insertion);
52
		if ($resultatsVotes == false) {
53
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
54
		} else {
55
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_CREATION_OK);
56
		}
57
	}
841 aurelien 58
 
59
	public function modifier($ressources, $parametres) {
855 aurelien 60
 
61
		$this->verifierParametresAjoutModif($ressources, $parametres);
62
 
841 aurelien 63
		$modification = 'UPDATE del_commentaire_vote '.
64
						'SET valeur ='.$this->proteger($parametres['valeur']).', '.
65
						'date = NOW() '.
66
						'WHERE '.
67
							'ce_proposition = '.$this->proteger($ressources[1]).' AND '.
68
							'ce_utilisateur = '.$this->proteger($parametres['utilisateur']);
69
		$resultatsVotes = $this->bdd->requeter($modification);
70
		if ($resultatsVotes == false) {
71
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
72
		} else {
73
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_OK);
74
		}
75
	}
76
 
855 aurelien 77
	public function verifierParametresAjoutModif($ressources, $parametres) {
78
		$erreurs = array();
79
		if (!is_numeric($ressources[1])) {
80
			$erreurs[] = '- le paramètre indiquant l\'identifiant de la proposition doit être numérique ;';
81
		}
82
 
83
		if (!isset($parametres['utilisateur'])) {
84
			$erreurs[] = '- paramètre "utilisateur" manquant ;';
85
		}
86
 
87
		if (!isset($parametres['valeur'])) {
88
			$erreurs[] = '- paramètre "valeur" manquant ;';
89
		} else {
90
			if (!is_numeric($parametres['valeur'])) {
91
				$erreurs[] = '- le paramètre "valeur" doit être numérique ;';
92
			} elseif($parametres['valeur'] != 0 && $parametres['valeur'] != 1) {
93
				$erreurs[] = '- le paramètre "valeur" ne peut prendre que les valeur 0 ou 1 ;';
94
			}
95
		}
96
 
97
		if (!empty($erreurs)) {
98
			$e = 'Erreur lors de la configuration : '."\n";
99
			$e .= implode("\n", $erreurs);
100
			RestServeur::ajouterMessage($e);
101
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
102
		}
103
	}
104
 
841 aurelien 105
	protected function proteger($valeur) {
106
		if (is_array($valeur)) {
107
			return $this->bdd->protegerTableau($valeur);
108
		} else {
109
			return $this->bdd->proteger($valeur);
110
		}
111
	}
787 delphine 112
}
113
?>