Subversion Repositories Sites.obs-saisons.fr

Rev

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

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