Subversion Repositories eFlore/Projets.eflore-projets

Rev

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

Rev 3 Rev 110
Line 18... Line 18...
18
 
18
 
19
	/** Contients les paramètres.*/
19
	/** Contients les paramètres.*/
20
	private $parametres = array();
20
	private $parametres = array();
21
	/** Contients les ressources.*/
21
	/** Contients les ressources.*/
22
	private $ressources = array();
-
 
23
	/** Contients les erreurs HTTP levées par le service.*/
-
 
Line 24... Line 22...
24
	private $erreursHttp = array();
22
	private $ressources = array();
25
 
23
 
26
	/** Nom du projet courrant. */
24
	/** Nom du projet courrant. */
27
	private $projetNom = array();
25
	private $projetNom = array();
Line 36... Line 34...
36
		$this->cheminCourrant = dirname(__FILE__).DS;
34
		$this->cheminCourrant = dirname(__FILE__).DS;
37
	}
35
	}
Line 38... Line 36...
38
 
36
 
39
	public function consulter($ressources, $parametres) {
37
	public function consulter($ressources, $parametres) {
-
 
38
		$resultat = '';
40
		$resultat = '';
39
		$reponseHttp = new ReponseHttp();
41
		try {
40
		try {
42
			$this->initialiserRessourcesEtParametres($ressources, $parametres);
41
			$this->initialiserRessourcesEtParametres($ressources, $parametres);
-
 
42
			$resultat = $this->traiterRessources();
43
			$resultat = $this->traiterRessources();
43
			$reponseHttp->setResultatService($resultat);
44
		} catch (Exception $e) {
44
		} catch (Exception $e) {
45
			$this->ajouterErreurHttp($e->getCode(), $e->getMessage());
45
			$reponseHttp->ajouterErreur($e);
46
		}
-
 
-
 
46
		}
47
 
47
		$reponseHttp->emettreLesEntetes();
48
		$corps = $this->genererReponseHttp($resultat);
48
		$corps = $reponseHttp->getCorps();
49
		return $corps;
49
		return $corps;
Line 50... Line 50...
50
	}
50
	}
51
 
51
 
Line 145... Line 145...
145
		return $presenceRessourceService;
145
		return $presenceRessourceService;
146
	}
146
	}
Line 147... Line 147...
147
 
147
 
148
	private function initialiserService() {
148
	private function initialiserService() {
149
		$this->chargerNomDuService();
149
		$this->chargerNomDuService();
150
		$classe = $this->obtenirNomClasse($this->serviceNom);
150
		$classe = $this->obtenirNomClasseService($this->serviceNom);
151
		$chemins = array();
151
		$chemins = array();
152
		$chemins[] = $this->cheminCourrant.$this->projetNom.DS.$classe.'.php';
152
		$chemins[] = $this->cheminCourrant.$this->projetNom.DS.$classe.'.php';
Line 153... Line 153...
153
		$chemins[] = $this->cheminCourrant.'commun'.DS.$classe.'.php';
153
		$chemins[] = $this->cheminCourrant.'commun'.DS.$classe.'.php';
Line 171... Line 171...
171
 
171
 
172
	private function chargerNomDuService() {
172
	private function chargerNomDuService() {
173
		$this->serviceNom = $this->ressources[1];
173
		$this->serviceNom = $this->ressources[1];
Line 174... Line 174...
174
	}
174
	}
175
 
175
 
176
	private function obtenirNomClasse($mot) {
176
	private function obtenirNomClasseService($mot) {
177
		$classeNom = str_replace(' ', '', ucwords(strtolower(str_replace('-', ' ', $mot))));
177
		$classeNom = str_replace(' ', '', ucwords(strtolower(str_replace('-', ' ', $mot))));
Line 178... Line 178...
178
		return $classeNom;
178
		return $classeNom;
Line 184... Line 184...
184
		for ($i = 2; $i < $nbreDeRessources; $i++) {
184
		for ($i = 2; $i < $nbreDeRessources; $i++) {
185
			$ressourcesPourService[] = $this->ressources[$i];
185
			$ressourcesPourService[] = $this->ressources[$i];
186
		}
186
		}
187
		return $ressourcesPourService;
187
		return $ressourcesPourService;
188
	}
188
	}
189
 
-
 
190
	private function ajouterErreurHttp($entete, $message) {
-
 
191
		$this->erreursHttp[] = array('entete' => $entete, 'message' => $message);
-
 
192
	}
-
 
193
 
-
 
194
	private function etreEnErreurHttp() {
-
 
195
		$enErreur = false;
-
 
196
		if (count($this->erreursHttp) > 0) {
-
 
197
			$enErreur = true;
-
 
198
		}
-
 
199
		return $enErreur;
-
 
200
	}
-
 
201
 
-
 
202
	private function genererReponseHttp($resultat) {
-
 
203
		$this->genererEnteteHttp();
-
 
204
		$corps = $this->genererCorpsHttp($resultat);
-
 
205
		return $corps;
-
 
206
	}
-
 
207
 
-
 
208
	private function genererEnteteHttp($mime = 'application/json', $encodage= 'utf-8') {
-
 
209
		// Si aucune erreur n'a été établie (donc un tableau de résultat a bien ete renvoyé...)
-
 
210
		if ($this->etreEnErreurHttp()) {
-
 
211
			$this->emettreEntete($this->erreursHttp[0]['entete'], 'text/html', $encodage);
-
 
212
		} else {
-
 
213
			$this->emettreEntete(RestServeur::HTTP_CODE_OK, $mime, $encodage);
-
 
214
		}
-
 
215
	}
-
 
216
 
-
 
217
	private function emettreEntete($entete, $mime, $encodage) {
-
 
218
		// Gestion du type de contenu
-
 
219
		if (!is_null($mime) && !is_null($encodage)) {
-
 
220
			header("Content-Type: $mime; charset=$encodage");
-
 
221
		} else if (!is_null($mime) && is_null($encodage)) {
-
 
222
			header("Content-Type: $mime");
-
 
223
		}
-
 
224
		// Envoie de l'entête
-
 
225
		RestServeur::envoyerEnteteStatutHttp($entete);
-
 
226
	}
-
 
227
 
-
 
228
	private function genererCorpsHttp($resultats) {
-
 
229
		$corps = '';
-
 
230
		if ($this->etreEnErreurHttp()) {
-
 
231
			$corps = $this->erreursHttp[0]['message'];
-
 
232
		} else {
-
 
233
			$corps = json_encode($resultats);
-
 
234
		}
-
 
235
		return $corps;
-
 
236
	}
-
 
237
}
189
}
238
?>
190
?>
239
191