Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 3590 Rev 3591
1
<?php
1
<?php
2
// declare(encoding='UTF-8');
2
// declare(encoding='UTF-8');
3
/**
3
/**
4
 * Service fournissant une carte dynamique des obsertions publiques du CEL.
4
 * Service fournissant une carte dynamique des obsertions publiques du CEL.
5
 * Encodage en entrée : utf8
5
 * Encodage en entrée : utf8
6
 * Encodage en sortie : utf8
6
 * Encodage en sortie : utf8
7
 *
7
 *
8
 * Cas d'utilisation et documentation :
8
 * Cas d'utilisation et documentation :
9
 * @link http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=AideCELWidgetCarto
9
 * @link http://www.tela-botanica.org/wikini/eflore/wakka.php?wiki=AideCELWidgetCarto
10
 *
10
 *
11
 * Paramètres :
11
 * Paramètres :
12
 * ===> utilisateur = identifiant
12
 * ===> utilisateur = identifiant
13
 * Affiche seulement les observations d'un utilisateur donné. L'identifiant correspond au courriel de
13
 * Affiche seulement les observations d'un utilisateur donné. L'identifiant correspond au courriel de
14
 * l'utilisateur avec lequel il s'est inscrit sur Tela Botanica.
14
 * l'utilisateur avec lequel il s'est inscrit sur Tela Botanica.
15
 * ===> dept = code_du_département
15
 * ===> dept = code_du_département
16
 * Affiche seulement les observations pour le département français métropolitain indiqué. Les codes de département utilisables
16
 * Affiche seulement les observations pour le département français métropolitain indiqué. Les codes de département utilisables
17
 * sont : 01 à 19, 2A, 2B et 21 à 95.
17
 * sont : 01 à 19, 2A, 2B et 21 à 95.
18
 * ===> projet = mot-clé
18
 * ===> projet = mot-clé
19
 * Affiche seulement les observations pour le projet d'observations indiqué. Dans l'interface du CEL, vous pouvez taguer vos
19
 * Affiche seulement les observations pour le projet d'observations indiqué. Dans l'interface du CEL, vous pouvez taguer vos
20
 * observations avec un mot-clé de projet. Si vous voulez regrouper des observations de plusieurs utilisateurs, communiquez un
20
 * observations avec un mot-clé de projet. Si vous voulez regrouper des observations de plusieurs utilisateurs, communiquez un
21
 * mot-clé de projet à vos amis et visualisez les informations ainsi regroupées.
21
 * mot-clé de projet à vos amis et visualisez les informations ainsi regroupées.
22
 * ===> num_taxon = num_taxon
22
 * ===> num_taxon = num_taxon
23
 * Affiche seulement les observations pour la plante indiquée. Le num_taxon correspond au numéro taxonomique de la plante.
23
 * Affiche seulement les observations pour la plante indiquée. Le num_taxon correspond au numéro taxonomique de la plante.
24
 * Ce numéro est disponible dans les fiches d'eFlore. Par exemple, pour "Poa bulbosa L." le numéro taxonomique vaut 7080.
24
 * Ce numéro est disponible dans les fiches d'eFlore. Par exemple, pour "Poa bulbosa L." le numéro taxonomique vaut 7080.
25
 *
25
 *
26
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
26
 * @author		Jean-Pascal MILCENT <jpm@tela-botanica.org>
27
 * @license	GPL v3 <http://www.gnu.org/licenses/gpl.txt>
27
 * @license	GPL v3 <http://www.gnu.org/licenses/gpl.txt>
28
 * @license	CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
28
 * @license	CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
29
 * @version	$Id$
29
 * @version	$Id$
30
 * @copyright	Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
30
 * @copyright	Copyright (c) 2010, Tela Botanica (accueil@tela-botanica.org)
31
 */
31
 */
