Rev 582 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php/*** Classe Syntaxons.php permet de faire des requetes de baseveg autour du code CATMINAT ou des niveaux de syntaxons* Un syntaxon est une unité de végétation ( groupement )* Cette classe analyse les ressources pour rediriger vers la classe du web service correpondant** @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=EfloreApi01Syntaxons** Encodage en entrée : utf8* Encodage en sortie : utf8* @package eflore-projets* @author Mathilde SALTHUN-LASSALLE <mathilde@tela-botanica.org>* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>* @version 1.0* @copyright 1999-2012 Tela Botanica (accueil@tela-botanica.org)*/class Syntaxons extends Commun {// héritage de commun à cause du cache !private $sousService;public function consulter($ressources, $parametres) {spl_autoload_register(array($this, 'chargerSyntaxons'));$this->parametres = $parametres;$this->ressources = $ressources;$this->analyserRessources();$resultat = $this->executerSousService();return $resultat;}private function analyserRessources() {$nb_ressources = count($this->ressources);switch ($nb_ressources) {case 0 : // syntaxons/$this->sousService = 'SyntaxonsTous';break;case 1 : // syntaxons/#type_code:#code$this->sousService = 'SyntaxonsCode';break;case 2 : // syntaxons/code catminat/relations$this->sousService = 'SyntaxonsRelationsToutes';break;case 3 : // syntaxons/code catminat/relations /#type_relation$this->sousService = 'SyntaxonsRelation';break;default:$message = 'Erreur dans l\'url de votre requête : </br> La ressource demandée n\'existe pas.';$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;throw new Exception($message, $code);break;}}private function executerSousService() {if (isset($this->sousService)) {$classe = $this->sousService;//require_once dirname(__FILE__).DS.'syntaxons'.DS.$classe.'.php';$sousService = new $classe(new Conteneur());$resultat = $sousService->consulter($this->ressources, $this->parametres);} else {$message = "L'analyse des ressources n'a pu aboutir à déterminer le sous service à executer.";$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;throw new Exception($message, $code);}return $resultat;}private function chargerSyntaxons($classe) {$base = dirname(__FILE__).DS;$chemin = $base.DS.'syntaxons'.DS;$fichierATester = $chemin.$classe.'.php';if (file_exists($fichierATester)) {include_once $fichierATester;return null;}}}?>