Subversion Repositories eFlore/Applications.del

Rev

Rev 813 | Rev 1273 | Go to most recent revision | Details | Compare with Previous | 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.
816 aurelien 39
	 * Lance la récupération des protocoles dans la base et les place dans un objet ResultatService
813 aurelien 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
 
816 aurelien 90
		$parametres_autorises = array('navigation.depart', 'navigation.limite');
91
		foreach ($this->parametres as $cle => $valeur) {
92
			if($cle != 'navigation.depart' && $cle != 'navigation.limite') {
93
				$erreurs[] = '- aucun masque n\'est autorisé pour ce service ;';
94
				break;
95
			}
96
		}
97
 
813 aurelien 98
		if (!empty($erreurs)) {
99
			$e = 'Erreur lors de la configuration : '."\n";
100
			$e .= implode("\n", $erreurs);
101
			throw new Exception($e, RestServeur::HTTP_CODE_ERREUR);
102
		}
103
	}
104
 
105
	/*-------------------------------------------------------------------------------
106
								CHARGEMENT DES PROTOCOLES
107
	--------------------------------------------------------------------------------*/
108
	/**
109
	* Chargement depuis la bdd de tous les protocoles ainsi que leur descriptif
110
	* */
111
	private function chargerProtocoles() {
112
		$requeteProtocoles = 'SELECT * FROM del_image_protocole';
113
		return $this->bdd->recupererTous($requeteProtocoles);
114
	}
115
 
116
	/*-------------------------------------------------------------------------------
117
								FORMATER ET METTRE EN FORME
118
	--------------------------------------------------------------------------------*/
119
 
120
	/**
121
	 * Formater les protocoles
122
	 * @param array $protocoles les protocoles
123
	 * */
124
	private function formaterProtocoles($protocoles) {
125
		$protocolesRetour = array();
126
		foreach ($protocoles as $protocole) {
816 aurelien 127
			$protocoleFormate = array();
813 aurelien 128
			$idProtocole = $protocole['id_protocole'];
816 aurelien 129
			foreach($protocole as $champProtocole => $valeur) {
130
				$protocoleFormate[$this->mappingVotes[$champProtocole]] = $valeur;
131
			}
813 aurelien 132
			$protocolesRetour[$idProtocole] = $protocoleFormate;
133
		}
134
 
135
		return $protocolesRetour;
136
	}
137
 
138
	private function proteger($valeur) {
139
		if (is_array($valeur)) {
140
			return $this->bdd->protegerTableau($valeur);
141
		} else {
142
			return $this->bdd->proteger($valeur);
143
		}
144
	}
145
}
146
?>