32
class Cartopoint extends WidgetCommun {
32
class Cartopoint extends WidgetCommun {
33
	const DS = DIRECTORY_SEPARATOR;
33
	const DS = DIRECTORY_SEPARATOR;
34
	const SERVICE_CARTO_NOM = 'CelWidgetMapPoint';
34
	const SERVICE_CARTO_NOM = 'CelWidgetMapPoint';
35
	const SERVICE_CARTO_ACTION_DEFAUT = 'carte-defaut';
35
	const SERVICE_CARTO_ACTION_DEFAUT = 'carte-defaut';
36
 
36
 
37
	private $carte = null;
37
	private $carte = null;
38
	private $num_taxon = false;
38
	private $num_taxon = false;
39
	private $utilisateur = null;
39
	private $utilisateur = null;
40
	private $projet = null;
40
	private $projet = null;
41
	private $dept = null;
41
	private $dept = null;
42
	private $num_nom_ret = null;
42
	private $num_nom_ret = null;
43
	private $station = null;
43
	private $station = null;
44
	private $format = null;// Format des obs pour les stations (tableau/liste)
44
	private $format = null;// Format des obs pour les stations (tableau/liste)
45
	private $photos = null; // Seulement les obs avec photos ou bien toutes
45
	private $photos = null; // Seulement les obs avec photos ou bien toutes
46
	private $titre = null; // Indication s'il faut le titre par défaut, personnalisé ou bien sans titre
46
	private $titre = null; // Indication s'il faut le titre par défaut, personnalisé ou bien sans titre
47
	private $logo = null; // url du logo à ajouter si nécessaire
47
	private $logo = null; // url du logo à ajouter si nécessaire
48
	private $url_site = null; // url du site auquel le logo est lié
48
	private $url_site = null; // url du site auquel le logo est lié
49
	private $image = null; // url d'une image à ajouter dans l'interface
49
	private $image = null; // url d'une image à ajouter dans l'interface
50
	private $nbjours = null; // nombre de jour à partir de la date courate pour lesquels on affiche les points
50
	private $nbjours = null; // nombre de jour à partir de la date courate pour lesquels on affiche les points
51
	private $annee = null; // filtre par année
51
	private $annee = null; // filtre par année
52
	private $referentiel = null;
52
	private $referentiel = null;
53
	private $groupe_zones_geo = null; // Groupe de zones géographiques personnalisé
53
	private $groupe_zones_geo = null; // Groupe de zones géographiques personnalisé
54
	/** langue (traduction), charge un template de la forme "defaut_en.tpl.html" */
54
	/** langue (traduction), charge un template de la forme "defaut_en.tpl.html" */
55
	protected $langue = null;
55
	protected $langue = null;
56
 
56
 
57
	/**
57
	/**
58
	 * Méthode appelée par défaut pour charger ce widget.
58
	 * Méthode appelée par défaut pour charger ce widget.
59
	 */
59
	 */
60
	public function executer() {
60
	public function executer() {
61
		$retour = null;
61
		$retour = null;
62
		$this->extraireParametres();
62
		$this->extraireParametres();
63
		if ($this->num_taxon == false) {
63
		if ($this->num_taxon == false) {
64
    		$methode = $this->traiterNomMethodeExecuter($this->carte);
64
    		$methode = $this->traiterNomMethodeExecuter($this->carte);
65
    		if (method_exists($this, $methode)) {
65
    		if (method_exists($this, $methode)) {
66
    			$retour = $this->$methode();
66
    			$retour = $this->$methode();
67
    		} else {
67
    		} else {
68
    			$this->messages[] = "Ce type de service '$methode' n'est pas disponible.";
68
    			$this->messages[] = "Ce type de service '$methode' n'est pas disponible.";
69
    		}
69
    		}
70
    		if (is_null($retour)) {
70
    		if (is_null($retour)) {
71
    			$info = 'Un problème est survenu : '.print_r($this->messages, true);
71
    			$info = 'Un problème est survenu : '.print_r($this->messages, true);
72
    			$this->envoyer($info);
72
    			$this->envoyer($info);
73
    		} else {
73
    		} else {
74
    			// Suffixe de template pour la langue - fr par défaut @TODO configurer ça un jour
74
    			// Suffixe de template pour la langue - fr par défaut @TODO configurer ça un jour
75
    			$suffixeLangue = "";
75
    			$suffixeLangue = "";
76
    			if ($this->langue != null && $this->langue != "fr") {
76
    			if ($this->langue != null && $this->langue != "fr") {
77
    				$suffixeLangue = "_" . $this->langue;
77
    				$suffixeLangue = "_" . $this->langue;
78
    			}
78
    			}
79
    			$squelette = dirname(__FILE__).self::DS.'squelettes'.self::DS.$retour['squelette'].$suffixeLangue.'.tpl.html';
79
    			$squelette = dirname(__FILE__).self::DS.'squelettes'.self::DS.$retour['squelette'].$suffixeLangue.'.tpl.html';
80
    			$html = $this->traiterSquelettePhp($squelette, $retour['donnees']);
80
    			$html = $this->traiterSquelettePhp($squelette, $retour['donnees']);
81
    			$this->envoyer($html);
81
    			$this->envoyer($html);
82
    		}
82
    		}
83
		} else {
83
		} else {
84
		    $this->envoyer("Cette carto utilise le paramètre num_taxon pour afficher les observations liés à un taxon particulier.
84
		    $this->envoyer("Cette carto utilise le paramètre num_taxon pour afficher les observations liés à un taxon particulier.
85
		        Ce paramètre n'est plus maintenu. Vous pouvez utiliser le paramètre num_nom_retenu pour réaliser 
85
		        Ce paramètre n'est plus maintenu. Vous pouvez utiliser le paramètre num_nom_retenu pour réaliser 
86
		        un filtre sur le numéro nomenclatural du nom. Contactez nous via 
86
		        un filtre sur le numéro nomenclatural du nom. En cas de problème, vous pouvez nous contacter via l'outil suivant <br />
87
		        <iframe style=\"width:650px;height:600px;\" src=\"https://www.tela-botanica.org/widget:reseau:remarques?lang=fr&service=cel&pageSource=tela-botanica.org/widget:cel:cartoPoint\"></iframe>");
87
		        <iframe src=\"https://www.tela-botanica.org/widget:reseau:remarques?lang=fr&service=cel&pageSource=tela-botanica.org/widget:cel:cartoPoint\"></iframe>");
88
		}
88
		}
89
	}
89
	}
90
 
90
 
91
	public function extraireParametres() {
91
	public function extraireParametres() {
92
		extract($this->parametres);
92
		extract($this->parametres);
93
		$this->num_taxon  = (isset($num_taxon) ? true : false);
93
		$this->num_taxon  = (isset($num_taxon) ? true : false);
94
		$this->carte = (isset($carte) ? $carte : self::SERVICE_CARTO_ACTION_DEFAUT);
94
		$this->carte = (isset($carte) ? $carte : self::SERVICE_CARTO_ACTION_DEFAUT);
95
		$this->utilisateur = (isset($utilisateur) ? $utilisateur : '*');
95
		$this->utilisateur = (isset($utilisateur) ? $utilisateur : '*');
96
		$this->projet = (isset($projet) ? $projet : '*');
96
		$this->projet = (isset($projet) ? $projet : '*');
97
		$this->tag = (isset($tag) ? $tag : '*');
97
		$this->tag = (isset($tag) ? $tag : '*');
98
		$this->tag = (isset($motcle) ? $motcle : $this->tag);
98
		$this->tag = (isset($motcle) ? $motcle : $this->tag);
99
		$this->dept = (isset($dept) ? $dept : '*');
99
		$this->dept = (isset($dept) ? $dept : '*');
100
		$this->commune = (isset($commune) ? $commune : '*');
100
		$this->commune = (isset($commune) ? $commune : '*');
101
		$this->pays = (isset($pays) ? $pays : '*');
101
		$this->pays = (isset($pays) ? $pays : '*');
102
		$this->num_nom_ret = (isset($num_nom_ret) ? $num_nom_ret : '*');
102
		$this->num_nom_ret = (isset($num_nom_ret) ? $num_nom_ret : '*');
103
		$this->date = (isset($date) ? $date : '*');
103
		$this->date = (isset($date) ? $date : '*');
104
		$this->taxon = (isset($taxon) ? $taxon : '*');
104
		$this->taxon = (isset($taxon) ? $taxon : '*');
105
		$this->commentaire = (isset($commentaire) ? $commentaire : null);
105
		$this->commentaire = (isset($commentaire) ? $commentaire : null);
106
		$this->station = (isset($station) ? $station : null);
106
		$this->station = (isset($station) ? $station : null);
107
		$this->format = (isset($format) ? $format : null);
107
		$this->format = (isset($format) ? $format : null);
108
		$this->photos = (isset($photos) ? $photos : null);
108
		$this->photos = (isset($photos) ? $photos : null);
109
		$this->titre = (isset($titre) ? urldecode($titre) : null);
109
		$this->titre = (isset($titre) ? urldecode($titre) : null);
110
		$this->logo = (isset($logo) ? urldecode($logo) : null);
110
		$this->logo = (isset($logo) ? urldecode($logo) : null);
111
		$this->url_site = (isset($url_site) ? urldecode($url_site) : null);
111
		$this->url_site = (isset($url_site) ? urldecode($url_site) : null);
112
		$this->image = (isset($image) ? urldecode($image) : null);
112
		$this->image = (isset($image) ? urldecode($image) : null);
113
		$this->nbjours = (isset($nbjours) ? urldecode($nbjours) : null);
113
		$this->nbjours = (isset($nbjours) ? urldecode($nbjours) : null);
114
		$this->annee = (isset($annee) ? urldecode($annee) : null);
114
		$this->annee = (isset($annee) ? urldecode($annee) : null);
115
		$this->referentiel = (isset($referentiel) ? urldecode($referentiel) : null);
115
		$this->referentiel = (isset($referentiel) ? urldecode($referentiel) : null);
116
		$this->groupe_zones_geo = (isset($groupe_zones_geo) ? urldecode($groupe_zones_geo) : null);
116
		$this->groupe_zones_geo = (isset($groupe_zones_geo) ? urldecode($groupe_zones_geo) : null);
117
		$this->start = (isset($start) ? $start : null);
117
		$this->start = (isset($start) ? $start : null);
118
		$this->limit = (isset($limit) ? $limit : null);
118
		$this->limit = (isset($limit) ? $limit : null);
119
		// définition de la langue, en mode souple
119
		// définition de la langue, en mode souple
120
		if (isset($this->parametres['lang'])) {
120
		if (isset($this->parametres['lang'])) {
121
			$this->langue = $this->parametres['lang'];
121
			$this->langue = $this->parametres['lang'];
122
		}
122
		}
123
	}
123
	}
124
 
124
 
125
	/**
125
	/**
126
	 * Carte par défaut
126
	 * Carte par défaut
127
	 */
127
	 */
128
	public function executerCarteDefaut() {
128
	public function executerCarteDefaut() {
129
		$widget = null;
129
		$widget = null;
130
		$url_stations = $this->contruireUrlServiceCarto('stations');
130
		$url_stations = $this->contruireUrlServiceCarto('stations');
131
		$url_base = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
131
		$url_base = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
132
 
132
 
133
		// Création des infos du widget
133
		// Création des infos du widget
134
		$widget['donnees']['url_cel_carto'] = $this->contruireUrlServiceCarto();
134
		$widget['donnees']['url_cel_carto'] = $this->contruireUrlServiceCarto();
135
		$widget['donnees']['url_stations'] = $url_stations;
135
		$widget['donnees']['url_stations'] = $url_stations;
136
		$widget['donnees']['url_base'] = $url_base;
136
		$widget['donnees']['url_base'] = $url_base;
137
		$widget['donnees']['utilisateur'] = $this->utilisateur;
137
		$widget['donnees']['utilisateur'] = $this->utilisateur;
138
		$widget['donnees']['projet'] = $this->projet;
138
		$widget['donnees']['projet'] = $this->projet;
139
		$widget['donnees']['tag'] = $this->tag;
139
		$widget['donnees']['tag'] = $this->tag;
140
		$widget['donnees']['dept'] = $this->dept;
140
		$widget['donnees']['dept'] = $this->dept;
141
		$widget['donnees']['commune'] = $this->commune;
141
		$widget['donnees']['commune'] = $this->commune;
142
		$widget['donnees']['pays'] = $this->pays;
142
		$widget['donnees']['pays'] = $this->pays;
143
		$widget['donnees']['num_nom_ret'] = $this->num_nom_ret;
143
		$widget['donnees']['num_nom_ret'] = $this->num_nom_ret;
144
		$widget['donnees']['date'] = $this->date;
144
		$widget['donnees']['date'] = $this->date;
145
		$widget['donnees']['taxon'] = $this->taxon;
145
		$widget['donnees']['taxon'] = $this->taxon;
146
		$widget['donnees']['commentaire'] = $this->commentaire;
146
		$widget['donnees']['commentaire'] = $this->commentaire;
147
		$widget['donnees']['photos'] = $this->photos;
147
		$widget['donnees']['photos'] = $this->photos;
148
		$widget['donnees']['titre'] = $this->titre;
148
		$widget['donnees']['titre'] = $this->titre;
149
		$widget['donnees']['logo'] = $this->logo;
149
		$widget['donnees']['logo'] = $this->logo;
150
		$widget['donnees']['url_site'] = $this->url_site;
150
		$widget['donnees']['url_site'] = $this->url_site;
151
		$widget['donnees']['image'] = $this->image;
151
		$widget['donnees']['image'] = $this->image;
152
		$widget['donnees']['nbjours'] = $this->nbjours;
152
		$widget['donnees']['nbjours'] = $this->nbjours;
153
		$widget['donnees']['annee'] = $this->annee;
153
		$widget['donnees']['annee'] = $this->annee;
154
		$widget['donnees']['referentiel'] = $this->referentiel;
154
		$widget['donnees']['referentiel'] = $this->referentiel;
155
		$widget['donnees']['groupe_zones_geo'] = $this->groupe_zones_geo;
155
		$widget['donnees']['groupe_zones_geo'] = $this->groupe_zones_geo;
156
		$widget['donnees']['url_limites_communales'] = $this->obtenirUrlsLimitesCommunales();
156
		$widget['donnees']['url_limites_communales'] = $this->obtenirUrlsLimitesCommunales();
157
		$widget['donnees']['communeImageUrl'] = $this->config['carto']['communeImageUrl'];
157
		$widget['donnees']['communeImageUrl'] = $this->config['carto']['communeImageUrl'];
158
		$widget['donnees']['pointImageUrl'] = $this->config['carto']['pointImageUrl'];
158
		$widget['donnees']['pointImageUrl'] = $this->config['carto']['pointImageUrl'];
159
		$widget['donnees']['groupeImageUrlTpl'] = $this->config['carto']['groupeImageUrlTpl'];
159
		$widget['donnees']['groupeImageUrlTpl'] = $this->config['carto']['groupeImageUrlTpl'];
160
		$widget['donnees']['url_widget_saisie'] = $this->config['urls']['widgetSaisie'];
160
		$widget['donnees']['url_widget_saisie'] = $this->config['urls']['widgetSaisie'];
161
		$widget['donnees']['prod'] = ($this->config['parametres']['modeServeur'] == "prod");
161
		$widget['donnees']['prod'] = ($this->config['parametres']['modeServeur'] == "prod");
162
		$widget['donnees']['cleGoogleMaps'] = $this->config['api']['cleGoogleMapsCartoPoint'];
162
		$widget['donnees']['cleGoogleMaps'] = $this->config['api']['cleGoogleMapsCartoPoint'];
163
		$widget['donnees']['baseURLServicesAnnuaireTpl'] = $this->config['chemins']['baseURLServicesAnnuaireTpl'];
163
		$widget['donnees']['baseURLServicesAnnuaireTpl'] = $this->config['chemins']['baseURLServicesAnnuaireTpl'];
164
		$widget['donnees']['baseURLServicesCelTpl'] = $this->config['chemins']['baseURLServicesCelTpl'];
164
		$widget['donnees']['baseURLServicesCelTpl'] = $this->config['chemins']['baseURLServicesCelTpl'];
165
 
165
 
166
		$widget['squelette'] = 'carte_defaut';
166
		$widget['squelette'] = 'carte_defaut';
167
 
167
 
168
		return $widget;
168
		return $widget;
169
	}
169
	}
170
 
170
 
171
	private function contruireUrlServiceCarto($action = null) {
171
	private function contruireUrlServiceCarto($action = null) {
172
		// Création url données json
172
		// Création url données json
173
		$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], self::SERVICE_CARTO_NOM);
173
		$url = sprintf($this->config['chemins']['baseURLServicesCelTpl'], self::SERVICE_CARTO_NOM);
174
		if ($action) {
174
		if ($action) {
175
			$url .= "/$action";
175
			$url .= "/$action";
176
 
176
 
177
			$parametres_retenus = array();
177
			$parametres_retenus = array();
178
			$parametres_a_tester = array('station', 'utilisateur', 'projet', 'tag', 'dept', 'commune',
178
			$parametres_a_tester = array('station', 'utilisateur', 'projet', 'tag', 'dept', 'commune',
179
				'num_nom_ret', 'taxon', 'date', 'commentaire', 'nbjours', 'referentiel','pays', 'groupe_zones_geo',
179
				'num_nom_ret', 'taxon', 'date', 'commentaire', 'nbjours', 'referentiel','pays', 'groupe_zones_geo',
180
				'start', 'limit');
180
				'start', 'limit');
181
			foreach ($parametres_a_tester as $param) {
181
			foreach ($parametres_a_tester as $param) {
182
				if (isset($this->$param) && $this->$param != '*') {
182
				if (isset($this->$param) && $this->$param != '*') {
183
					$parametres_retenus[$param] = $this->$param;
183
					$parametres_retenus[$param] = $this->$param;
184
				}
184
				}
185
			}
185
			}
186
			if (count($parametres_retenus) > 0) {
186
			if (count($parametres_retenus) > 0) {
187
				$parametres_url = array();
187
				$parametres_url = array();
188
				foreach ($parametres_retenus as $cle => $valeur) {
188
				foreach ($parametres_retenus as $cle => $valeur) {
189
					$parametres_url[] = $cle.'='.$valeur;
189
					$parametres_url[] = $cle.'='.$valeur;
190
				}
190
				}
191
				$url .= '?'.implode('&', $parametres_url);
191
				$url .= '?'.implode('&', $parametres_url);
192
			}
192
			}
193
		}
193
		}
194
		return $url;
194
		return $url;
195
	}
195
	}
