Subversion Repositories eFlore/Applications.del

Rev

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

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