Subversion Repositories Sites.obs-saisons.fr

Rev

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

Rev 248 Rev 249
1
<?php
1
<?php
2
 
2
 
3
class OdsExport extends OdsTriple {
3
class OdsExport extends OdsTriple {
4
	
4
	
5
	const PREFIXE = 'get';
5
	const PREFIXE = 'get';
6
	const ABBR_LISTE_EVENEMENTS = 'evenement';
6
	const ABBR_LISTE_EVENEMENTS = 'evenement';
7
	const ABBR_LISTE_ESPECES = 'espece';
7
	const ABBR_LISTE_ESPECES = 'espece';
-
 
8
	const ABBR_LISTE_MILIEUX = 'environnement';
8
	
9
 
9
	private $type_mime = 'text/html';
10
	private $type_mime = 'text/html';
10
	
11
	
11
	/**
12
	/**
12
 	* Méthodes d'extractions d'informations
13
 	* Méthodes d'extractions d'informations
13
 	*/
14
 	*/
14
	
15
	
15
	/**
16
	/**
16
     * Méthode appelée avec une requête de type GET.
17
     * Méthode appelée avec une requête de type GET.
17
     *
18
     *
18
     */
19
     */
19
    function getElement($param = array()) {
20
    function getElement($param = array()) {
20
    	
21
    	
21
    	$type = $param[0];
22
    	$type = $param[0];
22
    	    	
23
    	    	
23
        if ($type == '*' || is_numeric($type)) {
24
        if ($type == '*' || is_numeric($type)) {
24
            $info = $this->getElementParDefaut($param);
25
            $info = $this->getElementParDefaut($param);
25
        } else {
26
        } else {
26
            $methode = self::PREFIXE.$type;
27
            $methode = self::PREFIXE.$type;
27
            if (method_exists($this, $methode)) {
28
            if (method_exists($this, $methode)) {
28
                array_shift($param);
29
                array_shift($param);
29
                $info = $this->$methode($param);
30
                $info = $this->$methode($param);
30
            } else {
31
            } else {
31
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
32
                $this->messages[] = "Le type d'information demandé '$type' n'est pas disponible.";
32
            }
33
            }
33
        }
34
        }
34
       
35
 
35
        $this->envoyer($info,$this->type_mime);
36
	$this->envoyer($info,$this->type_mime);
36
    }
37
    }
37
    	
38
	
38
	public function getExportObservation($start = null,$limit = null, $order_by = 'oo_date') {
39
	public function getExportObservation($start = null,$limit = null, $order_by = 'oo_date') {
39
						
40
						
40
		$requete_selection_observations = 'SELECT * FROM ods_observations '.
41
		$requete_selection_observations = 'SELECT * FROM ods_observations '.
41
									' LEFT JOIN ods_individus '. 
42
									' LEFT JOIN ods_individus '. 
42
									' ON oi_id_individu = oo_ce_individu'.
43
									' ON oi_id_individu = oo_ce_individu'.
43
									' LEFT JOIN ods_stations '.
44
									' LEFT JOIN ods_stations '.
44
									' ON oi_ce_station = os_id_station ';
45
									' ON oi_ce_station = os_id_station ';
45
		
46
		
46
		$requete_selection_observations .= $this->construireConditionRequete();
47
		$requete_selection_observations .= $this->construireConditionRequete();
47
		$requete_selection_observations .= ' ORDER BY oo_date DESC';
48
		$requete_selection_observations .= ' ORDER BY oo_date DESC';
48
		
49
		
49
		$res_selection_observations = $this->executerRequete($requete_selection_observations);
50
		$res_selection_observations = $this->executerRequete($requete_selection_observations);
50
				
51
				
51
		return $res_selection_observations;
52
		return $res_selection_observations;
52
	}
53
	}
53
	
54
	
54
	public function construireConditionRequete() {
55
	public function construireConditionRequete() {
55
		
56
		
56
		$condition = ' WHERE oo_date != "0000-00-00" AND DAY(oo_date) != "00" AND ';
57
		$condition = ' WHERE oo_date != "0000-00-00" AND DAY(oo_date) != "00" AND ';
57
		
58
		
58
		foreach($_GET as $cle => $valeur) {
59
		foreach($_GET as $cle => $valeur) {
59
			
60
			
60
			switch($cle) {
61
			switch($cle) {
61
			
62
			
62
				case 'type_espece':
63
				case 'type_espece':
63
					$condition .= 'oi_ce_espece IN (SELECT oe_id_espece FROM ods_especes WHERE oe_ce_type = '.$this->proteger($valeur).')';
64
					$condition .= 'oi_ce_espece IN (SELECT oe_id_espece FROM ods_especes WHERE oe_ce_type = '.$this->proteger($valeur).')';
64
				break;
65
				break;
65
				
66
				
66
				case 'annee':
67
				case 'annee':
67
					if($this->anneesMultiplesDemandees($valeur)) {
68
					if($this->anneesMultiplesDemandees($valeur)) {
68
						$valeur = rtrim($valeur,',');
69
						$valeur = rtrim($valeur,',');
69
						$condition .= 'YEAR(oo_date) IN ('.$valeur.')';						
70
						$condition .= 'YEAR(oo_date) IN ('.$valeur.')';						
70
					} else {
71
					} else {
71
						$condition .= 'YEAR(oo_date) ';
72
						$condition .= 'YEAR(oo_date) ';
72
						$condition .= ' = '.$this->proteger($valeur);
73
						$condition .= ' = '.$this->proteger($valeur);
73
					}
74
					}
74
				break;
75
				break;
75
				
76
				
76
				case 'mois':
77
				case 'mois':
77
					$condition .= 'MONTH(oo_date) <= '.$this->proteger($valeur);
78
					$condition .= 'MONTH(oo_date) <= '.$this->proteger($valeur);
78
				break;
79
				break;
79
				
80
				
80
				case 'espece':
81
				case 'espece':
81
					$condition .= 'oi_ce_espece IN ('.$valeur.') ';
82
					$condition .= 'oi_ce_espece IN ('.$valeur.') ';
82
				break;
83
				break;
83
				
84
				
84
				case 'evenement':
85
				case 'evenement':
85
					$condition .= 'oo_ce_evenement = '.$this->proteger($valeur);
86
					$condition .= 'oo_ce_evenement = '.$this->proteger($valeur);
86
				break;
87
				break;
87
				
88
				
88
				case 'departement':
89
				case 'departement':
89
					$condition .= 'os_ce_commune LIKE "'.$valeur.'%" ';
90
					$condition .= 'os_ce_commune LIKE "'.$valeur.'%" ';
90
				break;
91
				break;
91
				
92
				
92
				case 'utilisateur':
93
				case 'utilisateur':
93
					$condition .= 'oo_ce_participant = '.$this->proteger($valeur);	
94
					$condition .= 'oo_ce_participant = '.$this->proteger($valeur);	
94
				break;
95
				break;
95
				
96
				
96
				default:
97
				default:
97
				break;
98
				break;
98
			}
99
			}
99
			
100
			
100
			$condition .= ' AND ';
101
			$condition .= ' AND ';
101
		}
102
		}
102
		
103
		
103
		$condition = rtrim($condition,'AND ');
104
		$condition = rtrim($condition,'AND ');
104
		
105
		
105
		$id_demo = $this->config['appli']['id_participant_demo'];
106
		$id_demo = $this->config['appli']['id_participant_demo'];
106
		$id_admin = $this->config['appli']['id_participant_admin'];
107
		$id_admin = $this->config['appli']['id_participant_admin'];
107
		
108
		
108
		$condition .= ' AND oo_ce_participant != '.$id_demo;
109
		$condition .= ' AND oo_ce_participant != '.$id_demo;
109
		$condition .= ' AND oo_ce_participant != '.$id_admin;
110
		$condition .= ' AND oo_ce_participant != '.$id_admin;
110
		
111
		
111
		return $condition;
112
		return $condition;
112
	}
113
	}
113
	
114
	
114
	private function anneesMultiplesDemandees($annee) {
115
	private function anneesMultiplesDemandees($annee) {
115
		// un ensemble d'identifiants est une suite d'identifiants séparés par des virgules
116
		// un ensemble d'identifiants est une suite d'identifiants séparés par des virgules
116
		// sans virgule terminale
117
		// sans virgule terminale
117
		$reg_exp = "/^(([0-9])+,)*([0-9])+$/";
118
		$reg_exp = "/^(([0-9])+,)*([0-9])+$/";
118
		return preg_match($reg_exp, $annee);
119
		return preg_match($reg_exp, $annee);
119
	}
120
	}
120
	
121
	
121
	public function getExportObservationPlat() {
122
	public function getExportObservationPlat() {
122
				
123
				
123
		$donnees = $this->getExportObservation();
124
		$donnees = $this->getExportObservation();
124
		$donnees_formatees = $this->formaterPourExportObservationCSV($donnees);	
125
		$donnees_formatees = $this->formaterPourExportCSV($donnees);	
125
			
126
			
126
		return $donnees_formatees ;
127
		return $donnees_formatees ;
127
	}
128
	}
128
	
129
	
129
	public function getExportObservationJson() {
130
	public function getExportObservationJson() {
130
		
131
		
131
		$donnees = $this->getExportObservation();
132
		$donnees = $this->getExportObservation();
132
		$donnees_formatees = $this->formaterPourExportObservationJson($donnees);
133
		$donnees_formatees = $this->formaterPourExportJson($donnees);
133
		
134
 
134
		$this->type_mime = 'application/json';
135
		$this->type_mime = 'application/json';
135
		
136
		
136
		return $donnees_formatees;
137
		return $donnees_formatees;
137
	}
138
	}
138
	
139
	
139
	public function formaterPourExportObservationJson($tableau_observations_infos) {
140
	public function formaterPourExportJson($tableau_observations_infos) {
140
		
141
		
141
		$gestionnaire_especes = new OdsEspece($this->config);
142
		$gestionnaire_especes = new OdsEspece($this->config);
142
		$gestionnaire_communes = new OdsCommune($this->config);
143
		$gestionnaire_communes = new OdsCommune($this->config);
143
				
144
				
144
		$especes = $gestionnaire_especes->getToutesEspeces();
145
		$especes = $gestionnaire_especes->getToutesEspeces();
145
		$evenements = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_EVENEMENTS);
146
		$evenements = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_EVENEMENTS);
-
 
147
		$milieux = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_MILIEUX);
146
		
148
		
147
		$resultats_formates = array();
149
		$resultats_formates = array();
148
		
150
		
149
		foreach($tableau_observations_infos as $observations_infos) {
151
		foreach($tableau_observations_infos as $observations_infos) {
150
		
152
		
151
			$id_espece = $observations_infos['oi_ce_espece'];
153
			$id_espece = $observations_infos['oi_ce_espece'];
152
			$nom_espece =  $especes[$id_espece]['nom_scientifique'];
154
			$nom_espece =  $especes[$id_espece]['nom_scientifique'];
153
				
155
				
154
			$id_evenement = $observations_infos['oo_ce_evenement'];
156
			$id_evenement = $observations_infos['oo_ce_evenement'];
155
			$chaine_evenement = $evenements[$id_evenement]['ot_cle'];
157
			$chaine_evenement = $evenements[$id_evenement]['ot_cle'];
156
				
158
				
157
			$infos_evenement = $this->renvoyerInformationStadeAPartirChaineTriple($chaine_evenement);
159
			$infos_evenement = $this->renvoyerInformationStadeAPartirChaineTriple($chaine_evenement);
158
				
160
				
159
			$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observations_infos['oo_date']));
161
			$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observations_infos['oo_date']));
