Subversion Repositories Applications.annuaire

Rev

Rev 294 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 294 Rev 473
Line 8... Line 8...
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$
-
 
14
 */
13
 */
15
class CartoControleur extends AppControleur {
14
class CartoControleur extends AppControleur {
Line 16... Line -...
16
 
-
 
17
 
15
 
18
	// identifiant de la france pour l'accès direct
16
	// identifiant de la france pour l'accès direct
Line 19... Line 17...
19
    private $id_france = 'fr';
17
	private $id_france = 'fr';
20
 
18
 
Line 109... Line 107...
109
	 * @param int $id_annuaire l'identifiant de l'annuaire
107
	 * @param int $id_annuaire l'identifiant de l'annuaire
110
	 * @param array $zones les zones à cartographier (attention, passage par référence, donc les zones sont modifiées)
108
	 * @param array $zones les zones à cartographier (attention, passage par référence, donc les zones sont modifiées)
111
	 * @param int $niveau le niveau de la carto (monde, continent, ou pays)
109
	 * @param int $niveau le niveau de la carto (monde, continent, ou pays)
112
	 */
110
	 */
113
    private function chargerZonesNbre($id_annuaire, &$zones, $niveau = 0) {
111
	private function chargerZonesNbre($id_annuaire, &$zones, $niveau = 0) {
114
 
-
 
115
        $metaModele = $this->getModele('AnnuaireModele');
112
		$metaModele = $this->getModele('AnnuaireModele');
116
        // on charge les inscrits pour le niveau donné
113
		// on charge les inscrits pour le niveau donné
117
        $zones_infos = $this->chargerNombreInscritsParNiveauGeographique($id_annuaire, $niveau);
114
		$zones_infos = $this->chargerNombreInscritsParNiveauGeographique($id_annuaire, $niveau);
Line 118... Line 115...
118
 
115
 
119
        foreach ($zones as $id => &$infos) {
-
 
120
 
116
		foreach ($zones as $id => &$infos) {
121
			// si l'on a des données pour la zone, on renseigne le nombre d'inscrits
117
			// si l'on a des données pour la zone, on renseigne le nombre d'inscrits
122
            if (isset($zones_infos[$id])) {
-
 
123
 
118
			if (isset($zones_infos[$id])) {
124
                $nbre = $zones_infos[$id];
119
				$nbre = $zones_infos[$id];
125
                $infos['info_nombre'] = $nbre;
-
 
126
                
120
				$infos['info_nombre'] = $nbre;
127
                $this->total_inscrits_zone += $nbre;
-
 
128
                
121
				$this->total_inscrits_zone += $nbre;
129
            } else {
122
			} else {
130
            	// sinon on le met à 0
123
				// sinon on le met à 0
131
                $infos['info_nombre'] = 0;
124
				$infos['info_nombre'] = 0;
132
            }
125
			}
Line 293... Line 286...
293
	 * @param int $id_annuaire l'identifiant de l'annuaire
286
	 * @param int $id_annuaire l'identifiant de l'annuaire
294
	 * @param int $niveau le niveau où l'on se situe
287
	 * @param int $niveau le niveau où l'on se situe
295
	 * @return array un tableau associatif indexé par les identifiants de zone et contenant le nombre d'inscrits pour chaque zone
288
	 * @return array un tableau associatif indexé par les identifiants de zone et contenant le nombre d'inscrits pour chaque zone
296
	 */
289
	 */
297
    private function chargerNombreInscritsParNiveauGeographique($id_annuaire, $niveau) {
290
	private function chargerNombreInscritsParNiveauGeographique($id_annuaire, $niveau) {
298
 
-
 
299
		$nb_inscrits = array();
-
 
300
 
-
 
301
		if($niveau == 0) {
291
		if ($niveau == 0) {
302
			// si on est au niveau des continents
292
			// si on est au niveau des continents
303
			$zones_ids = array();
293
			$zones_ids = array();
304
			// il faut faire la somme des inscrits par zones géographique
294
			// il faut faire la somme des inscrits par zones géographique
305
			$templates = $this->renvoyerTousTemplates();
295
			$templates = $this->renvoyerTousTemplates();
Line 307... Line 297...
307
			// sinon on appelle la fonction pour la zone demandée
297
			// sinon on appelle la fonction pour la zone demandée
308
			$zones_ids = $this->chargerZonesParCsv(Application::getChemin().Config::get('carte_fonds_chemin').$this->nom_fond);
298
			$zones_ids = $this->chargerZonesParCsv(Application::getChemin().Config::get('carte_fonds_chemin').$this->nom_fond);
309
		}
299
		}
Line 310... Line 300...
310
 
300
 
311
		$annuaire_controleur = new AnnuaireControleur();
-
 
-
 
301
		$annuaire_controleur = new AnnuaireControleur();
312
 
302
		$nb_inscrits = array();
313
		switch ($niveau) {
303
		switch ($niveau) {
314
			// niveau de la carte du monde
-
 
315
    		case 0:
304
			case 0 : // niveau de la carte du monde
316
    			// pour chacun des continents, on fait la somme des membres de sa zone
305
				// pour chacun des continents, on fait la somme des membres de sa zone
317
    			foreach($templates as $id_continent => $template) {
306
				foreach ($templates as $id_continent => $template) {
318
    				$zones_continent_ids = $this->chargerZonesParCsv(Application::getChemin().Config::get('carte_fonds_chemin').$template);
307
					$zones_continent_ids = $this->chargerZonesParCsv(Application::getChemin().Config::get('carte_fonds_chemin').$template);
319
    				$nb_inscrits[$id_continent] = array_sum($annuaire_controleur->chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $zones_continent_ids));
308
					$nb_inscrits[$id_continent] = array_sum($annuaire_controleur->chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $zones_continent_ids));
320
    			}
309
				}
321
    		break;
-
 
322
 
310
				break;
323
			// niveau de la carte des pays d'un continent
-
 
324
    		case 1:
311
			case 1 : // niveau de la carte des pays d'un continent
325
				$nb_inscrits = $annuaire_controleur->chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $zones_ids);
312
				$nb_inscrits = $annuaire_controleur->chargerNombreAnnuaireListeInscritsParPays($id_annuaire, $zones_ids);
326
    		break;
-
 
327
 
313
				break;
328
			// détail d'un pays
-
 
329
    		case 2 :
314
			case 2 : // détail d'un pays
330
				$nb_inscrits = $annuaire_controleur->chargerNombreAnnuaireListeInscritsParDepartement($id_annuaire);
315
				$nb_inscrits = $annuaire_controleur->chargerNombreAnnuaireListeInscritsParDepartement($id_annuaire);
331
			break;
-
 
332
 
-
 
333
			// action par défaut
-
 
334
			default:
-
 
335
				// on renvoie un tableau vide
-
 
336
				$nb_inscrits = array();
-
 
337
			break;
316
				break;
338
		}
-
 
339
 
317
		}
340
    	return $nb_inscrits;
318
		return $nb_inscrits;
Line 341... Line 319...
341
    }
319
	}
342
    
-
 
343
    public function obtenirUrlsNavigation($id_annuaire ,$continent = null, $pays = null, $departement = null) {
-
 
344
    	
-
 
345
    	$donnees = array();
320
 
346
    	
321
	public function obtenirUrlsNavigation($id_annuaire ,$continent = null, $pays = null, $departement = null) {
347
    	$url_carte_monde = new URL(Config::get('url_base'));
322
		$url_carte_monde = new URL(Config::get('url_base'));
-
 
323
		$url_carte_monde->setVariableRequete('id_annuaire', $id_annuaire);
348
    	$url_carte_monde->setVariableRequete('id_annuaire', $id_annuaire);
324
		$url_carte_monde->setVariableRequete('m', 'annuaire_afficher_carte');
349
		$url_carte_monde->setVariableRequete('m', 'annuaire_afficher_carte');
325
		$donnees = array();
Line 350... Line 326...
350
    	$donnees['url_carte_monde'] =  $url_carte_monde;
326
		$donnees['url_carte_monde'] =  $url_carte_monde;
351
    	$donnees['nom_carte_monde'] =  'Carte du monde';
327
		$donnees['nom_carte_monde'] =  'Carte du monde';
Line 359... Line 335...
359
    		$donnees['url_continent'] =  $url_continent;
335
			$donnees['url_continent'] =  $url_continent;
360
    		$donnees['nom_continent'] =  $infos_continents[$continent][2];
336
			$donnees['nom_continent'] =  $infos_continents[$continent][2];
361
    	}
337
		}
Line 362... Line 338...
362
    	
338
 
363
    	if($pays != null && trim($pays) != '') {
-
 
364
    		
339
		if ($pays != null && trim($pays) != '') {
365
    		$templates_continents = $this->renvoyerTousTemplates();
340
			$templates_continents = $this->renvoyerTousTemplates();
366
    		$infos_continents = $this->chargerInformationsPaysDuContinentsCsv($templates_continents[$continent]);
341
			$infos_continents = $this->chargerInformationsPaysDuContinentsCsv($templates_continents[$continent]);
367
    		$infos_pays = $infos_continents[$pays];
342
			$infos_pays = $infos_continents[$pays];
368
    		$url_pays = new URL(Config::get('url_base'));
343
			$url_pays = new URL(Config::get('url_base'));
Line 390... Line 365...
390
    		$donnees['url_departement'] =  $url_departement;
365
			$donnees['url_departement'] =  $url_departement;
391
    		$donnees['nom_departement'] =  $infos_departement[$departement][2];
366
			$donnees['nom_departement'] =  $infos_departement[$departement][2];
392
    	}
367
		}
Line 393... Line 368...
393
 
368
 
394
    	$donnees['nb_resultats'] = $this->total_inscrits_zone;
-
 
395
 
369
		$donnees['nb_resultats'] = $this->total_inscrits_zone;
396
    	return $donnees;
370
		return $donnees;
Line 397... Line 371...
397
    }
371
	}
398
    
-
 
399
    public function chargerInformationsContinentCsv() {
372
 
400
    	
373
	public function chargerInformationsContinentCsv() {
401
    	$nom_csv = Application::getChemin().Config::get('carte_fonds_chemin').'continents';
374
		$nom_csv = Application::getChemin().Config::get('carte_fonds_chemin').'continents';
Line 402... Line 375...
402
    	return $this->chargerInformationsCompletesParCsv($nom_csv);
375
		return $this->chargerInformationsCompletesParCsv($nom_csv);
403
    }
-
 
404
    
376
	}
405
    public function chargerInformationsPaysDuContinentsCsv($continent) {
-
 
406
    	
377
 
407
    	$nom_csv = Application::getChemin().Config::get('carte_fonds_chemin').$continent;
378
	public function chargerInformationsPaysDuContinentsCsv($continent) {
Line 408... Line 379...
408
 
379
		$nom_csv = Application::getChemin().Config::get('carte_fonds_chemin').$continent;
409
    	return $this->chargerInformationsCompletesParCsv($nom_csv);
-
 
410
    }
380
		return $this->chargerInformationsCompletesParCsv($nom_csv);
411
    
-
 
412
    public function chargerInformationsDepartementsFranceCsv() {
381
	}
413
    	
382
 
Line 414... Line 383...
414
    	$nom_csv = Application::getChemin().Config::get('carte_fonds_chemin').'france';
383
	public function chargerInformationsDepartementsFranceCsv() {
415
    	
-
 
416
    	return $this->chargerInformationsCompletesParCsv($nom_csv);
384
		$nom_csv = Application::getChemin().Config::get('carte_fonds_chemin').'france';
417
    }
385
		return $this->chargerInformationsCompletesParCsv($nom_csv);
Line 418... Line 386...
418
    
386
	}
419
    public function chargerInformationsCompletesParCsv($nom_csv) {
387
 
420
    	
-
 
421
    	$fichier_csv = $nom_csv.'.csv';
388
	public function chargerInformationsCompletesParCsv($nom_csv) {
422
    	$infos = array();
-
 
423
 
389
		$fichier_csv = $nom_csv.'.csv';
424
		if (($handle = fopen($fichier_csv, 'r')) !== false) {
-
 
425
			$ligne = 0;
390
		$infos = array();
426
 
391
 
427
			while (($donnees = fgetcsv($handle, 1000, ',')) !== false) {
392
		if (($handle = fopen($fichier_csv, 'r')) !== false) {
428
				
393
			$ligne = 0;
429
				if($ligne != 0 && trim($donnees[0]) != '') {
394
			while (($donnees = fgetcsv($handle, 1000, ',')) !== false) {
430
					
395
				if($ligne != 0 && trim($donnees[0]) != '') {
431
					$infos[$donnees[0]] = $donnees;
-
 
432
				}
396
					$infos[$donnees[0]] = $donnees;
433
				$ligne++;
-
 
434
			}
397
				}
Line 435... Line 398...
435
			fclose($handle);
398
				$ligne++;
436
		}
399
			}
437
 
400
			fclose($handle);
438
		return $infos;
401
		}
439
    	
402
		return $infos;
440
    }
403
	}
441
 
-
 
442
	/**
404
 
443
	 * Récupère les identifiants de zone dans un fichier csv donné
405
	/**
444
	 * @param string $nom_csv chemin vers le fichier csv (sans extension) qui contient les données
-
 
445
	 * @return array un tableau contenant les identifiants des zones
406
	 * Récupère les identifiants de zone dans un fichier csv donné
446
	 */
407
	 * @param string $nom_csv chemin vers le fichier csv (sans extension) qui contient les données
447
    private function chargerZonesParCsv($nom_csv) {
-
 
448
 
408
	 * @return array un tableau contenant les identifiants des zones
449
		$fichier_csv = $nom_csv.'.csv';
-
 
450
		$zones_id = array();
409
	 */
451
 
410
	private function chargerZonesParCsv($nom_csv) {
452
		if (($handle = fopen($fichier_csv, 'r')) !== false) {
411
		$fichier_csv = $nom_csv.'.csv';
453
			$ligne = 0;
412
		$zones_id = array();
454
 
413
		if (($handle = fopen($fichier_csv, 'r')) !== false) {
455
			while (($donnees = fgetcsv($handle, 1000, ',')) !== false) {
414
			$ligne = 0;
456
				
415
			while (($donnees = fgetcsv($handle, 1000, ',')) !== false) {
457
				if($ligne != 0 && trim($donnees[0]) != '') {
-
 
458
					$zones_id[] = "'".$donnees[0]."'";
416
				if($ligne != 0 && trim($donnees[0]) != '') {
459
				}
417
					$zones_id[] = "'".$donnees[0]."'";
460
				$ligne++;
418
				}
461
			}
-
 
462
			fclose($handle);
419
				$ligne++;