Subversion Repositories Sites.obs-saisons.fr

Rev

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

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