Subversion Repositories eFlore/Applications.eflore-consultation

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
265 aurelien 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Classe mère du module fiche metadonnées.
5
 *
6
 * @category	PHP 5.2
7
 * @package		eflore-consultation
8
 * @author		Aurélien Peronnet <aurelien@tela-botanica.org>
9
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
10
 * @author		Delphine CAUQUIL <delphine@tela-botanica.org>
11
 * @copyright	2011 Tela-Botanica
12
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
13
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
14
 * @version		$Id$
15
 */
16
class FicheMetadonnees extends aControleur {
288 jpm 17
 
18
	private $projet = '';
265 aurelien 19
	private $serviceMetaDonnees;
288 jpm 20
 
265 aurelien 21
	public function __construct($metadonnees = null) {
22
		$this->capturerParametres();
23
		$this->serviceMetaDonnees = (is_null($this->serviceMetaDonnees)) ? new MetaDonnees($this->projet) : $metadonnees;
24
	}
288 jpm 25
 
265 aurelien 26
	public function executerActionParDefaut() {
27
		$this->executerAffichageMetaDonnees();
28
	}
288 jpm 29
 
265 aurelien 30
	public function chargerMetadonneesHtml() {
1126 aurelien 31
		$meta = $this->serviceMetaDonnees->getMetaDonnees();
1157 aurelien 32
		$meta_resume = $this->formaterResumeMetadonnees($meta[0]);
1128 aurelien 33
		$donnees['i18n'] = I18n::get('Metadonnees');
1126 aurelien 34
		foreach ($meta as $index => $metadonnees) {
35
			$meta[$index] = $this->formaterClesMetadonnees($metadonnees);
36
		}
37
		$donnees['metadonnees'] = $meta;
1157 aurelien 38
		$donnees['metadonnees_resume'] = $meta_resume;
265 aurelien 39
		$html = $this->getVue(dirname(__FILE__).'/squelettes/metadonnees', $donnees);
40
		return $html;
41
	}
1157 aurelien 42
 
43
	private function formaterResumeMetadonnees($meta) {
44
		return array('auteurs' => $this->formaterAuteurs($meta),
45
				'url' => $this->formaterUrl($meta),
46
				'description' => $meta['description'],
47
				'titre' => $meta['titre'],
48
				'date' => strftime("%d/%m/%Y", strtotime($meta['date_creation']))
49
		);
50
	}
51
 
52
	private function formaterAuteurs($meta) {
53
		$contacts = array();
54
		$noms = array();
55
		if(isset($meta['createurs.details'])) {
56
			foreach($meta['createurs.details'] as $createur_detail) {
57
				$auteur_nom_fmt = isset($createur_detail["p.nom"]) ? $createur_detail["p.nom"] : "";
58
				$auteur_prenom_fmt = isset($createur_detail["p.prenom"]) ? $createur_detail["p.prenom"] : "";
59
				$structure_fmt = isset($createur_detail["o.nom"]) ? $createur_detail["o.nom"] : "";
60
				$auteur_contact = isset($createur_detail["p.courriel"]) ? $createur_detail["p.courriel"] : "";
61
				if($auteur_prenom_fmt != "" || $auteur_nom_fmt != "") {
62
					$nom_prenom_structure_fmt = $auteur_prenom_fmt.' '.$auteur_nom_fmt;
63
					if($structure_fmt != "") {
64
						$nom_prenom_structure_fmt .= " (".$structure_fmt.")";
65
					}
66
					$noms[] = $nom_prenom_structure_fmt;
67
				}
68
				if($auteur_contact != "") {
69
					$contacts[] = $auteur_contact;
70
				}
71
			}
72
		}
73
		$createurs = array('noms' => implode(", ", $noms), 'contacts' => implode(", ", $contacts));
74
		return $createurs;
75
	}
76
 
77
	private function formaterUrl($meta) {
78
		return $meta['url_projet'];
79
	}
288 jpm 80
 
265 aurelien 81
	public function executerAffichageMetaDonnees($donnees) {
960 delphine 82
		header('Content-type: text/html; charset=UTF-8');
270 aurelien 83
		$html = $this->chargerMetadonneesHtml();
265 aurelien 84
		echo $html;
85
		exit;
86
	}
288 jpm 87
 
265 aurelien 88
	private function capturerParametres() {
89
		if (isset($_GET['projet'])) {
90
			$this->projet = $_GET['projet'];
91
		}
92
	}
1126 aurelien 93
 
94
	private function formaterClesMetadonnees($metadonnees) {
95
		$meta_fmt = array();
96
		foreach ($metadonnees as $cle => $metadonnee) {
97
			$cle_fmt = str_replace('.', '_', $cle);
98
			if(is_array($metadonnee)) {
99
				$metadonnee = $this->formaterClesMetadonnees($metadonnee);
100
			} elseif($this->estUnLien($metadonnee)) {
101
				$metadonnee = $this->formaterLienMetadonnee($metadonnee);
102
			}
103
			$meta_fmt[$cle_fmt] = $metadonnee;
104
		}
105
		return $meta_fmt;
106
	}
107
 
108
	private function estUnLien($valeur) {
109
		// le test du pauvre, mais ça suffit ici
110
		// car nous controlons le format des métadonnées
111
		return strpos($valeur, "http://") !== false;
112
	}
113
 
114
	private function formaterLienMetadonnee($lien) {
115
		return '<a href="'.$lien.'" target="_blank">'.$lien.'</a>';
116
	}
265 aurelien 117
}
118
?>