160
			
162
			
161
			$id_observation = $observations_infos['oo_id_observation'];
163
			$id_observation = $observations_infos['oo_id_observation'];
162
			$infos_formatees = array(
164
			$infos_formatees = array(
163
				'date' => $date_observation_formatee,
165
				'date' => $date_observation_formatee,
164
				'evenenement' => $infos_evenement['nom'],
166
				'evenenement' => $infos_evenement['nom'],
165
				'code_bbch' => $infos_evenement['numero'],
167
				'code_bbch' => $infos_evenement['numero'],
166
				'nom_scientifique' => $nom_espece,
168
				'nom_scientifique' => $nom_espece,
167
				'id_espece' => $id_espece,
169
				'id_espece' => $id_espece,
168
				'participant' => $observations_infos['os_ce_participant']
170
				'participant' => $observations_infos['os_ce_participant']
169
			);
171
			);
170
			
172
			
171
			$id_station = $observations_infos['oi_ce_station'];
173
			$id_station = $observations_infos['oi_ce_station'];
172
			
174
			
173
			if(!isset($resultats_formates[$id_station])) {
175
			if(!isset($resultats_formates[$id_station])) {
174
				$resultats_formates[$id_station]['station'] = $observations_infos['os_nom'];
176
				$resultats_formates[$id_station]['station'] = $observations_infos['os_nom'];
175
				$resultats_formates[$id_station]['code_commune'] = $observations_infos['os_ce_commune'];
177
				$resultats_formates[$id_station]['code_commune'] = $observations_infos['os_ce_commune'];
176
				//$resultats_formates[$id_station]['nom_commune'] = $gestionnaire_communes->obtenirNomCommuneParCodeInsee($observations_infos['os_ce_commune']);
178
				//$resultats_formates[$id_station]['nom_commune'] = $gestionnaire_communes->obtenirNomCommuneParCodeInsee($observations_infos['os_ce_commune']);
177
				$resultats_formates[$id_station]['latitude'] = $observations_infos['os_latitude'];
179
				$resultats_formates[$id_station]['latitude'] = $observations_infos['os_latitude'];
178
				$resultats_formates[$id_station]['longitude'] = $observations_infos['os_longitude'];
180
				$resultats_formates[$id_station]['longitude'] = $observations_infos['os_longitude'];
179
				$resultats_formates[$id_station]['altitude'] = $observations_infos['os_altitude'];
181
				$resultats_formates[$id_station]['altitude'] = $observations_infos['os_altitude'];
180
				$resultats_formates[$id_station]['milieu'] = $observations_infos['os_milieu'];
182
				$resultats_formates[$id_station]['milieu'] = $milieux[$observations_infos['os_ce_environnement']]['ot_valeur'];
181
				$resultats_formates[$id_station]['participant'] = $observations_infos['os_ce_participant'];
183
				$resultats_formates[$id_station]['participant'] = $observations_infos['os_ce_participant'];
182
			}
184
			}