196
 
196
 
197
	private function obtenirUrlsLimitesCommunales() {
197
	private function obtenirUrlsLimitesCommunales() {
198
		$urls = null;
198
		$urls = null;
199
		if (isset($this->dept)) {
199
		if (isset($this->dept)) {
200
			// si on veut afficher les limites départementales on va compter et chercher les noms de fichiers
200
			// si on veut afficher les limites départementales on va compter et chercher les noms de fichiers
201
			$fichiersKml = $this->chercherFichierKml();
201
			$fichiersKml = $this->chercherFichierKml();
202
			if (count($fichiersKml) > 0) {
202
			if (count($fichiersKml) > 0) {
203
				foreach ($fichiersKml as $kml => $dossier){
203
				foreach ($fichiersKml as $kml => $dossier){
204
					$url_limites_communales = sprintf($this->config['carto']['limitesCommunaleUrlTpl'], $dossier, $kml);
204
					$url_limites_communales = sprintf($this->config['carto']['limitesCommunaleUrlTpl'], $dossier, $kml);
205
					$urls[] = $url_limites_communales;
205
					$urls[] = $url_limites_communales;
206
				}
206
				}
207
			}
207
			}
208
		}
208
		}
209
		$urls = json_encode($urls);
209
		$urls = json_encode($urls);
210
		return $urls;
210
		return $urls;
211
	}
211
	}
