Subversion Repositories eFlore/Applications.eflore-consultation

Rev

Rev 1365 | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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