183
			
185
			
184
			$resultats_formates[$id_station]['obs'][$id_observation] = $infos_formatees;
186
			$resultats_formates[$id_station]['obs'][$id_observation] = $infos_formatees;
185
		}
187
		}
186
		
188
		
187
		return $resultats_formates;
189
		return $resultats_formates;
188
	}
190
	}
189
	
191
	
190
	public function getFichierExportObservationCsv() {
192
	public function getFichierExportObservationCsv() {
191
				
193
				
192
		$donnees = $this->getExportObservation();
194
		$donnees = $this->getExportObservation();
193
		$donnees_formatees = $this->formaterPourExportObservationCSV($donnees);		
195
		$donnees_formatees = $this->formaterPourExportCSV($donnees);		
194
		$chaine_csv = $this->convertirTableauAssocVersCSV($donnees_formatees);
196
		$chaine_csv = $this->convertirTableauAssocVersCSV($donnees_formatees);
195
			
197
			
196
		$this->envoyerFichier($chaine_csv);
198
		$this->envoyerFichier($chaine_csv);
197
	}
199
	}
198
	
200
	
199
	public function formaterPourExportObservationCSV($tableau_observations_infos) {
201
	public function formaterPourExportCSV($tableau_observations_infos) {
200
		
202
		
201
		$gestionnaire_especes = new OdsEspece($this->config);
203
		$gestionnaire_especes = new OdsEspece($this->config);
202
		$gestionnaire_communes = new OdsCommune($this->config);
204
		$gestionnaire_communes = new OdsCommune($this->config);
203
		$gestionnaire_utilisateurs = new OdsUtilisateur($this->config);
205
		$gestionnaire_utilisateurs = new OdsUtilisateur($this->config);
204
				
206
				
205
		$especes = $gestionnaire_especes->getToutesEspeces();
207
		$especes = $gestionnaire_especes->getToutesEspeces();
206
		$evenements = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_EVENEMENTS);
208
		$evenements = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_EVENEMENTS);