212
 
212
 
213
	private function chercherFichierKml(){
213
	private function chercherFichierKml(){
214
		$fichiers = array();
214
		$fichiers = array();
215
		if (isset($this->config['carto']['communesKmzChemin'])) {
215
		if (isset($this->config['carto']['communesKmzChemin'])) {
216
			$chemins = explode(',', $this->config['carto']['communesKmzChemin']);
216
			$chemins = explode(',', $this->config['carto']['communesKmzChemin']);
217
			$departements = explode(',', $this->dept);// plrs code de départements peuvent être demandés séparés par des virgules
217
			$departements = explode(',', $this->dept);// plrs code de départements peuvent être demandés séparés par des virgules
218
			$departements_trouves = array();
218
			$departements_trouves = array();
219
			foreach ($chemins as $dossier_chemin) {
219
			foreach ($chemins as $dossier_chemin) {
220
				if ($dossier_ressource = opendir($dossier_chemin)) {
220
				if ($dossier_ressource = opendir($dossier_chemin)) {
221
					while ($element = readdir($dossier_ressource)) {
221
					while ($element = readdir($dossier_ressource)) {
222
						if ($element != '.' && $element != '..') {
222
						if ($element != '.' && $element != '..') {
223
							foreach ($departements as $departement) {
223
							foreach ($departements as $departement) {
224
								$nom_dossier = basename($dossier_chemin);
224
								$nom_dossier = basename($dossier_chemin);
225
								if (!isset($departements_trouves[$departement]) || $departements_trouves[$departement] == $nom_dossier) {
225
								if (!isset($departements_trouves[$departement]) || $departements_trouves[$departement] == $nom_dossier) {
226
									$dept_protege = preg_quote($departement);
226
									$dept_protege = preg_quote($departement);
227
									if (!is_dir($dossier_chemin.'/'.$element) && preg_match("/^$dept_protege(?:_[0-9]+|)\.km[lz]$/", $element)) {
227
									if (!is_dir($dossier_chemin.'/'.$element) && preg_match("/^$dept_protege(?:_[0-9]+|)\.km[lz]$/", $element)) {
228
										$fichiers[$element] = $nom_dossier;
228
										$fichiers[$element] = $nom_dossier;
229
										$departements_trouves[$departement] = $nom_dossier;
229
										$departements_trouves[$departement] = $nom_dossier;
230
									}
230
									}
231
								}
231
								}
232
							}
232
							}
233
						}
233
						}
234
					}
234
					}
235
					closedir($dossier_ressource);
235
					closedir($dossier_ressource);
236
				}
236
				}
237
			}
237
			}
238
		} else {
238
		} else {
239
			$this->messages[] = 'Veuillez configurer le paramètres carto.communesKmzChemin.';
239
			$this->messages[] = 'Veuillez configurer le paramètres carto.communesKmzChemin.';
240
		}
240
		}
241
		return $fichiers;
241
		return $fichiers;
242
	}
242
	}
