Subversion Repositories eFlore/Applications.del

Rev

Rev 1794 | Rev 1843 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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