Subversion Repositories eFlore/Applications.del

Rev

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

Rev Author Line No. Line
813 aurelien 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
	* Le web service observations récupère tous les protocoles avec leur id, nom et descriptif
5
 *
6
 * @category	php 5.2
7
 * @package	del
8
 * @subpackage protocoles
9
 * @author		Aurélien Peronnet <aurelien@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=ApiIdentiplante01Protocoles
15
 */
16
 
17
class ListeProtocoles extends RestService {
18
 
19
 
20
	private $conteneur;
21
	private $navigation;
22
	private $masque;
23
	private $gestionBdd;
24
	protected $bdd;
25
	private $parametres = array();
26
	private $ressources = array();
27
 
28
	public function __construct(Conteneur $conteneur = null) {
29
		$this->conteneur = $conteneur == null ? new Conteneur() : $conteneur;
30
		$this->conteneur->chargerConfiguration('config_mapping_votes.ini');
31
		$this->navigation = $conteneur->getNavigation();
32
		$this->masque = $conteneur->getMasque();
33
		$this->gestionBdd = $conteneur->getGestionBdd();
34
		$this->bdd = $this->gestionBdd->getBdd();
35
	}
36
 
37
	/**
38
	 * Méthode principale de la classe.
39
	 * Lance la récupération des images dans la base et les place dans un objet ResultatService
40
	 * pour l'afficher.
41
	 * @param array $ressources les ressources situées après l'url de base (ex : http://url/ressource1/ressource2)
42
	 * @param array $parametres les paramètres situés après le ? dans l'url
43
	 * */
44
	public function consulter($ressources, $parametres) {
45
		$this->initialiserRessourcesEtParametres($ressources, $parametres);
46
 
47
		// Gestion des configuration du script
48
		$this->configurer();
49
		$this->verifierConfiguration();
50
 
51
		$protocoles = $this->chargerProtocoles();
52
		$protocoles = $this->formaterProtocoles($protocoles);
53
		$this->navigation->setTotal(count($protocoles));
54
 
55
		$resultat = new ResultatService();
56
		$resultat->corps = array('entete' => $this->conteneur->getEntete(), 'resultats' => $protocoles);
57
		return $resultat;
58
	}
59
 
60
	private function initialiserRessourcesEtParametres($ressources, $parametres) {
61
		$this->ressources = $ressources;
62
		$this->parametres = $parametres;
63
	}
64
	/*-------------------------------------------------------------------------------
65
	 							CONFIGURATION DU SERVICE
66
	 --------------------------------------------------------------------------------*/
67
	/**
68
	 * Configuration du service en fonction du fichier de config config_del.ini
69
	 * */
70
	private function configurer() {
71
		$this->mappingVotes = $this->conteneur->getParametre('mapping_votes');
72
	}
73
 
74
	/**
75
	 * Vérifier que le service est bien configuré
76
	 * */
77
	private function verifierConfiguration() {
78
 
79
		if (empty($this->mappingVotes)) {
80
			$erreurs[] = '- le fichier de configuration ne contient pas le tableau [mapping_votes] ou celui-ci est vide ;';
81
		} else {
82
			$champsMappingVotes = array('id_protocole', 'intitule', 'descriptif');
83
			foreach ($champsMappingVotes as $champ) {
84
				if (!isset($this->mappingVotes[$champ])) {
85
					$erreurs[] = '- le mapping du champ "'.$champ.'" pour les votes est manquant ;';
86
				}
87
			}
88
		}
89
 
90
		if (!empty($erreurs)) {
91
			$e = 'Erreur lors de la configuration : '."\n";
92
			$e .= implode("\n", $erreurs);
93
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
94
		}
95
	}
96
 
97
	/*-------------------------------------------------------------------------------
98
								CHARGEMENT DES PROTOCOLES
99
	--------------------------------------------------------------------------------*/
100
	/**
101
	* Chargement depuis la bdd de tous les protocoles ainsi que leur descriptif
102
	* */
103
	private function chargerProtocoles() {
104
		$requeteProtocoles = 'SELECT * FROM del_image_protocole';
105
		return $this->bdd->recupererTous($requeteProtocoles);
106
	}
107
 
108
	/*-------------------------------------------------------------------------------
109
								FORMATER ET METTRE EN FORME
110
	--------------------------------------------------------------------------------*/
111
 
112
	/**
113
	 * Formater les protocoles
114
	 * @param array $protocoles les protocoles
115
	 * */
116
	private function formaterProtocoles($protocoles) {
117
		$protocolesRetour = array();
118
		foreach ($protocoles as $protocole) {
119
 
120
			$idProtocole = $protocole['id_protocole'];
121
			$protocoleFormate = array(
122
					"protocole.id" =>  $idProtocole,
123
					"protocole.intitule" => $protocole['intitule'],
124
					"protocole.descriptif" => $protocole['descriptif']
125
			);
126
			$protocolesRetour[$idProtocole] = $protocoleFormate;
127
		}
128
 
129
		return $protocolesRetour;
130
	}
131
 
132
	private function proteger($valeur) {
133
		if (is_array($valeur)) {
134
			return $this->bdd->protegerTableau($valeur);
135
		} else {
136
			return $this->bdd->proteger($valeur);
137
		}
138
	}
139
}
140
?>