31 |
aurelien |
1 |
<?php
|
|
|
2 |
// declare(encoding='UTF-8');
|
|
|
3 |
/**
|
|
|
4 |
* classe Controleur du module Carte.
|
|
|
5 |
*
|
472 |
jpm |
6 |
* @package Collection
|
|
|
7 |
* @category Php5
|
|
|
8 |
* @author Jean-Pascal MILCENT <jpm@tela-botanica.org>
|
|
|
9 |
* @author Aurélien Peronnet <aurelien@tela-botanica.org>
|
31 |
aurelien |
10 |
* @copyright 2010 Tela-Botanica
|
472 |
jpm |
11 |
* @license http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
|
|
|
12 |
* @license http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
|
31 |
aurelien |
13 |
*/
|
120 |
aurelien |
14 |
class CartoControleur extends AppControleur {
|
31 |
aurelien |
15 |
|
|
|
16 |
// identifiant de la france pour l'accès direct
|
472 |
jpm |
17 |
private $id_france = 'fr';
|
31 |
aurelien |
18 |
|
44 |
aurelien |
19 |
// nom du fond de carte en cours
|
472 |
jpm |
20 |
private $nom_fond = '';
|
44 |
aurelien |
21 |
|
472 |
jpm |
22 |
private $niveau = 0;
|
31 |
aurelien |
23 |
|
472 |
jpm |
24 |
// contient le tableau de données sur les continents une fois chargé
|
|
|
25 |
private $donnees_continents = array();
|
31 |
aurelien |
26 |
|
472 |
jpm |
27 |
// contient le tableau de données sur les pays une fois chargé
|
|
|
28 |
private $donnees_pays = array();
|
31 |
aurelien |
29 |
|
472 |
jpm |
30 |
// contient le tableau de données sur les departements une fois chargé
|
|
|
31 |
private $donnees_departements = array();
|
|
|
32 |
|
|
|
33 |
// contient le nombre total d'inscrits dans la zone en cours de consultation
|
|
|
34 |
private $total_inscrits_zone = 0;
|
|
|
35 |
|
|
|
36 |
//+----------------------------------------------------------------------------------------------------------------+
|
|
|
37 |
// Méthodes
|
|
|
38 |
|
|
|
39 |
/**
|
|
|
40 |
* Fonction d'affichage par défaut, elle appelle la cartographie
|
|
|
41 |
*/
|
|
|
42 |
public function executerActionParDefaut() {
|
|
|
43 |
return $this->cartographier(1);
|
|
|
44 |
}
|
|
|
45 |
|
|
|
46 |
/**
|
|
|
47 |
* Cartographier un annuaire.
|
|
|
48 |
* @param int $id_annuaire l'identitifiant de l'annuaire à cartographier
|
|
|
49 |
* @param int $continent l'identitifiant du continent sur lequel on se trouve
|
|
|
50 |
* @param string $pays l'identitifiant du pays sur lequel on se trouve (normalement seulement la france si présent)
|
|
|
51 |
* @return string la vue correspondante
|
|
|
52 |
*/
|
|
|
53 |
public function cartographier($id_annuaire, $continent= null , $pays = null) {
|
|
|
54 |
// Initialisation de variable
|
|
|
55 |
$donnees = array();
|
|
|
56 |
|
44 |
aurelien |
57 |
// la présence d'un pays (non) et d'un continent (ou non) détermine le niveau de carte à afficher
|
472 |
jpm |
58 |
$this->niveau = $this->calculerNiveau($continent, $pays);
|
31 |
aurelien |
59 |
|
472 |
jpm |
60 |
// suivant le niveau, continent et pays, on renvoie un template html différent
|
|
|
61 |
$fond = $this->renvoyerPrefixePourNiveau($this->niveau, $continent, $pays);
|
44 |
aurelien |
62 |
|
|
|
63 |
$carte = '';
|
|
|
64 |
|
|
|
65 |
// chaque continent possède un fond de carte différent
|
472 |
jpm |
66 |
if ($this->niveau == 1) {
|
|
|
67 |
$carte = $this->renvoyerSuffixePourContinent($this->niveau, $continent, $pays);
|
44 |
aurelien |
68 |
}
|
|
|
69 |
|
472 |
jpm |
70 |
// Création de la carte
|
|
|
71 |
$options = array(
|
|
|
72 |
'carte_nom' => $fond.$carte,
|
|
|
73 |
'formule' => Cartographie::FORMULE_PROPORTIONNEL,
|
|
|
74 |
'couleur_claire' => Config::get('carte_couleur_claire'),
|
|
|
75 |
'couleur_foncee' => Config::get('carte_couleur_foncee'),
|
|
|
76 |
'fond_fichier' => Config::get('carte_base_nom_'.$fond).$carte,
|
|
|
77 |
'fond_dossier' => Application::getChemin().Config::get('carte_fonds_chemin'),
|
|
|
78 |
'stock_dossier' => Config::get('carte_stockage_chemin'),
|
|
|
79 |
'stock_url' => Config::get('carte_stockage_url'),
|
|
|
80 |
'debug' => Config::get('carte_mode_debug'));
|
|
|
81 |
$cartographie = Composant::fabrique('cartographie', $options);
|
44 |
aurelien |
82 |
|
472 |
jpm |
83 |
$this->nom_fond = Config::get('carte_base_nom_'.$fond).$carte;
|
44 |
aurelien |
84 |
|
472 |
jpm |
85 |
// Construction des données nécessaires à la cartographie
|
|
|
86 |
$zones = $cartographie->getCarteZones();
|
|
|
87 |
$this->chargerZonesNbre($id_annuaire,$zones, $this->niveau);
|
|
|
88 |
$this->chargerZonesUrls($id_annuaire, $zones, $continent, $pays, $this->niveau);
|
56 |
aurelien |
89 |
|
472 |
jpm |
90 |
$navigation = new NavigationControleur();
|
221 |
aurelien |
91 |
$donnees_navigation = $this->obtenirUrlsNavigation($id_annuaire, $continent, $pays, null);
|
294 |
aurelien |
92 |
$donnees['infos_pays'] = $donnees_navigation;
|
221 |
aurelien |
93 |
$donnees['navigation'] = $navigation->afficherBandeauNavigationCartographie($donnees_navigation);
|
294 |
aurelien |
94 |
$donnees['nb_resultats'] = $this->total_inscrits_zone;
|
56 |
aurelien |
95 |
|
472 |
jpm |
96 |
$cartographie->setCarteZones($zones);
|
31 |
aurelien |
97 |
|
472 |
jpm |
98 |
$cartographie->creerCarte();
|
|
|
99 |
$donnees['map'] = $cartographie->getImageMap();
|
31 |
aurelien |
100 |
|
472 |
jpm |
101 |
$resultat = $this->getVue('cartes/'.$fond, $donnees);
|
|
|
102 |
return $resultat;
|
|
|
103 |
}
|
31 |
aurelien |
104 |
|
44 |
aurelien |
105 |
/**
|
|
|
106 |
* Charge le nombre d'inscrit par zone pour un annuaire donné
|
|
|
107 |
* @param int $id_annuaire l'identifiant de l'annuaire
|
|
|
108 |
* @param array $zones les zones à cartographier (attention, passage par référence, donc les zones sont modifiées)
|
|
|
109 |
* @param int $niveau le niveau de la carto (monde, continent, ou pays)
|
|
|
110 |
*/
|
472 |
jpm |
111 |
private function chargerZonesNbre($id_annuaire, &$zones, $niveau = 0) {
|
|
|
112 |
$metaModele = $this->getModele('AnnuaireModele');
|
|
|
113 |
// on charge les inscrits pour le niveau donné
|
|
|
114 |
$zones_infos = $this->chargerNombreInscritsParNiveauGeographique($id_annuaire, $niveau);
|
31 |
aurelien |
115 |
|
472 |
jpm |
116 |
foreach ($zones as $id => &$infos) {
|
44 |
aurelien |
117 |
// si l'on a des données pour la zone, on renseigne le nombre d'inscrits
|
472 |
jpm |
118 |
if (isset($zones_infos[$id])) {
|
|
|
119 |
$nbre = $zones_infos[$id];
|
|
|
120 |
$infos['info_nombre'] = $nbre;
|
|
|
121 |
$this->total_inscrits_zone += $nbre;
|
|
|
122 |
} else {
|
|
|
123 |
// sinon on le met à 0
|
|
|
124 |
$infos['info_nombre'] = 0;
|
|
|
125 |
}
|
|
|
126 |
}
|
|
|
127 |
}
|
31 |
aurelien |
128 |
|
44 |
aurelien |
129 |
/**
|
|
|
130 |
* Charge les des zones pour un annuaire donné
|
|
|
131 |
* @param int $id_annuaire l'identifiant de l'annuaire
|
|
|
132 |
* @param array $zones les zones à cartographier (attention, passage par référence, donc les zones sont modifiées)
|
|
|
133 |
* @param int $continent l'identitifiant du continent sur lequel on se trouve
|
472 |
jpm |
134 |
* @param string $pays l'identitifiant du pays sur lequel on se trouve (normalement seulement la france si présent)
|
44 |
aurelien |
135 |
* @param int $niveau le niveau de la carto (monde, continent, ou pays)
|
|
|
136 |
*/
|
472 |
jpm |
137 |
private function chargerZonesUrls($id_annuaire, &$zones, $continent = null, $pays = null, $niveau = 0) {
|
31 |
aurelien |
138 |
|
472 |
jpm |
139 |
$url = new URL(Config::get('url_base'));
|
56 |
aurelien |
140 |
|
472 |
jpm |
141 |
$url->setVariableRequete('id_annuaire', $id_annuaire);
|
31 |
aurelien |
142 |
|
472 |
jpm |
143 |
foreach ($zones as $id => &$infos) {
|
31 |
aurelien |
144 |
|
472 |
jpm |
145 |
switch ($niveau) {
|
44 |
aurelien |
146 |
// niveau 0 de la carte : on affiche tous les continents
|
|
|
147 |
// l'url va pointer vers un continent en particulier
|
|
|
148 |
case 0:
|
|
|
149 |
$url->setVariableRequete('m', 'annuaire_afficher_carte');
|
|
|
150 |
$url->setVariableRequete('continent', $id);
|
|
|
151 |
break;
|
31 |
aurelien |
152 |
|
44 |
aurelien |
153 |
// niveau 1, on est sur un continent en particulier : on affiche le détail du continent demandé
|
|
|
154 |
// l'url pointe sur des pays
|
|
|
155 |
case 1:
|
|
|
156 |
$url->setVariableRequete('continent', $continent);
|
31 |
aurelien |
157 |
|
44 |
aurelien |
158 |
// si le pays c'est la france alors l'url pointera vers la carte des départements
|
|
|
159 |
if($id == $this->id_france) {
|
|
|
160 |
$url->setVariableRequete('m', 'annuaire_afficher_carte');
|
|
|
161 |
} else {
|
|
|
162 |
// sinon l'url pointe vers la liste des inscrits de ce pays
|
|
|
163 |
$url->setVariableRequete('m', 'annuaire_inscrits_carto');
|
|
|
164 |
}
|
|
|
165 |
$url->setVariableRequete('pays', $id);
|
31 |
aurelien |
166 |
|
44 |
aurelien |
167 |
break;
|
31 |
aurelien |
168 |
|
44 |
aurelien |
169 |
// niveau 2, si on a cliqué sur la france pour afficher les départements :
|
56 |
aurelien |
170 |
case 2:
|
|
|
171 |
$url->setVariableRequete('m','annuaire_inscrits_carto');
|
44 |
aurelien |
172 |
$url->setVariableRequete('continent', $continent);
|
|
|
173 |
$url->setVariableRequete('pays', $pays);
|
|
|
174 |
$url->setVariableRequete('departement', $id);
|
|
|
175 |
break;
|
|
|
176 |
}
|
472 |
jpm |
177 |
$infos['url'] = sprintf($url, $id);
|
|
|
178 |
}
|
|
|
179 |
}
|
31 |
aurelien |
180 |
|
44 |
aurelien |
181 |
/**
|
|
|
182 |
* Renvoie le niveau auquel on se trouve suivant la présence ou non de certains paramètres
|
|
|
183 |
* @param int $continent l'identitifiant du continent sur lequel on se trouve
|
472 |
jpm |
184 |
* @param string $pays l'identitifiant du pays sur lequel on se trouve (normalement seulement la france si présent)
|
44 |
aurelien |
185 |
*/
|
472 |
jpm |
186 |
private function calculerNiveau($continent, $pays) {
|
31 |
aurelien |
187 |
|
|
|
188 |
// le niveau 0 c'est la carte de base
|
472 |
jpm |
189 |
$niveau = 0;
|
31 |
aurelien |
190 |
|
|
|
191 |
// le niveau 1 on consulte un continent en particulier (ex. Amérique du Sud)
|
|
|
192 |
if($continent != null) {
|
472 |
jpm |
193 |
$niveau = 1;
|
|
|
194 |
}
|
31 |
aurelien |
195 |
|
|
|
196 |
// le niveau 2 c'est un pays en particulier (ce cas là n'arrive que pour la france)
|
472 |
jpm |
197 |
if($pays != null) {
|
|
|
198 |
$niveau = 2;
|
|
|
199 |
}
|
31 |
aurelien |
200 |
|
472 |
jpm |
201 |
return $niveau;
|
|
|
202 |
}
|
31 |
aurelien |
203 |
|
44 |
aurelien |
204 |
/**
|
|
|
205 |
* Renvoie le type de template à utiliser suivant le niveau de certains paramètres
|
|
|
206 |
* @param int $niveau le niveau de la carto
|
|
|
207 |
* @return string le type de template
|
|
|
208 |
*/
|
472 |
jpm |
209 |
private function renvoyerPrefixePourNiveau($niveau) {
|
|
|
210 |
switch ($niveau) {
|
|
|
211 |
case 0:
|
|
|
212 |
$fond = 'continents';
|
|
|
213 |
break;
|
31 |
aurelien |
214 |
|
472 |
jpm |
215 |
case 1:
|
31 |
aurelien |
216 |
$fond = 'pays';
|
472 |
jpm |
217 |
break;
|
31 |
aurelien |
218 |
|
472 |
jpm |
219 |
case 2 :
|
31 |
aurelien |
220 |
$fond = 'france';
|
|
|
221 |
break;
|
|
|
222 |
|
|
|
223 |
default:
|
44 |
aurelien |
224 |
$fond = '';
|
31 |
aurelien |
225 |
break;
|
472 |
jpm |
226 |
}
|
31 |
aurelien |
227 |
|
472 |
jpm |
228 |
return $fond;
|
|
|
229 |
}
|
31 |
aurelien |
230 |
|
44 |
aurelien |
231 |
/**
|
|
|
232 |
* Renvoie le suffixe de fond de carte à utiliser pour un continent donné
|
|
|
233 |
* @param int $niveau le niveau de la carto
|
|
|
234 |
* @param int $niveau l'identifiant de continent
|
|
|
235 |
* @return string le suffixe
|
|
|
236 |
*/
|
472 |
jpm |
237 |
private function renvoyerSuffixePourContinent($niveau, $continent) {
|
31 |
aurelien |
238 |
|
472 |
jpm |
239 |
switch ($continent) {
|
|
|
240 |
case 1:
|
44 |
aurelien |
241 |
$carte = '_afrique';
|
|
|
242 |
break;
|
|
|
243 |
|
472 |
jpm |
244 |
case 2:
|
44 |
aurelien |
245 |
$carte = '_nord_amerique';
|
|
|
246 |
break;
|
|
|
247 |
|
472 |
jpm |
248 |
case 3:
|
44 |
aurelien |
249 |
$carte = '_asie';
|
|
|
250 |
break;
|
|
|
251 |
|
472 |
jpm |
252 |
case 4:
|
44 |
aurelien |
253 |
$carte = '_europe';
|
|
|
254 |
break;
|
|
|
255 |
|
472 |
jpm |
256 |
case 5:
|
44 |
aurelien |
257 |
$carte = '_oceanie';
|
472 |
jpm |
258 |
break;
|
44 |
aurelien |
259 |
|
472 |
jpm |
260 |
case 6:
|
44 |
aurelien |
261 |
$carte = '_sud_amerique';
|
472 |
jpm |
262 |
break;
|
44 |
aurelien |
263 |
|
472 |
jpm |
264 |
case 7:
|
44 |
aurelien |
265 |
$carte = '_moyen_orient';
|
472 |
jpm |
266 |
break;
|
44 |
aurelien |
267 |
|
472 |
jpm |
268 |
default:
|
|
|
269 |
$carte = '';
|
|
|
270 |
break;
|
|
|
271 |
}
|
44 |
aurelien |
272 |
|
472 |
jpm |
273 |
return $carte;
|
|
|
274 |
}
|
44 |
aurelien |
275 |
|
|
|
276 |
/**
|
|
|
277 |
* renvoie tous les noms templates pour chaque zone du monde
|
|
|
278 |
* @return array un tableau associatif indexé par les identifiants de zone et contenant les noms de templates
|
|
|
279 |
*/
|
472 |
jpm |
280 |
private function renvoyerTousTemplates() {
|
|
|
281 |
return array(1 => 'pays_afrique', 2 => 'pays_nord_amerique', 3 => 'pays_asie', 4 => 'pays_europe', 5 => 'pays_oceanie', 6 => 'pays_sud_amerique', 7 => 'pays_moyen_orient');
|
|
|
282 |
}
|
44 |
aurelien |
283 |
|
|
|
284 |
/**
|
|
|
285 |
* Charge la liste des inscrits par zone pour un niveau géographique donné
|
|
|
286 |
* @param int $id_annuaire l'identifiant de l'annuaire
|
|
|
287 |
* @param int $niveau le niveau où l'on se situe
|
|
|
288 |
* @return array un tableau associatif indexé par les identifiants de zone et contenant le nombre d'inscrits pour chaque zone
|
|
|
289 |
*/
|
472 |
jpm |
290 |
private function chargerNombreInscritsParNiveauGeographique($id_annuaire, $niveau) {
|
|
|
291 |
if ($niveau == 0) {
|
44 |
aurelien |
292 |
// si on est au niveau des continents
|
|
|
293 |
$zones_ids = array();
|
|
|
294 |
// il faut faire la somme des inscrits par zones géographique
|
|
|
295 |
$templates = $this->renvoyerTousTemplates();
|
|
|
296 |
} else {
|
|
|
297 |
// sinon on appelle la fonction pour la zone demandée
|
|
|
298 |
$zones_ids = $this->chargerZonesParCsv(Application::getChemin().Config::get('carte_fonds_chemin').$this->nom_fond);
|
|
|
299 |
}
|
|
|
300 |
|
31 |
aurelien |
301 |
$annuaire_controleur = new AnnuaireControleur();
|
472 |
jpm |
302 |
$nb_inscrits = array();
|
31 |
aurelien |
303 |
switch ($niveau) {
|
472 |
jpm |
304 |
case 0 : // niveau de la carte du monde
|
|
|
305 |
// pour chacun des continents, on fait la somme des membres de sa zone
|
|
|
306 |
foreach ($templates as $id_continent => $template) {
|
|
|
307 |
$zones_continent_ids = $this->chargerZonesParCsv(Application::getChemin().Config::get('carte_fonds_chemin').$template);
|
|
|
308 |
$nb_inscrits[$id_continent] = array_sum($annuaire_controleur->chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $zones_continent_ids));
|
|
|
309 |
}
|
|
|
310 |
break;
|
|
|
311 |
case 1 : // niveau de la carte des pays d'un continent
|
44 |
aurelien |
312 |
$nb_inscrits = $annuaire_controleur->chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $zones_ids);
|
472 |
jpm |
313 |
break;
|
|
|
314 |
case 2 : // détail d'un pays
|
31 |
aurelien |
315 |
$nb_inscrits = $annuaire_controleur->chargerNombreAnnuaireListeInscritsParDepartement($id_annuaire);
|
472 |
jpm |
316 |
break;
|
31 |
aurelien |
317 |
}
|
472 |
jpm |
318 |
return $nb_inscrits;
|
|
|
319 |
}
|
31 |
aurelien |
320 |
|
472 |
jpm |
321 |
public function obtenirUrlsNavigation($id_annuaire ,$continent = null, $pays = null, $departement = null) {
|
|
|
322 |
$url_carte_monde = new URL(Config::get('url_base'));
|
|
|
323 |
$url_carte_monde->setVariableRequete('id_annuaire', $id_annuaire);
|
221 |
aurelien |
324 |
$url_carte_monde->setVariableRequete('m', 'annuaire_afficher_carte');
|
472 |
jpm |
325 |
$donnees = array();
|
|
|
326 |
$donnees['url_carte_monde'] = $url_carte_monde;
|
|
|
327 |
$donnees['nom_carte_monde'] = 'Carte du monde';
|
|
|
328 |
|
|
|
329 |
if ($continent != null && trim($continent) != '') {
|
|
|
330 |
$infos_continents = $this->chargerInformationsContinentCsv();
|
|
|
331 |
$url_continent = new URL(Config::get('url_base'));
|
|
|
332 |
$url_continent->setVariableRequete('id_annuaire', $id_annuaire);
|
221 |
aurelien |
333 |
$url_continent->setVariableRequete('m', 'annuaire_afficher_carte');
|
|
|
334 |
$url_continent->setVariableRequete('continent', $continent);
|
472 |
jpm |
335 |
$donnees['url_continent'] = $url_continent;
|
|
|
336 |
$donnees['nom_continent'] = $infos_continents[$continent][2];
|
|
|
337 |
}
|
|
|
338 |
|
|
|
339 |
if ($pays != null && trim($pays) != '') {
|
|
|
340 |
$templates_continents = $this->renvoyerTousTemplates();
|
|
|
341 |
$infos_continents = $this->chargerInformationsPaysDuContinentsCsv($templates_continents[$continent]);
|
|
|
342 |
$infos_pays = $infos_continents[$pays];
|
|
|
343 |
$url_pays = new URL(Config::get('url_base'));
|
|
|
344 |
$url_pays->setVariableRequete('id_annuaire', $id_annuaire);
|
|
|
345 |
if ($pays == $this->id_france) {
|
221 |
aurelien |
346 |
$url_pays->setVariableRequete('m', 'annuaire_afficher_carte');
|
|
|
347 |
} else {
|
|
|
348 |
// sinon l'url pointe vers la liste des inscrits de ce pays
|
|
|
349 |
$url_pays->setVariableRequete('m', 'annuaire_inscrits_carto');
|
|
|
350 |
}
|
|
|
351 |
$url_pays->setVariableRequete('continent', $continent);
|
|
|
352 |
$url_pays->setVariableRequete('pays', $pays);
|
472 |
jpm |
353 |
$donnees['url_pays'] = $url_pays;
|
|
|
354 |
$donnees['nom_pays'] = $infos_pays[2];
|
|
|
355 |
}
|
|
|
356 |
|
|
|
357 |
if ($departement != null && trim($departement) != '') {
|
|
|
358 |
$infos_departement = $this->chargerInformationsDepartementsFranceCsv();
|
|
|
359 |
$url_departement = new URL(Config::get('url_base'));
|
|
|
360 |
$url_departement->setVariableRequete('id_annuaire', $id_annuaire);
|
221 |
aurelien |
361 |
$url_departement->setVariableRequete('m', 'annuaire_afficher_carte');
|
|
|
362 |
$url_departement->setVariableRequete('continent', $continent);
|
|
|
363 |
$url_departement->setVariableRequete('departement', $departement);
|
|
|
364 |
$url_departement->setVariableRequete('pays', $pays);
|
472 |
jpm |
365 |
$donnees['url_departement'] = $url_departement;
|
|
|
366 |
$donnees['nom_departement'] = $infos_departement[$departement][2];
|
|
|
367 |
}
|
44 |
aurelien |
368 |
|
472 |
jpm |
369 |
$donnees['nb_resultats'] = $this->total_inscrits_zone;
|
|
|
370 |
return $donnees;
|
|
|
371 |
}
|
294 |
aurelien |
372 |
|
472 |
jpm |
373 |
public function chargerInformationsContinentCsv() {
|
|
|
374 |
$nom_csv = Application::getChemin().Config::get('carte_fonds_chemin').'continents';
|
|
|
375 |
return $this->chargerInformationsCompletesParCsv($nom_csv);
|
|
|
376 |
}
|
221 |
aurelien |
377 |
|
472 |
jpm |
378 |
public function chargerInformationsPaysDuContinentsCsv($continent) {
|
|
|
379 |
$nom_csv = Application::getChemin().Config::get('carte_fonds_chemin').$continent;
|
|
|
380 |
return $this->chargerInformationsCompletesParCsv($nom_csv);
|
|
|
381 |
}
|
221 |
aurelien |
382 |
|
472 |
jpm |
383 |
public function chargerInformationsDepartementsFranceCsv() {
|
|
|
384 |
$nom_csv = Application::getChemin().Config::get('carte_fonds_chemin').'france';
|
|
|
385 |
return $this->chargerInformationsCompletesParCsv($nom_csv);
|
|
|
386 |
}
|
|
|
387 |
|
|
|
388 |
public function chargerInformationsCompletesParCsv($nom_csv) {
|
|
|
389 |
$fichier_csv = $nom_csv.'.csv';
|
|
|
390 |
$infos = array();
|
|
|
391 |
|
221 |
aurelien |
392 |
if (($handle = fopen($fichier_csv, 'r')) !== false) {
|
|
|
393 |
$ligne = 0;
|
|
|
394 |
while (($donnees = fgetcsv($handle, 1000, ',')) !== false) {
|
|
|
395 |
if($ligne != 0 && trim($donnees[0]) != '') {
|
|
|
396 |
$infos[$donnees[0]] = $donnees;
|
|
|
397 |
}
|
|
|
398 |
$ligne++;
|
|
|
399 |
}
|
|
|
400 |
fclose($handle);
|
|
|
401 |
}
|
|
|
402 |
return $infos;
|
472 |
jpm |
403 |
}
|
221 |
aurelien |
404 |
|
44 |
aurelien |
405 |
/**
|
|
|
406 |
* Récupère les identifiants de zone dans un fichier csv donné
|
|
|
407 |
* @param string $nom_csv chemin vers le fichier csv (sans extension) qui contient les données
|
|
|
408 |
* @return array un tableau contenant les identifiants des zones
|
|
|
409 |
*/
|
472 |
jpm |
410 |
private function chargerZonesParCsv($nom_csv) {
|
44 |
aurelien |
411 |
$fichier_csv = $nom_csv.'.csv';
|
|
|
412 |
$zones_id = array();
|
|
|
413 |
if (($handle = fopen($fichier_csv, 'r')) !== false) {
|
|
|
414 |
$ligne = 0;
|
|
|
415 |
while (($donnees = fgetcsv($handle, 1000, ',')) !== false) {
|
|
|
416 |
if($ligne != 0 && trim($donnees[0]) != '') {
|
|
|
417 |
$zones_id[] = "'".$donnees[0]."'";
|
|
|
418 |
}
|
|
|
419 |
$ligne++;
|
|
|
420 |
}
|
|
|
421 |
fclose($handle);
|
|
|
422 |
}
|
|
|
423 |
return $zones_id;
|
472 |
jpm |
424 |
}
|
|
|
425 |
}
|