-
 
209
		$milieux = $this->obtenirValeursListeParAbreviation(self::ABBR_LISTE_MILIEUX);
207
		
210
		
208
		$codes_insee_communes = array();
211
		$codes_insee_communes = array();
209
		
212
		
210
		$resultats_formates = array();
213
		$resultats_formates = array();
211
		
214
		
212
		foreach($tableau_observations_infos as $observations_infos) {
215
		foreach($tableau_observations_infos as $observations_infos) {
213
		
216
		
214
			$id_espece = $observations_infos['oi_ce_espece'];
217
			$id_espece = $observations_infos['oi_ce_espece'];
215
			$nom_espece =  $especes[$id_espece]['nom_scientifique'];
218
			$nom_espece =  $especes[$id_espece]['nom_scientifique'];
216
				
219
				
217
			$id_evenement = $observations_infos['oo_ce_evenement'];
220
			$id_evenement = $observations_infos['oo_ce_evenement'];
218
			$chaine_evenement = $evenements[$id_evenement]['ot_cle'];
221
			$chaine_evenement = $evenements[$id_evenement]['ot_cle'];
219
				
222
				
220
			$infos_evenement = $this->renvoyerInformationStadeAPartirChaineTriple($chaine_evenement);
223
			$infos_evenement = $this->renvoyerInformationStadeAPartirChaineTriple($chaine_evenement);
221
				
224
				
222
			$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observations_infos['oo_date']));
