25 |
jpm |
1 |
<?php
|
|
|
2 |
// declare(encoding='UTF-8');
|
|
|
3 |
/**
|
|
|
4 |
* classe Controleur du module Carte.
|
|
|
5 |
*
|
|
|
6 |
* @package Collection
|
|
|
7 |
* @category Php5
|
|
|
8 |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
|
|
|
9 |
* @copyright 2010 Tela-Botanica
|
|
|
10 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
|
|
|
11 |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
|
|
|
12 |
* @version SVN: $Id$
|
|
|
13 |
*/
|
|
|
14 |
class Carte extends ColControleur {
|
|
|
15 |
|
|
|
16 |
//+----------------------------------------------------------------------------------------------------------------+
|
|
|
17 |
// Méthodes
|
|
|
18 |
/**
|
|
|
19 |
* Fonction d'affichage par défaut, elle appelle la liste des administrateurs
|
|
|
20 |
*/
|
|
|
21 |
public function executerActionParDefaut() {
|
|
|
22 |
return $this->cartographier();
|
|
|
23 |
}
|
|
|
24 |
|
|
|
25 |
/**
|
|
|
26 |
* Cartographier les collections.
|
|
|
27 |
* @return string la vue correspondante
|
|
|
28 |
*/
|
|
|
29 |
public function cartographier() {
|
|
|
30 |
// Initialisation de variable
|
|
|
31 |
$donnees = array();
|
|
|
32 |
$structureDao = $this->getModele('StructureDao');
|
|
|
33 |
|
|
|
34 |
// Construction des données à passer à la cartographie
|
|
|
35 |
$zones = $this->chargerZonesGeo(Config::get('carte_base_nom'));
|
|
|
36 |
$zones_infos = $structureDao->getStructureParZoneGeo('FRD');
|
|
|
37 |
$zones = $this->chargerZonesNbre($zones, $zones_infos);
|
|
|
38 |
$zones = $this->chargerZonesUrls($zones);
|
|
|
39 |
Debug::printr($zones);
|
|
|
40 |
|
|
|
41 |
// Création de la carte
|
|
|
42 |
$options = array(
|
|
|
43 |
'carte_nom' => 'france',
|
|
|
44 |
'formule' => Cartographie::FORMULE_PROPORTIONNEL,
|
|
|
45 |
'fond_fichier' => Config::get('carte_base_nom'),
|
|
|
46 |
'fond_dossier' => Application::getChemin().Config::get('carte_chemin_fonds'),
|
|
|
47 |
'stock_dossier' => Config::get('carte_chemin_sotckage'),
|
|
|
48 |
'infos' => $zones);
|
|
|
49 |
$cartographie = Composant::fabrique('cartographie', $options);
|
|
|
50 |
$cartographie->creerCarte();
|
|
|
51 |
$donnees['map'] = $cartographie->getImageMap();
|
|
|
52 |
|
|
|
53 |
$resultat = $this->getVue('carte', $donnees);
|
|
|
54 |
$this->setSortie(self::RENDU_CORPS, $resultat);
|
|
|
55 |
}
|
|
|
56 |
|
|
|
57 |
private function chargerZonesNbre($zones, $zones_infos) {
|
|
|
58 |
foreach ($zones as $id => &$infos) {
|
|
|
59 |
if (isset($zones_infos[$id])) {
|
|
|
60 |
$nbre = $zones_infos[$id];
|
|
|
61 |
$infos['info_nbre'] = $nbre;
|
|
|
62 |
} else {
|
|
|
63 |
$infos['info_nbre'] = 0;
|
|
|
64 |
}
|
|
|
65 |
}
|
|
|
66 |
return $zones;
|
|
|
67 |
}
|
|
|
68 |
|
|
|
69 |
private function chargerZonesUrls($zones) {
|
|
|
70 |
$this->url->setVariableRequete('module', 'Recherche');
|
|
|
71 |
$this->url->setVariableRequete('action', 'rechercher');
|
|
|
72 |
$this->url->setVariableRequete('recherche', 'd:%s');
|
|
|
73 |
$url = $this->url->getURL();
|
|
|
74 |
foreach ($zones as $id => &$infos) {
|
|
|
75 |
$infos['url'] = sprintf($url, $id);
|
|
|
76 |
}
|
|
|
77 |
$this->url->unsetVariablesRequete(array('module', 'action', 'recherche'));
|
|
|
78 |
return $zones;
|
|
|
79 |
}
|
|
|
80 |
|
|
|
81 |
/**
|
|
|
82 |
* Charge le fichier csv des zones géographique de la carte
|
|
|
83 |
*/
|
|
|
84 |
private function chargerZonesGeo($nom_carte) {
|
|
|
85 |
$fichier_csv = Application::getChemin().Config::get('carte_chemin_fonds').$nom_carte.'.csv';
|
|
|
86 |
$zones = array();
|
|
|
87 |
if (($handle = fopen($fichier_csv, 'r')) !== false) {
|
|
|
88 |
$ligne = 1;
|
|
|
89 |
$cles = array();
|
|
|
90 |
while (($donnees = fgetcsv($handle, 1000, ',')) !== false) {
|
|
|
91 |
$cle = array_shift($donnees);
|
|
|
92 |
if ($ligne == 1) {
|
|
|
93 |
// Ligne 1 : les noms des champs
|
|
|
94 |
$cles = $donnees;
|
|
|
95 |
} else {
|
|
|
96 |
// Ligne > 1 : traitements des données
|
|
|
97 |
$zones[$cle] = array_combine($cles, $donnees);
|
|
|
98 |
}
|
|
|
99 |
$ligne++;
|
|
|
100 |
}
|
|
|
101 |
fclose($handle);
|
|
|
102 |
}
|
|
|
103 |
return $zones;
|
|
|
104 |
}
|
|
|
105 |
}
|
|
|
106 |
?>
|