Subversion Repositories eFlore/Applications.del

Rev

Rev 1793 | Rev 1817 | Go to most recent revision | Only display areas with differences | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

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