225
			$date_observation_formatee = date($this->config['appli']['format_date'], strtotime($observations_infos['oo_date']));
223
			
226
			
224
			$id_observation = $observations_infos['oo_id_observation'];
227
			$id_observation = $observations_infos['oo_id_observation'];
225
			
228
			
226
			$infos_formatees = array(
229
			$infos_formatees = array(
227
				'id_observation' => $id_observation,
230
				'id_observation' => $id_observation,
228
				'date' => $date_observation_formatee,
231
				'date' => $date_observation_formatee,
229
				'evenenement' => $infos_evenement['nom'],
232
				'evenenement' => $infos_evenement['nom'],
230
				'code_bbch' => $infos_evenement['numero'],
233
				'code_bbch' => $infos_evenement['numero'],
231
				'nom_scientifique' => $nom_espece,
234
				'nom_scientifique' => $nom_espece,
232
				'station' => $observations_infos['os_nom'],
235
				'station' => $observations_infos['os_nom'],
233
				'code_commune' => $observations_infos['os_ce_commune'],
236
				'code_commune' => $observations_infos['os_ce_commune'],
234
				'nom_commune' => '',
237
				'nom_commune' => '',
235
				'latitude' => $observations_infos['os_latitude'],
238
				'latitude' => $observations_infos['os_latitude'],
236
				'longitude' => $observations_infos['os_longitude'],
239
				'longitude' => $observations_infos['os_longitude'],
237
				'altitude' => $observations_infos['os_altitude'],
240
				'altitude' => $observations_infos['os_altitude'],
238
				'milieu' => $observations_infos['os_milieu'],
241
				'milieu' => $milieux[$observations_infos['os_ce_environnement']]['ot_valeur'],
239
				'id_participant' => $observations_infos['os_ce_participant'],
242
				'id_participant' => $observations_infos['os_ce_participant'],
240
				'pseudo_participant' => '',
243
				'pseudo_participant' => '',
241
				'mail_participant' => ''
244
				'mail_participant' => ''
242
			);
245
			);
