Rev 880 | Blame | Compare with Previous | Last modification | View Log | RSS feed
<?php// declare(encoding='UTF-8');/*** Gère le sous-service Legende de Cartes.** @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 LegendeCartes {private $parametres = array();private $ressources = array();const MIME_JSON = 'application/json';const PRESENCE_CHOROLOGIE = '15';private $formatsSupportes = array(self::MIME_JSON);private $tableOntologie = '';private $ontologies = '';private $legende = array();public function __construct(Conteneur $conteneur) {$this->Bdd = $conteneur->getBdd();$this->tableOntologie = $conteneur->getParametre('bdd_table_ontologies');}public function consulter($ressources, $parametres) {//$tpsDebut = microtime(true);$this->parametres = $parametres;$this->ressources = $ressources;$this->definirValeurParDefautDesParametres();$this->verifierParametres();$resultat = $this->obtenirResultat();return $resultat;}private function definirValeurParDefautDesParametres() {if (isset($this->parametres['retour']) == false) {$this->parametres['retour'] = self::MIME_JSON;}}private function verifierParametres() {$erreurs = array();if (isset($this->parametres['retour']) == false) {$erreurs[] = "Le paramètre type de retour 'retour' est obligatoire.";}if ($this->verifierValeurParametreRetour() == false) {$erreurs[] = "Le type de retour '{$this->parametres['retour']}' n'est pas supporté.";}if (count($erreurs) > 0) {$message = implode('<br />', $erreurs);$code = RestServeur::HTTP_CODE_MAUVAISE_REQUETE;throw new Exception($message, $code);}}private function verifierValeurParametreRetour() {return in_array($this->parametres['retour'], $this->formatsSupportes);}private function obtenirResultat() {$this->chargerOntologies();$this->chargerLegende();$resultat = new ResultatService();$resultat->corps = $this->legende;$resultat->mime = $this->parametres['retour'];return $resultat;}private function chargerOntologies() {$requete = "SELECT * FROM {$this->tableOntologie} ";$resultats = $this->Bdd->recupererTous($requete);if (!is_array($resultats) || count($resultats) <= 0) {$message = "Les données d'ontologies n'ont pu être chargées pour la ressource demandée";$code = RestServeur::HTTP_CODE_RESSOURCE_INTROUVABLE;throw new Exception($message, $code);}foreach ($resultats as $ontologie) {$this->ontologies[$ontologie['id']] = $this->extraireComplementsOntologies($ontologie);}}private function extraireComplementsOntologies($ontologie) {if ($ontologie['complements'] != '') {$complements = explode(',', trim($ontologie['complements']));foreach ($complements as $complement) {list($cle, $val) = explode('=', trim($complement));$ontologie[trim($cle)] = trim($val);}}return $ontologie;}private function chargerLegende() {foreach ($this->ontologies as $ontologie) {if ($ontologie['classe_id'] == self::PRESENCE_CHOROLOGIE) {$this->legende[] = array('code' => $ontologie['code'],'couleur' => $ontologie['legende'],'nom' => $ontologie['nom'],'description' => $ontologie['description']);}}}}?>