243
 
243
 
244
	/**
244
	/**
245
	 * Afficher message d'avertissement.
245
	 * Afficher message d'avertissement.
246
	 */
246
	 */
247
	public function executerAvertissement() {
247
	public function executerAvertissement() {
248
		$widget = null;
248
		$widget = null;
249
 
249
 
250
		// Création des infos du widget
250
		// Création des infos du widget
251
		$widget['donnees']['contenu_aide'] = $this->chargerAideWiki();
251
		$widget['donnees']['contenu_aide'] = $this->chargerAideWiki();
252
		$widget['donnees']['url_base'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
252
		$widget['donnees']['url_base'] = sprintf($this->config['chemins']['baseURLAbsoluDyn'], '');
253
		$widget['squelette'] = 'avertissement';
253
		$widget['squelette'] = 'avertissement';
254
 
254
 
255
		return $widget;
255
		return $widget;
256
	}
256
	}
257
 
257
 
258
	/**
258
	/**
259
	 * Charge le contenu du wikini demandé
259
	 * Charge le contenu du wikini demandé
260
	 */
260
	 */
261
	function chargerAideWiki() {
261
	function chargerAideWiki() {
262
		$url = str_replace('{page}','AideCarto',$this->config['carto']['aideWikiniUrlCartoPoint']);
262
		$url = str_replace('{page}','AideCarto',$this->config['carto']['aideWikiniUrlCartoPoint']);
263
		$infos_aide = file_get_contents($url);
263
		$infos_aide = file_get_contents($url);
264
 
264
 
265
		$aide = '';
265
		$aide = '';
266
 
266
 
267
		if($infos_aide != null && $infos_aide != '') {
267
		if($infos_aide != null && $infos_aide != '') {
268
			$infos_aide = json_decode($infos_aide);
268
			$infos_aide = json_decode($infos_aide);
269
			$infos_aide = (is_a($infos_aide, 'StdClass') && $infos_aide->texte != null) ? $infos_aide->texte : '';
269
			$infos_aide = (is_a($infos_aide, 'StdClass') && $infos_aide->texte != null) ? $infos_aide->texte : '';
270
		}
270
		}
271
 
271
 
272
		return $infos_aide;
272
		return $infos_aide;
273
	}
273
	}
274
}
274
}
275
?>
275
?>