243
			
246
			
244
			$resultats_formates[] = $infos_formatees;
247
			$resultats_formates[] = $infos_formatees;
245
			
248
			
246
			if(is_numeric($observations_infos['os_ce_commune'])) {
249
			if(is_numeric($observations_infos['os_ce_commune'])) {
247
				$codes_insee_communes[] = $observations_infos['os_ce_commune'];
250
				$codes_insee_communes[] = $observations_infos['os_ce_commune'];
248
			}
251
			}
249
		}
252
		}
250
		
253
		
251
		$correspondance_codes_insee_noms = $gestionnaire_communes->obtenirTableauNomsCommunesParTableauCodesInsee($codes_insee_communes);
254
		$correspondance_codes_insee_noms = $gestionnaire_communes->obtenirTableauNomsCommunesParTableauCodesInsee($codes_insee_communes);
252
		$correspondance_id_utilisateur = $gestionnaire_utilisateurs->getListeUtilisateurFormateeId();
255
		$correspondance_id_utilisateur = $gestionnaire_utilisateurs->getListeUtilisateurFormateeId();
253
		
256
		
254
		foreach($resultats_formates as &$resultat) {
257
		foreach($resultats_formates as &$resultat) {
255
			
258
			
256
			if(isset($correspondance_codes_insee_noms[$resultat['code_commune']]) && trim($correspondance_codes_insee_noms[$resultat['code_commune']]) != '') {								
259
			if(isset($correspondance_codes_insee_noms[$resultat['code_commune']]) && trim($correspondance_codes_insee_noms[$resultat['code_commune']]) != '') {								
257
				$resultat['nom_commune'] = $correspondance_codes_insee_noms[$resultat['code_commune']];
260
				$resultat['nom_commune'] = $correspondance_codes_insee_noms[$resultat['code_commune']];
258
			}
261
			}
259
			
262
			
260
			$resultat['pseudo_participant'] = $correspondance_id_utilisateur[$resultat['id_participant']]['name'];
263
			$resultat['pseudo_participant'] = $correspondance_id_utilisateur[$resultat['id_participant']]['name'];
261
			$resultat['mail_participant'] = $correspondance_id_utilisateur[$resultat['id_participant']]['mail'];
264
			$resultat['mail_participant'] = $correspondance_id_utilisateur[$resultat['id_participant']]['mail'];
262
		}
265
		}
263
		
266
		
264
		return $resultats_formates;
267
		return $resultats_formates;
265
	}
268
	}
266
	
-
 
267
	public function getExportStationJson() {
-
 
268
    	
-
 
269
    	$donnees = $this->getExportStation();
-
 
270
    	$donnees_formatees = $this->formaterPourExportStationJson($donnees);
-
 
271
    	
-
 
272
    	$this->type_mime = 'application/json';
-
 
273
    	
-
 
274
    	return $donnees_formatees;
-
 
275
    }
-
 
276
    
-
 
