* @license GPL v3 * @license CECILL v2 * @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('
', $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']] = Commun::extraireComplementsOntologies($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']); } } } } ?>