Subversion Repositories eFlore/Applications.eflore-consultation

Rev

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

<?php
// declare(encoding='UTF-8');
/**
 * Classe mère du module fiche metadonnées.
 *
 * @category    PHP 5.2
 * @package             eflore-consultation
 * @author              Aurélien Peronnet <aurelien@tela-botanica.org>
 * @author              Jean-Pascal MILCENT <jpm@tela-botanica.org>
 * @author              Delphine CAUQUIL <delphine@tela-botanica.org>
 * @copyright   2011 Tela-Botanica
 * @license             http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
 * @license             http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
 * @version             $Id$
 */
class FicheMetadonnees extends aControleur {

        private $projet = '';
        private $serviceMetaDonnees;

        public function __construct($metadonnees = null) {
                $this->capturerParametres();
                $this->serviceMetaDonnees = (is_null($this->serviceMetaDonnees)) ? new MetaDonnees($this->projet) : $metadonnees;
        }

        public function executerActionParDefaut() {
                $this->executerAffichageMetaDonnees();
        }

        public function chargerMetadonneesHtml() {
                $meta = $this->serviceMetaDonnees->getMetaDonnees();
                $donnees['i18n'] = I18n::get('Metadonnees');
                foreach ($meta as $index => $metadonnees) {
                        $meta[$index] = $this->formaterClesMetadonnees($metadonnees);
                }
                $donnees['metadonnees'] = $meta;
                $html = $this->getVue(dirname(__FILE__).'/squelettes/metadonnees', $donnees);
                return $html;
        }

        public function executerAffichageMetaDonnees($donnees) {
                header('Content-type: text/html; charset=UTF-8');
                $html = $this->chargerMetadonneesHtml();
                echo $html;
                exit;
        }

        private function capturerParametres() {
                if (isset($_GET['projet'])) {
                        $this->projet = $_GET['projet'];
                }
        }
        
        private function formaterClesMetadonnees($metadonnees) {
                $meta_fmt = array();
                foreach ($metadonnees as $cle => $metadonnee) {
                        $cle_fmt = str_replace('.', '_', $cle);
                        if(is_array($metadonnee)) {
                                $metadonnee = $this->formaterClesMetadonnees($metadonnee);
                        } elseif($this->estUnLien($metadonnee)) {
                                $metadonnee = $this->formaterLienMetadonnee($metadonnee);
                        }
                        $meta_fmt[$cle_fmt] = $metadonnee;              
                }
                return $meta_fmt;
        }
        
        private function estUnLien($valeur) {
                // le test du pauvre, mais ça suffit ici
                // car nous controlons le format des métadonnées
                return strpos($valeur, "http://") !== false;
        }
        
        private function formaterLienMetadonnee($lien) {
                return '<a href="'.$lien.'" target="_blank">'.$lien.'</a>';
        }
}
?>