277
    public function getExportStation() {
-
 
278
    	
-
 
279
    	$requete_selection_stations = 'SELECT * FROM ods_stations '.
-
 
280
    								  ' LEFT JOIN ods_individus '.
-
 
281
    								  ' ON ods_individus.oi_ce_station = ods_stations.os_id_station '.
-
 
282
    								  ' ORDER BY ods_stations.os_id_station, ods_individus.oi_ce_espece';
-
 
283
    								  
-
 
284
 		$res_selection_stations = $this->executerRequete($requete_selection_stations);
-
 
285
 		
-
 
286
 		return $res_selection_stations;
-
 
287
    }
-
 
288
    
-
 
289
    public function formaterPourExportStationJson($tableau_stations_infos) {
-
 
290
    	
-
 
291
    	$gestionnaire_especes = new OdsEspece($this->config);
-
 
292
		$gestionnaire_communes = new OdsCommune($this->config);
-
 
293
		$gestionnaire_utilisateurs = new OdsUtilisateur($this->config);		
-
 
294
				
-
 
295
		$especes = $gestionnaire_especes->getToutesEspeces();
-
 
296
		
-
 
297
		$resultats_formates = array();
-
 
298
		
-
 
299
		foreach($tableau_stations_infos as &$stations_infos) {
-
 
300
			
-
 
301
			if(!isset($resultats_formates[$stations_infos['os_id_station']])) {
-
 
302
				if($stations_infos['os_ce_commune'] == "NULL") {
-
 
303
					$stations_infos['os_ce_commune'] = '';
-
 
304
				}
-
 
305
				
-
 
306
				$resultats_formates[$stations_infos['os_id_station']] = array(
-
 
307
					'station' => $stations_infos['os_nom'],
-
 
308
					'code_commune' => $stations_infos['os_ce_commune'],
-
 
309
					'nom_commune' => '',
-
 
310
					'latitude' => $stations_infos['os_latitude'],
-
 
311
					'longitude' => $stations_infos['os_longitude'],
-
 
312
					'altitude' => $stations_infos['os_altitude'],
-
 
313
					'id_participant' => $stations_infos['os_ce_participant'],
-
 
314
					'pseudo_participant' => '',
-
 
315
					'mail_participant' => '',
-
 
316
					'especes' => array()
-
 
317
				);
-
 
318
				
-
 
319
				if(is_numeric($stations_infos['os_ce_commune'])) {
-
 
320
					$codes_insee_communes[] = $stations_infos['os_ce_commune'];
-
 
321
				}
-
 
322
			}
-
 
323
			
-
 
324
			$infos_espece = $especes[$stations_infos['oi_ce_espece']];
-
 
325
			
-
 
326
			if($infos_espece != null) {
-
 
327
				
-
 
328
				if($infos_espece['type'] != "") {
-
 
329
					$infos_espece['type'] = $this->obtenirValeurTripleParId($infos_espece['type']);
-
 
330
				}
-
 
331
				
-
 
332
				$resultats_formates[$stations_infos['os_id_station']]['especes'][$infos_espece['id_espece']] = $infos_espece;
-
 
333
			}
-
 
334
		}
-
 
335
		
-
 
336
		$correspondance_codes_insee_noms = $gestionnaire_communes->obtenirTableauNomsCommunesParTableauCodesInsee($codes_insee_communes);
-
 
337
		$correspondance_id_utilisateur = $gestionnaire_utilisateurs->getListeUtilisateurAvecInfosComplementairesFormateeId();
-
 
338
		
-
 
339
		foreach($resultats_formates as &$resultat) {
-
 
340
			
-
 
341
			if(isset($correspondance_codes_insee_noms[$resultat['code_commune']]) && trim($correspondance_codes_insee_noms[$resultat['code_commune']]) != '') {								
-
 
342
				$resultat['nom_commune'] = $correspondance_codes_insee_noms[$resultat['code_commune']];
-
 
343
			}
-
 
344
			
-
 
345
			$resultat['pseudo_participant'] = $correspondance_id_utilisateur[$resultat['id_participant']]['name'];
-
 
346
			$resultat['mail_participant'] = $correspondance_id_utilisateur[$resultat['id_participant']]['mail'];
-
 
347
			
-
 
348
			$types = array("Particulier" ,"Établissement scolaire", "Association" ,"Professionnel", "Autre","Inconnu");
-
 
349
			
-
 
350
			if(isset($correspondance_id_utilisateur[$resultat['id_participant']]['profile_type'])) {
-
 
351
				$resultat['type_participant'] = $correspondance_id_utilisateur[$resultat['id_participant']]['profile_type'];
-
 
352
			} else {
-
 
353
				$resultat['type_participant'] = "Inconnu";
-
 
354
			}
-
 
355
		}
-
 
356
		
-
 
357
		return $resultats_formates;
-
 
358
    }
