Subversion Repositories Applications.annuaire

Rev

Rev 234 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

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