Subversion Repositories eFlore/Applications.del

Rev

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