Subversion Repositories Sites.obs-saisons.fr

Rev

Rev 277 | 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 {
327 aurelien 15
 
206 aurelien 16
    public function __construct()  {
327 aurelien 17
 
206 aurelien 18
		parent::__construct();
19
        $this->initialiser();
20
    }
327 aurelien 21
 
206 aurelien 22
    public function executerActionParDefaut() {
23
    	return $this->afficherCarte();
24
    }
327 aurelien 25
 
206 aurelien 26
    private function initialiser() {
327 aurelien 27
 
206 aurelien 28
    }
327 aurelien 29
 
30
    private function mb_ucfirst($str) {
31
      $fc = mb_strtoupper(mb_substr($str, 0, 1));
32
      return $fc.mb_substr($str, 1);
33
    }
34
 
206 aurelien 35
	private function afficherCarte() {
327 aurelien 36
 
237 aurelien 37
		$carte = $this->getCarteDemandee();
327 aurelien 38
 
206 aurelien 39
		$espece_dao = new EspeceDao();
40
		$especes = $espece_dao->getListeEspecesParType();
327 aurelien 41
 
206 aurelien 42
		$evenements_dao = new EvenementDao();
43
		$evenements = $evenements_dao->getListeEvenements();
327 aurelien 44
 
45
    $observations_dao = new ObservationDao();
46
		$annees_ayant_obs = $observations_dao->getAnneesAyantObservations();
47
 
206 aurelien 48
		$chaine_variables_script = '<script type="text/javascript" language="javascript">';
327 aurelien 49
 
268 aurelien 50
		$chaine_variables_script .= ' var url_widget = "'.Liens::getUrlBaseComplete().'"; ';
206 aurelien 51
		$chaine_variables_script .= ' var tableau_especes = new Array(); ';
52
		$chaine_variables_script .= ' var tableau_evenements_especes = new Array(); ';
53
		$chaine_variables_script .= ' var tableau_evenements = new Array(); ';
327 aurelien 54
    $chaine_variables_script .= ' var annees_ayant_obs = '.json_encode($annees_ayant_obs).'; ';
55
 
206 aurelien 56
		foreach($especes as $id_type_espece => $type_espece) {
327 aurelien 57
 
206 aurelien 58
			$chaine_variables_script .= 'tableau_especes['.$id_type_espece.'] = new Array();';
327 aurelien 59
 
206 aurelien 60
			foreach($type_espece['especes'] as $id_espece => $espece) {
327 aurelien 61
				$chaine_variables_script .= 'tableau_especes['.$id_type_espece.']['.$id_espece.'] = "'.$this->mb_ucfirst($espece['nom_vernaculaire']).'";';
206 aurelien 62
				$chaine_variables_script .= 'tableau_evenements_especes['.$id_espece.'] = "'.$espece['evenements'].'";';
63
			}
64
		}
327 aurelien 65
 
206 aurelien 66
		foreach($evenements as $id_evenement => $evenement) {
327 aurelien 67
			$nom_evenement = $this->mb_ucfirst($evenement['nom']);
206 aurelien 68
			if(trim($evenement['nom']) != '') {
69
				$nom_evenement .= ' stade '.$evenement['code'];
70
			}
71
			$chaine_variables_script .= 'tableau_evenements['.$id_evenement.'] = "'.$nom_evenement.'";';
72
		}
277 aurelien 73
		$url_limites_communales = $this->obtenirUrlsLimitesCommunales();
74
		$chaine_variables_script .= 'var urlsLimitesCommunales = '.$url_limites_communales.';';
327 aurelien 75
 
206 aurelien 76
		$chaine_variables_script .= '</script> ';
237 aurelien 77
		$chaine_variables_script .= '<script type="text/javascript" src="'.Liens::getUrlScript().'rendu_'.$carte.'.js"></script>';
327 aurelien 78
 
206 aurelien 79
		$donnees = array();
237 aurelien 80
		$donnees['url'] = Liens::getUrlBaseComplete().'rendu_widget.php?carte='.$carte;
206 aurelien 81
		$donnees['script'] = $chaine_variables_script;
327 aurelien 82
		$donnees['especes'] = $especes;
206 aurelien 83
		$donnees['evenements'] = $evenements;
327 aurelien 84
    $donnees['annees_ayant_obs'] = $annees_ayant_obs;
85
 
237 aurelien 86
		$formulaire = $this->getVue('cartes/observations_'.$carte,$donnees);
327 aurelien 87
    $this->setSortie(self::RENDU_CORPS, $formulaire);
206 aurelien 88
	}
327 aurelien 89
 
237 aurelien 90
	private function getCarteDemandee() {
327 aurelien 91
 
237 aurelien 92
		$carte = 'especes';
327 aurelien 93
 
237 aurelien 94
		if(isset($_GET['carte'])) {
95
			$carte = $_GET['carte'];
96
		}
327 aurelien 97
 
237 aurelien 98
		return $carte;
99
	}
327 aurelien 100
 
277 aurelien 101
	private function obtenirUrlsLimitesCommunales() {
102
		$urls = null;
103
		if (isset($_GET['departement'])) {
104
			// si on veut afficher les limites départementales on va compter et chercher les noms de fichiers
105
			$fichiersKml = $this->chercherFichierKml();
106
			if (count($fichiersKml) > 0) {
107
				foreach ($fichiersKml as $kml => $dossier){
108
					$url_limites_communales = sprintf(Config::get('limitesCommunaleUrlTpl'), $dossier, $kml);
109
					$urls[] = $url_limites_communales;
110
				}
111
			}
112
		}
113
		$urls = json_encode($urls);
114
		return $urls;
115
	}
327 aurelien 116
 
277 aurelien 117
	private function chercherFichierKml(){
118
		$fichiers = array();
119
		$chemins = explode(',', Config::get('communesKmzChemin'));
120
		$departements = explode(',', $_GET['departement']);// plrs code de départements peuvent être demandés séparés par des virgules
121
		$departements_trouves = array();
122
		foreach ($chemins as $dossier_chemin) {
123
			if ($dossier_ressource = opendir($dossier_chemin)) {
124
				while ($element = readdir($dossier_ressource)) {
125
					if ($element != '.' && $element != '..') {
126
						foreach ($departements as $departement) {
127
							$nom_dossier = basename($dossier_chemin);
128
							if (!isset($departements_trouves[$departement]) || $departements_trouves[$departement] == $nom_dossier) {
129
								$dept_protege = preg_quote($departement);
130
								if (!is_dir($dossier_chemin.'/'.$element) && preg_match("/^$dept_protege(?:_[0-9]+|)\.km[lz]$/", $element)) {
131
									$fichiers[$element] = $nom_dossier;
132
									$departements_trouves[$departement] = $nom_dossier;
133
								}
134
							}
135
						}
136
					}
137
				}
138
				closedir($dossier_ressource);
139
			}
140
		}
327 aurelien 141
 
277 aurelien 142
		return $fichiers;
327 aurelien 143
	}
144
}