Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 268 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
206 aurelien 1
<?php
2
// declare(encoding='UTF-8');
3
/**
4
 * Classe de gestion des epeces.
5
 *
6
 * @package     Collection
7
 * @category    Php 5.2
8
 * @author      Aurélien PERONNET <aurelien@tela-botanica.org>
9
 * @copyright   2010 Tela-Botanica
10
 * @license     http://www.cecill.info/licences/Licence_CeCILL_V2-fr.txt Licence CECILL
11
 * @license     http://www.gnu.org/licenses/gpl.html Licence GNU-GPL
12
 * @version     SVN: $Id: Espece.php 152 2010-09-06 16:19:12Z jpm $
13
 */
14
class Rendu extends aControleur {
15
 
16
    public function __construct()  {
17
 
18
		parent::__construct();
19
        $this->initialiser();
20
    }
21
 
22
    public function executerActionParDefaut() {
23
    	return $this->afficherCarte();
24
    }
25
 
26
    private function initialiser() {
27
 
28
    }
29
 
30
	private function afficherCarte() {
31
 
237 aurelien 32
		$carte = $this->getCarteDemandee();
33
 
206 aurelien 34
		$espece_dao = new EspeceDao();
35
		$especes = $espece_dao->getListeEspecesParType();
36
 
37
		$evenements_dao = new EvenementDao();
38
		$evenements = $evenements_dao->getListeEvenements();
39
 
40
		$chaine_variables_script = '<script type="text/javascript" language="javascript">';
41
 
268 aurelien 42
		$chaine_variables_script .= ' var url_widget = "'.Liens::getUrlBaseComplete().'"; ';
206 aurelien 43
		$chaine_variables_script .= ' var tableau_especes = new Array(); ';
44
		$chaine_variables_script .= ' var tableau_evenements_especes = new Array(); ';
45
		$chaine_variables_script .= ' var tableau_evenements = new Array(); ';
46
 
47
		foreach($especes as $id_type_espece => $type_espece) {
48
 
49
			$chaine_variables_script .= 'tableau_especes['.$id_type_espece.'] = new Array();';
50
 
51
			foreach($type_espece['especes'] as $id_espece => $espece) {
52
				$chaine_variables_script .= 'tableau_especes['.$id_type_espece.']['.$id_espece.'] = "'.$espece['nom_vernaculaire'].'";';
53
				$chaine_variables_script .= 'tableau_evenements_especes['.$id_espece.'] = "'.$espece['evenements'].'";';
54
			}
55
		}
56
 
57
		foreach($evenements as $id_evenement => $evenement) {
58
			$nom_evenement = $evenement['nom'];
59
			if(trim($evenement['nom']) != '') {
60
				$nom_evenement .= ' stade '.$evenement['code'];
61
			}
62
			$chaine_variables_script .= 'tableau_evenements['.$id_evenement.'] = "'.$nom_evenement.'";';
63
		}
277 aurelien 64
		$url_limites_communales = $this->obtenirUrlsLimitesCommunales();
65
		$chaine_variables_script .= 'var urlsLimitesCommunales = '.$url_limites_communales.';';
206 aurelien 66
 
67
		$chaine_variables_script .= '</script> ';
237 aurelien 68
		$chaine_variables_script .= '<script type="text/javascript" src="'.Liens::getUrlScript().'rendu_'.$carte.'.js"></script>';
206 aurelien 69
 
70
		$donnees = array();
237 aurelien 71
		$donnees['url'] = Liens::getUrlBaseComplete().'rendu_widget.php?carte='.$carte;
206 aurelien 72
		$donnees['script'] = $chaine_variables_script;
73
		$donnees['especes'] = $especes;
74
		$donnees['evenements'] = $evenements;
75
 
237 aurelien 76
		$formulaire = $this->getVue('cartes/observations_'.$carte,$donnees);
206 aurelien 77
    	$this->setSortie(self::RENDU_CORPS, $formulaire);
78
	}
79
 
237 aurelien 80
	private function getCarteDemandee() {
81
 
82
		$carte = 'especes';
83
 
84
		if(isset($_GET['carte'])) {
85
			$carte = $_GET['carte'];
86
		}
87
 
88
		return $carte;
89
	}
90
 
277 aurelien 91
	private function obtenirUrlsLimitesCommunales() {
92
		$urls = null;
93
		if (isset($_GET['departement'])) {
94
			// si on veut afficher les limites départementales on va compter et chercher les noms de fichiers
95
			$fichiersKml = $this->chercherFichierKml();
96
			if (count($fichiersKml) > 0) {
97
				foreach ($fichiersKml as $kml => $dossier){
98
					$url_limites_communales = sprintf(Config::get('limitesCommunaleUrlTpl'), $dossier, $kml);
99
					$urls[] = $url_limites_communales;
100
				}
101
			}
102
		}
103
		$urls = json_encode($urls);
104
		return $urls;
105
	}
106
 
107
	private function chercherFichierKml(){
108
		$fichiers = array();
109
		$chemins = explode(',', Config::get('communesKmzChemin'));
110
		$departements = explode(',', $_GET['departement']);// plrs code de départements peuvent être demandés séparés par des virgules
111
		$departements_trouves = array();
112
		foreach ($chemins as $dossier_chemin) {
113
			if ($dossier_ressource = opendir($dossier_chemin)) {
114
				while ($element = readdir($dossier_ressource)) {
115
					if ($element != '.' && $element != '..') {
116
						foreach ($departements as $departement) {
117
							$nom_dossier = basename($dossier_chemin);
118
							if (!isset($departements_trouves[$departement]) || $departements_trouves[$departement] == $nom_dossier) {
119
								$dept_protege = preg_quote($departement);
120
								if (!is_dir($dossier_chemin.'/'.$element) && preg_match("/^$dept_protege(?:_[0-9]+|)\.km[lz]$/", $element)) {
121
									$fichiers[$element] = $nom_dossier;
122
									$departements_trouves[$departement] = $nom_dossier;
123
								}
124
							}
125
						}
126
					}
127
				}
128
				closedir($dossier_ressource);
129
			}
130
		}
131
 
132
		return $fichiers;
133
	}
206 aurelien 134
}