-
 
359
	
269
	
360
	public function convertirTableauAssocVersCSV($tableau) {
270
	public function convertirTableauAssocVersCSV($tableau) {
361
		
271
		
362
		$csv = '';
272
		$csv = '';
363
		$colonnes = array_keys($tableau[0]);
273
		$colonnes = array_keys($tableau[0]);
364
		$csv .= implode(';',$colonnes).";\n";
274
		$csv .= implode(';',$colonnes).";\n";
365
		
275
		
366
		foreach($tableau as $elements) {
276
		foreach($tableau as $elements) {
367
			$csv .= implode(';',$elements).";\n";
277
			$csv .= implode(';',$elements).";\n";
368
		}
278
		}
369
		
279
		
370
		return $csv;
280
		return $csv;
371
	}
281
	}
372
	
282
	
373
	public function envoyerFichier($contenu) {
283
	public function envoyerFichier($contenu) {
374
		
284
		
375
		$nom_fichier = "observations_export.csv";
285
		$nom_fichier = "observations_export.csv";
376
		$chemin_fichier = $this->config['appli']['chemin_fichiers_temp'].'/'.$nom_fichier;
286
		$chemin_fichier = $this->config['appli']['chemin_fichiers_temp'].'/'.$nom_fichier;
377
		
287
		
378
		file_put_contents($chemin_fichier, $contenu);	
288
		file_put_contents($chemin_fichier, $contenu);	
379
			
289
			
380
		$contenu = file_get_contents($chemin_fichier);
290
		$contenu = file_get_contents($chemin_fichier);
381
		$taille_fichier = filesize($chemin_fichier);
291
		$taille_fichier = filesize($chemin_fichier);
382
		
292
		
383
		unlink($chemin_fichier);
293
		unlink($chemin_fichier);
384
		
294
		
385
		ini_set('zlib.output_compression','Off');
295
		ini_set('zlib.output_compression','Off');
386
		
296
		
387
		header('Pragma: public');
297
		header('Pragma: public');
388
		header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
298
		header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
389
		header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
299
		header('Cache-Control: must-revalidate, pre-check=0, post-check=0, max-age=0');
390
		
300
		
391
		header('Content-Tranfer-Encoding: none');
301
		header('Content-Tranfer-Encoding: none');
392
		
302
		
393
		header('Content-Type: application/octetstream; name="'.$nom_fichier.'"');
303
		header('Content-Type: application/octetstream; name="'.$nom_fichier.'"');
394
		header('Content-Disposition: attachement; filename="'.$nom_fichier.'"');
304
		header('Content-Disposition: attachement; filename="'.$nom_fichier.'"');
395
		
305
		
396
		header('Content-Length: '.$taille_fichier);
306
		header('Content-Length: '.$taille_fichier);
397
		
307
		
398
		echo $contenu;
308
		echo $contenu;
399
		exit();
309
		exit();
400
	}
310
	}
401
	
311
	
402
	private function formaterInformationPourEnvoi($tableauinfos) {
312
	private function formaterInformationPourEnvoi($tableauinfos) {
403
 
313
 
404
	}
314
	}
405
}
315
}
406
?>
316
?>