Rev 811 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Classe implémentant l'API d'eFlore Cartes pour le projet bdtxa.** @see http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=EfloreApi01Cartes** @package eFlore/services* @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)*/// TODO : Config et Outils sont des classes statiques qui doivent poser des pb pour les tests...class BdtxaCartes {private $parametres = array();private $ressources = array();public function consulter($ressources, $parametres) {$this->parametres = $parametres;$this->ressources = $ressources;$this->analyserRessources();$resultat = $this->executerSousService();return $resultat;}private function analyserRessources() {$nbreRessources = count($this->ressources);if ($nbreRessources == 0) {$message = "A implémenter : carte proportionnelle ensemble des infos";$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;throw new Exception($message, $code);} else if ($nbreRessources == 1) {if ($this->etreRessourceIdentifiants(0)) {$this->sousService = 'Taxons';} else if ($this->etreRessourceLegende(0)) {$message = "A implémenter : légende carte proportionnelle ensemble des infos";$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;throw new Exception($message, $code);} else {$message = "La ressource n°1 '{$this->ressources[0]} indiquée n'est pas valable.";$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;throw new Exception($message, $code);}} else if ($nbreRessources == 2) {if ($this->etreRessourceIdentifiants(0) && $this->etreRessourceLegende(1)) {$this->sousService = 'Legende';}}}private function etreRessourceIdentifiants($position) {$ok = true;if (isset($this->ressources[$position])) {$ids = $this->ressources[$position];$projetPattern = '(?:(?:(?:[A-Za-z0-9]+\.)?(?:nn|nt)?:)?(?:[0-9]+,)*[0-9]+)';$patternComplet = "/^$projetPattern(?:;$projetPattern)*$/i";$ok = preg_match($patternComplet, $ids) ? true : false;}return $ok;}private function etreRessourceLegende($position) {$ok = true;if (isset($this->ressources[$position])) {$legende = $this->ressources[$position];$ok = ($legende == 'legende') ? true : false;}return $ok;}private function executerSousService() {if (isset($this->sousService)) {$classe = $this->sousService.'Cartes';require_once dirname(__FILE__).DS.'cartes'.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;}}?>