* @author Jean-Pascal MILCENT * @author Delphine CAUQUIL * @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(); $meta_resume = $this->formaterResumeMetadonnees($meta[0]); $donnees['i18n'] = I18n::get('Metadonnees'); foreach ($meta as $index => $metadonnees) { $meta[$index] = $this->formaterClesMetadonnees($metadonnees); } $donnees['metadonnees'] = $meta; $donnees['metadonnees_resume'] = $meta_resume; $html = $this->getVue(dirname(__FILE__).'/squelettes/metadonnees', $donnees); return $html; } private function formaterResumeMetadonnees($meta) { return array('auteurs' => $this->formaterAuteurs($meta), 'url' => $this->formaterUrl($meta), 'description' => $meta['description'], 'citation' => $meta['citation'], 'titre' => $meta['titre'], 'date' => strftime("%d/%m/%Y", strtotime($meta['date_creation'])) ); } private function formaterAuteurs($meta) { $contacts = array(); $noms = array(); if(isset($meta['createurs.details'])) { foreach($meta['createurs.details'] as $createur_detail) { $auteur_nom_fmt = isset($createur_detail["p.nom"]) ? $createur_detail["p.nom"] : ""; $auteur_prenom_fmt = isset($createur_detail["p.prenom"]) ? $createur_detail["p.prenom"] : ""; $structure_fmt = isset($createur_detail["o.nom"]) ? $createur_detail["o.nom"] : ""; $auteur_contact = isset($createur_detail["p.courriel"]) ? $createur_detail["p.courriel"] : ""; if($auteur_prenom_fmt != "" || $auteur_nom_fmt != "") { $nom_prenom_structure_fmt = $auteur_prenom_fmt.' '.$auteur_nom_fmt; if($structure_fmt != "") { $nom_prenom_structure_fmt .= " (".$structure_fmt.")"; } $noms[] = $nom_prenom_structure_fmt; } if($auteur_contact != "") { $contacts[] = $auteur_contact; } } } $createurs = array('noms' => implode(", ", $noms), 'contacts' => implode(", ", $contacts)); return $createurs; } private function formaterUrl($meta) { return $meta['url_projet']; } 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 ''.$lien.''; } } ?>