Subversion Repositories Applications.annuaire

Rev

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

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