Subversion Repositories eFlore/Projets.eflore-projets

Rev

Rev 747 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

<?php

/**
 * Classe qui fournit une legende recuperee dans une table d'ontologies pour la renvoyer au client
 *
 * @package framework-0.4
 * @author Alexandre GALIBERT <alexandre.galibert@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 $Id$
 * @copyright 2013 Tela Botanica (accueil@tela-botanica.org)
 *
 */

class LegendeCartes {
        
        const TYPE_MIME = 'application/json';
        const ID_CLASSE = '10';
        
        private $tableOntologies = '';
        private $ontologies = array();
        private $legende = array();
        
        
        public function __construct() {
                $this->tableOntologies = Config::get('bdd_table_ontologies');
        }
        
        public function obtenirLegende() {
                $this->chargerOntologies();
                $this->chargerLegende();
                
                $resultat = new ResultatService();
                $resultat->corps = $this->legende;
                $resultat->mime = self::TYPE_MIME;
                return $resultat;
        }
        
        private function chargerOntologies() {
                $bdd = new Bdd();
                $requete = "SELECT * FROM {$this->tableOntologies}";
                $resultats = $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 (strlen(trim($ontologie['complements'])) > 0) {
                        list($cle, $valeur) = explode('=', trim($ontologie['complements']));
                        $ontologie[trim($cle)] = trim($valeur);
                }
                return $ontologie;
        }
        
        private function chargerLegende() {
                foreach ($this->ontologies as $ontologie) {
                        if ($ontologie['classe_id'] == self::ID_CLASSE && isset($ontologie['legende'])) {
                                $this->legende[] = array(
                                        'code' => $ontologie['code'],
                                        'couleur' => $ontologie['legende'],
                                        'nom' => $ontologie['nom'],
                                        'description' => $ontologie['description']
                                );
                        }
                }
        }
        
}

?>