Subversion Repositories eFlore/Applications.del

Rev

Rev 841 | Rev 871 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 841 Rev 855
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Les web service permet d'ajouter ou de modifier les votes associés aux propositions d'une observation
4
 * Les web service permet d'ajouter ou de modifier les votes associés aux propositions d'une observation
5
 *
5
 *
6
 * @category	php 5.2
6
 * @category	php 5.2
7
 * @package	del
7
 * @package	del
8
 * @subpackage images
8
 * @subpackage images
9
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
10
 * @copyright	Copyright (c) 2012, Tela Botanica (accueil@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
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
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 $
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
14
 * @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=ApiIdentiplante01Images
15
 */
15
 */
16
 
16
 
17
class VoteObservation extends RestService {
17
class VoteObservation extends RestService {
18
	protected $conteneur;
18
	protected $conteneur;
19
	protected $gestionBdd;
19
	protected $gestionBdd;
20
	protected $bdd;
20
	protected $bdd;
21
	
21
	
22
	public function __construct(Conteneur $conteneur = null) {
22
	public function __construct(Conteneur $conteneur = null) {
23
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
23
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
24
		$this->gestionBdd = $conteneur->getGestionBdd();
24
		$this->gestionBdd = $conteneur->getGestionBdd();
25
		$this->bdd = $this->gestionBdd->getBdd();
25
		$this->bdd = $this->gestionBdd->getBdd();
26
	}
26
	}
27
	
27
	
28
	/**
28
	/**
29
	 * Méthode principale de la classe.
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 
30
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService 
31
	 * pour l'afficher.
31
	 * pour l'afficher.
32
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
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
33
	 * @param array $parametres les paramètres situés après le ? dans l'url
34
	 * */
34
	 * */
35
	public function consulter($ressources, $parametres) {
35
	public function consulter($ressources, $parametres) {
36
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
36
		RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_METHODE_NON_AUTORISE);
37
		RestServeur::ajouterMessage("Le service 'observation/#id/#id_proposition/vote' n'autorise pas la consultation.");
37
		RestServeur::ajouterMessage("Le service 'observation/#id/#id_proposition/vote' n'autorise pas la consultation.");
38
	}
38
	}
39
	
39
	
40
	public function ajouter($ressources, $parametres) {
40
	public function ajouter($ressources, $parametres) {
-
 
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
		
41
		$insertion = 'INSERT INTO del_commentaire_vote '.
47
		$insertion = 'INSERT INTO del_commentaire_vote '.
42
							'(ce_proposition , ce_utilisateur , valeur , date) '.
48
							'(ce_proposition , ce_utilisateur , valeur , date) '.
43
							'VALUES ('.$this->proteger($ressources[1]).','.$this->proteger($parametres['utilisateur']).','.
49
							'VALUES ('.$this->proteger($ressources[1]).','.$this->proteger($parametres['utilisateur']).','.
44
							$this->proteger($parametres['valeur']).', NOW());';
50
							$this->proteger($parametres['valeur']).', NOW());';
45
		$resultatsVotes = $this->bdd->requeter($insertion);
51
		$resultatsVotes = $this->bdd->requeter($insertion);
46
		if ($resultatsVotes == false) {
52
		if ($resultatsVotes == false) {
47
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
53
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
48
		} else {
54
		} else {
49
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_CREATION_OK);
55
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_CREATION_OK);
50
		}
56
		}
51
	}
57
	}
52
	
58
	
53
	public function modifier($ressources, $parametres) {
59
	public function modifier($ressources, $parametres) {
-
 
60
		
-
 
61
		$this->verifierParametresAjoutModif($ressources, $parametres);
-
 
62
		
54
		$modification = 'UPDATE del_commentaire_vote '.
63
		$modification = 'UPDATE del_commentaire_vote '.
55
						'SET valeur ='.$this->proteger($parametres['valeur']).', '.
64
						'SET valeur ='.$this->proteger($parametres['valeur']).', '.
56
						'date = NOW() '.
65
						'date = NOW() '.
57
						'WHERE '.
66
						'WHERE '.
58
							'ce_proposition = '.$this->proteger($ressources[1]).' AND '.
67
							'ce_proposition = '.$this->proteger($ressources[1]).' AND '.
59
							'ce_utilisateur = '.$this->proteger($parametres['utilisateur']);
68
							'ce_utilisateur = '.$this->proteger($parametres['utilisateur']);
60
		$resultatsVotes = $this->bdd->requeter($modification);
69
		$resultatsVotes = $this->bdd->requeter($modification);
61
		if ($resultatsVotes == false) {
70
		if ($resultatsVotes == false) {
62
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
71
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_MAUVAISE_REQUETE);
63
		} else {
72
		} else {
64
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_OK);
73
			RestServeur::envoyerEnteteStatutHttp(RestServeur::HTTP_CODE_OK);
65
		}
74
		}
-
 
75
	}
-
 
76
	
-
 
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
		}
66
	}
103
	}
67
	
104
	
68
	protected function proteger($valeur) {
105
	protected function proteger($valeur) {
69
		if (is_array($valeur)) {
106
		if (is_array($valeur)) {
70
			return $this->bdd->protegerTableau($valeur);
107
			return $this->bdd->protegerTableau($valeur);
71
		} else {
108
		} else {
72
			return $this->bdd->proteger($valeur);
109
			return $this->bdd->proteger($valeur);
73
		}
110
		}
74
	}
111
	}
75
}
112
}
76
?>
113
?>