Subversion Repositories eFlore/Applications.eflore-consultation

Rev

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

Rev Author Line No. Line
1026 alex 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Classe mère du module Liste.
5
 *
6
 * @category	PHP 5.2
7
 * @package		eflore-consultation
8
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
9
 * @author		Delphine CAUQUIL <delphine@tela-botanica.org>
10
 * @copyright	2011 Tela-Botanica
11
 * @license		http://www.gnu.org/licenses/gpl.html Licence GNU-GPL-v3
12
 * @license		http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL-v2
13
 * @version		$Id$
14
 */
15
class Repartition extends aControleur {
16
 
17
	private $conteneur = null;
18
	private $nomCourant = null;
19
	private $referentiel = 'bdtfx';
20
	private $donnees = array();
21
	private $tailleBloc = "190x178";
22
	private $serviceChorodep = null;
23
	private $cartes;
24
	private $meta;
25
	private $appUrls;
26
 
27
	public function __construct(Conteneur $conteneur) {
28
		$this->conteneur = $conteneur;
29
		$this->nomCourant = $this->conteneur->getNomCourant();
30
		$this->referentiel = $this->conteneur->getParametre('referentiel');
31
		$this->cartes = $this->conteneur->getApiCartes();
32
		$this->meta = $this->conteneur->getApiMetaDonnees();
33
		$this->appUrls = $this->conteneur->getAppUrls();
34
	}
35
 
36
	public function obtenirDonnees() {
37
		$this->getRepartition();
38
		$this->getMoissonnage();
39
		$this->donnees['widget']['nt'] = $this->nomCourant->getNt();
40
		$this->donnees['widget']['nn'] = $this->nomCourant->getNnr();
41
		$this->donnees['widget']['referentiel'] = $this->referentiel;
42
		return $this->donnees;
43
	}
44
 
45
	public function obtenirDonneesExport() {
1028 raphael 46
		$this->getRepartition();
47
		$donnees['chorodep'] = $this->donnees['repartition'];
48
		$this->getMoissonnageExport();
49
		// TODO: renommer l'index "eflore" en moissonnage
50
		// et renommer dans pdf_export/squelettes/pdf_repartition.tpl.html
51
		$donnees['eflore'] = $this->donnees['moissonnage'];
1026 alex 52
		return $donnees;
53
	}
54
 
55
	private function getRepartition() {
56
		$projetRepartition = Config::get($this->referentiel.'.baseRepartition');
1028 raphael 57
		// eg: eflore ou chorodep
58
		// cf: bdtfx.ini, bdtxa.ini
1026 alex 59
		if ($projetRepartition != "") {
60
			$this->cartes->setProjet($projetRepartition);
61
			$this->cartes->setLargeur('630');
62
 
63
			//TODO: démochir ce code
64
			// Chargement des nn des synonymes pour obtenir une carte plus complète
65
			$noms = $this->conteneur->getApiNoms();
66
			$syns = $noms->getSynonymes($this->nomCourant->getNnr());
67
			$nns_syns = array_keys($syns['resultat']);
68
			$nns_syns[] = $this->nomCourant->getNnr();
69
			$id = 'nn:'.implode(',', $nns_syns);
70
 
71
			$this->cartes->setId($id);
72
			$repartition['svgUrl'] = $this->cartes->getUrlDataSvg();
73
			$repartition['pngUrl'] = $this->cartes->getUrlPng();
74
			$repartition['legende'] = $this->cartes->getLegendeId();
75
			$this->meta->setProjet($projetRepartition);
76
			$meta = $this->meta->getMetaDonnees();
1130 aurelien 77
			$repartition['meta'] = $meta[0];
1026 alex 78
			$repartition['meta']['url'] = $this->appUrls->obtenirUrlMetaDonnees($projetRepartition);
79
			$this->donnees['repartition'] = $repartition;
80
		}
81
	}
82
 
83
	private function getMoissonnage() {
84
		$projetMoissonnage = Config::get($this->referentiel.'.baseMoissonnage');
1028 raphael 85
		if (! $projetMoissonnage) return;
86
		$this->cartes->setProjet('moissonnage');
87
		$this->cartes->setLargeur('600');
88
		$this->cartes->setInfoNom($this->nomCourant->getNt());
89
		$this->cartes->setInfoReferentiel($this->referentiel);
90
		$eflore['mapUrl'] = $this->cartes->getUrlMapSvg();
1112 aurelien 91
		$eflore['mapTelechargementUrls'] = array('png' => $this->cartes->getUrlTelechargementMapPng(),
92
												'html' => $this->cartes->getUrlTelechargementMapHtml());
1028 raphael 93
		$eflore['legende'] = $this->cartes->getLegende();
94
		$this->donnees['moissonnage'] = $eflore;
1026 alex 95
	}
96
 
97
	private function getMoissonnageExport() {
1028 raphael 98
		$projetMoissonnage = Config::get($this->referentiel.'.baseMoissonnage');
99
		if (! $projetMoissonnage) return;
100
		$this->cartes->setProjet($projetMoissonnage);
1026 alex 101
		$this->cartes->setLargeur('min');
102
		$this->cartes->setInfoNom($this->nomCourant->getNomRetenu());
103
		$eflore['min'] = $this->cartes->getUrlEflorePng();
104
		$eflore['legende'] = $this->cartes->getLegende();
1028 raphael 105
		$this->donnees['moissonnage'] = $eflore;
1026 alex 106
	}
107
 
108
	public function getBloc() {
109
		$donnees['chorodep'] = $this->getChorodepMiniature();
110
		$donnees['eflore'] = $this->getMoissonnageMiniature();
1049 raphael 111
 
112
		// TODO: moche, comment gérer le fait que l'onglet "synthèse", en "bdtxa", doive
113
		// afficher la carte chorologie, et non la carte chorodep.
114
		// workaround: écrasement de l'URL dans ['répartition']['chorodep']:
115
		if($this->referentiel == 'bdtxa') {
116
			$syns = $this->conteneur->getApiNoms()->getSynonymes($this->nomCourant->getNnr());
117
			$nns_syns = array_keys($syns['resultat']);
118
			$nns_syns[] = $this->nomCourant->getNnr();
119
			$donnees['chorodep'] = Cartes::getCarteUrlPng(Config::get($this->referentiel.'.baseRepartition'),
120
														  'nn:'.implode(',', $nns_syns),
121
														  '190x178');
122
		}
123
 
1026 alex 124
		return $donnees;
125
	}
126
 
127
	private function getChorodepMiniature() {
1165 aurelien 128
		$projetRepartition = Config::get($this->referentiel.'.baseRepartition');
129
		$url = null;
130
		if ($projetRepartition != "") {
131
			$this->cartes->setProjet($projetRepartition);
132
			$this->cartes->setProjet('chorodep');
133
			$this->cartes->setLargeur('190x178');
134
			//TODO: démochir ce code
135
			// Chargement des nn des synonymes pour obtenir une carte plus complète
136
			$noms = $this->conteneur->getApiNoms();
137
			$syns = $noms->getSynonymes($this->nomCourant->getNnr());
138
			$nns_syns = array_keys($syns['resultat']);
139
			$nns_syns[] = $this->nomCourant->getNnr();
140
			$id = 'nn:'.implode(',', $nns_syns);
141
			$this->cartes->setId($id);
142
			$url =  $this->cartes->getUrlPng();
143
		}
144
		return $url;
1026 alex 145
	}
146
 
147
	private function getMoissonnageMiniature() {
1165 aurelien 148
		$projetMoissonnage = Config::get($this->referentiel.'.baseMoissonnage');
149
		$url = null;
1180 aurelien 150
		if ($projetMoissonnage != "") {
1165 aurelien 151
			$this->cartes->setProjet('moissonnage');
152
			$this->cartes->setLargeur('190');
153
			$this->cartes->setInfoReferentiel($this->referentiel);
154
			$this->cartes->setInfoNom($this->nomCourant->getNt());
155
			$url = $this->cartes->getUrlMapPng();
156
		}
157
		return $url;
1026 alex 158
	}
159
}
160
?>