Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1662 Rev 1671
1
<?php
1
<?php
2
/**
2
/**
3
* Service fournissant des informations concernant le CEL au format RSS1, RSS2 ou ATOM.
3
* Service fournissant des informations concernant le CEL au format RSS1, RSS2 ou ATOM.
4
* Encodage en entrée : utf8
4
* Encodage en entrée : utf8
5
* Encodage en sortie : utf8
5
* Encodage en sortie : utf8
6
* Format du service :
6
* Format du service :
7
* /CelWidgetExport/format
7
* /CelWidgetExport/format
8
* /CelWidgetExport/csv
8
* /CelWidgetExport/csv
9
*
9
*
10
* Les paramêtres :
10
* Les paramêtres :
11
*  - "start" indique le numéro du premier item à afficher
11
*  - "start" indique le numéro du premier item à afficher
12
*  - "limit" nombre d'items à afficher
12
*  - "limit" nombre d'items à afficher
13
*
13
*
14
* @author Aurélien Peronnet <aurelien@tela-botanica.org>
14
* @author Aurélien Peronnet <aurelien@tela-botanica.org>
15
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
15
* @license GPL v3 <http://www.gnu.org/licenses/gpl.txt>
16
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
16
* @license CECILL v2 <http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt>
17
* @version $Id$
17
* @version $Id$
18
* @copyright 2012
18
* @copyright 2012
19
*/
19
*/
20
 
20
 
21
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(realpath(__FILE__))) . '/lib');
21
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(realpath(__FILE__))) . '/lib');
22
// la sortie est binaire (xls), mais OLE n'est pas compatible E_ALL en PHP-5.4
22
// la sortie est binaire (xls), mais OLE n'est pas compatible E_ALL en PHP-5.4
23
//error_reporting(error_reporting() ^ E_STRICT);
23
//error_reporting(error_reporting() ^ E_STRICT);
24
require_once("lib/OLE.php");
24
require_once("lib/OLE.php");
25
require_once("lib/Spreadsheet/Excel/Writer.php");
25
require_once("lib/Spreadsheet/Excel/Writer.php");
26
 
26
 
27
class CelWidgetExport extends Cel {
27
class CelWidgetExport extends Cel {
28
	
28
	
29
	private $nom_fichier_export = 'cel_export';
29
	private $nom_fichier_export = 'cel_export';
-
 
30
	// certains paramètres apparaissent plusieurs fois car ils ont des alias
-
 
31
	// dans certains widgets
30
	private $parametres_autorises = array(
32
	private $parametres_autorises = array(
31
		'id_utilisateur' => 'ce_utilisateur',
33
		'id_utilisateur' => 'ce_utilisateur',
32
		'utilisateur' => 'courriel_utilisateur',
34
		'utilisateur' => 'courriel_utilisateur',
33
		'commune' => 'zone_geo',
35
		'commune' => 'zone_geo',
-
 
36
		'zone_geo' => 'zone_geo',
34
		'dept' => 'departement',
37
		'dept' => 'departement',
35
		'departement' => 'departement',
38
		'departement' => 'departement',
36
		'lieudit' => 'lieudit',
39
		'lieudit' => 'lieudit',
37
		'station' => 'station',
40
		'station' => 'station',
38
		'projet' => 'mots_cles',
41
		'projet' => 'mots_cles',
39
		'num_taxon' => 'nt',
42
		'num_taxon' => 'nt',
40
		'date_debut' => 'date_debut',
43
		'date_debut' => 'date_debut',
41
		'date_fin' => 'date_fin',
44
		'date_fin' => 'date_fin',
42
		'taxon' => 'taxon',
45
		'taxon' => 'taxon',
43
		'annee' => 'annee',
46
		'annee' => 'annee',
44
		'mois' => 'mois',
47
		'mois' => 'mois',
45
		'jour' => 'jour',
48
		'jour' => 'jour',
46
		'recherche' => 'recherche',
49
		'recherche' => 'recherche',
47
		'id_mots_cles' => 'id_mots_cles',
50
		'id_mots_cles' => 'id_mots_cles',
48
		'mots_cles' => 'mots_cles',
51
		'mots_cles' => 'mots_cles',
49
		'debut' => 'debut',
52
		'debut' => 'debut',
50
		'limite' => 'limite',
53
		'limite' => 'limite',
51
		'format' => 'format',
54
		'format' => 'format',
52
		'colonnes' => 'colonnes',
55
		'colonnes' => 'colonnes',
53
		'transmission' => 'transmission'
56
		'transmission' => 'transmission'
54
	);
57
	);
55
	
58
	
56
	private $limite_decoupage_defaut = 9000; 
59
	private $limite_decoupage_defaut = 9000; 
57
	
60
	
58
	private $format = 'csv';
61
	private $format = 'csv';
59
	
62
	
60
	public $id_utilisateur = null;
63
	public $id_utilisateur = null;
61
	
64
	
62
	public function getRessource() {
65
	public function getRessource() {
63
		return $this->getElement(array());
66
		return $this->getElement(array());
64
	}
67
	}
65
		
68
		
66
	/**
69
	/**
67
	 * Méthode appelée avec une requête de type GET.
70
	 * Méthode appelée avec une requête de type GET.
68
	 */
71
	 */
69
	public function getElement($params = array()) {		
72
	public function getElement($params = array()) {		
70
		if(count($params) > 0) {
73
		if(count($params) > 0) {
71
			switch(strtolower($params[0])) {
74
			switch(strtolower($params[0])) {
72
				case 'calcul':
75
				case 'calcul':
73
					$this->getCalcul();
76
					$this->getCalcul();
74
				break;
77
				break;
75
				
78
				
76
				case 'export':
79
				case 'export':
77
					$this->getExport();
80
					$this->getExport();
78
				break;
81
				break;
79
				
82
				
80
				default:
83
				default:
81
					$this->getExport();
84
					$this->getExport();
82
			}
85
			}
83
		} else {
86
		} else {
84
			$this->getExport();
87
			$this->getExport();
85
		}
88
		}
86
	}
89
	}
87
	
90
	
88
	private function getCalcul() {
91
	private function getCalcul() {
89
		$criteres = $this->traiterParametresAutorises($_GET);
92
		$criteres = $this->traiterParametresAutorises($_GET);
90
 
93
 
91
		$criteres['transmission'] = 1;
94
		$criteres['transmission'] = 1;
92
		if($this->doitEtPeutExporterObsPrivees($criteres)) {
95
		if($this->doitEtPeutExporterObsPrivees($criteres)) {
93
			unset($criteres['transmission']);
96
			unset($criteres['transmission']);
94
			$this->id_utilisateur = $criteres['id_utilisateur'];
97
			$this->id_utilisateur = $criteres['id_utilisateur'];
95
		}
98
		}
96
		$chercheur_observations = new RechercheObservation($this->config);
99
		$chercheur_observations = new RechercheObservation($this->config);
97
		
100
		
98
		$numero_page = isset($criteres['debut']) ? $criteres['debut'] : 0;
101
		$numero_page = isset($criteres['debut']) ? $criteres['debut'] : 0;
99
		$limite = isset($criteres['limite']) ? $criteres['limite'] : 0;
102
		$limite = isset($criteres['limite']) ? $criteres['limite'] : 0;
100
		$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
103
		$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
101
		
104
		
102
		unset($criteres['limite']);
105
		unset($criteres['limite']);
103
		unset($criteres['debut']);
106
		unset($criteres['debut']);
104
		unset($criteres['format']);
107
		unset($criteres['format']);
105
		unset($criteres['colonnes']);
108
		unset($criteres['colonnes']);
106
		
109
		
107
		$nb_observations = $chercheur_observations->compterObservations(null, $criteres);
110
		$nb_observations = $chercheur_observations->compterObservations(null, $criteres);
108
		$limite_decoupage = $this->calculerNbLignesMaxParFichier();
111
		$limite_decoupage = $this->calculerNbLignesMaxParFichier();
109
		
112
		
110
		$url_telechargements = array();
113
		$url_telechargements = array();
111
		$intervalle = 0;
114
		$intervalle = 0;
112
		
115
		
113
		$params_url = $criteres;
116
		$params_url = $criteres;
114
		unset($params_url['transmission']);
117
		unset($params_url['transmission']);
115
		do {
118
		do {
116
			$base_url = $this->config['settings']['baseURLAbsolu'].'CelWidgetExport/export';
119
			$base_url = $this->config['settings']['baseURLAbsolu'].'CelWidgetExport/export';
117
			$params_url['debut'] = $intervalle;
120
			$params_url['debut'] = $intervalle;
118
			$params_url['limite'] = $limite_decoupage;
121
			$params_url['limite'] = $limite_decoupage;
119
			$url_telechargement_fichier = $base_url;
122
			$url_telechargement_fichier = $base_url;
120
			$url_telechargements[] = $base_url.'?'.http_build_query($params_url).'&format='.$this->format.'&colonnes='.$colonnes;
123
			$url_telechargements[] = $base_url.'?'.http_build_query($params_url).'&format='.$this->format.'&colonnes='.$colonnes;
121
			$intervalle += $limite_decoupage;
124
			$intervalle += $limite_decoupage;
122
			$nb_observations -= $limite_decoupage;
125
			$nb_observations -= $limite_decoupage;
123
		} while($nb_observations >= $limite_decoupage);
126
		} while($nb_observations >= $limite_decoupage);
124
		
127
		
125
		$this->envoyerJson($url_telechargements);
128
		$this->envoyerJson($url_telechargements);
126
	}
129
	}
127
	
130
	
128
	private function calculerNbLignesMaxParFichier() {
131
	private function calculerNbLignesMaxParFichier() {
129
		$limite = $this->limite_decoupage_defaut;
132
		$limite = $this->limite_decoupage_defaut;
130
		switch($this->format) {
133
		switch($this->format) {
131
			case 'csv':
134
			case 'csv':
132
				$limite = 20000;
135
				$limite = 20000;
133
				break;
136
				break;
134
			case 'xls':
137
			case 'xls':
135
				$limite = 8000;
138
				$limite = 8000;
136
				break;
139
				break;
137
			case 'pdf':
140
			case 'pdf':
138
				$limite = 300;
141
				$limite = 300;
139
				break;
142
				break;
140
		}
143
		}
141
		return $limite;
144
		return $limite;
142
	}
145
	}
143
	
146
	
144
	private function getExport() {
147
	private function getExport() {
145
		$criteres = $this->traiterParametresAutorises($_GET);
148
		$criteres = $this->traiterParametresAutorises($_GET);
146
		$criteres['transmission'] = 1;
149
		$criteres['transmission'] = 1;
147
		if($this->doitEtPeutExporterObsPrivees($criteres)) {
150
		if($this->doitEtPeutExporterObsPrivees($criteres)) {
148
			unset($criteres['transmission']);
151
			unset($criteres['transmission']);
149
		}
152
		}
150
		$chercheur_observations = new RechercheObservation($this->config);
153
		$chercheur_observations = new RechercheObservation($this->config);
151
		
154
		
152
		$debut = isset($criteres['debut']) ? $criteres['debut'] : 0;
155
		$debut = isset($criteres['debut']) ? $criteres['debut'] : 0;
153
		$limite = isset($criteres['limite']) ? $criteres['limite'] : 0;
156
		$limite = isset($criteres['limite']) ? $criteres['limite'] : 0;
154
		$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
157
		$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
155
		
158
		
156
		unset($criteres['limite']);
159
		unset($criteres['limite']);
157
		unset($criteres['debut']);
160
		unset($criteres['debut']);
158
		unset($criteres['format']);
161
		unset($criteres['format']);
159
		unset($criteres['colonnes']);
162
		unset($criteres['colonnes']);
160
		
163
		
161
		$observations = $chercheur_observations->rechercherObservations(null, $criteres, $debut, $limite)->get();
164
		$observations = $chercheur_observations->rechercherObservations(null, $criteres, $debut, $limite)->get();
162
		$ids = array();
165
		$ids = array();
163
		foreach($observations as &$obs) {
166
		foreach($observations as &$obs) {
164
			$ids[] = $obs['id_observation'];
167
			$ids[] = $obs['id_observation'];
165
		}
168
		}
166
 
169
 
167
		if($this->format != 'pdf') {
170
		if($this->format != 'pdf') {
168
			$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
171
			$gestion_champs_etendus = new GestionChampsEtendus($this->config, 'obs');
169
    		$champs_supp_par_obs = $gestion_champs_etendus->consulterParLots($ids);
172
    		$champs_supp_par_obs = $gestion_champs_etendus->consulterParLots($ids);
170
    		$colonnes_champs_supp_par_obs = $gestion_champs_etendus->consulterClesParLots($ids);
173
    		$colonnes_champs_supp_par_obs = $gestion_champs_etendus->consulterClesParLots($ids);
171
		}
174
		}
172
 
175
 
173
    	// TODO: tous les champs étendus et les paramètres supplémentaires devraient être passés en un seul
176
    	// TODO: tous les champs étendus et les paramètres supplémentaires devraient être passés en un seul
174
    	// tableau (et chaque formateur csv, xls etc... pourrait également être dans une classe à part)
177
    	// tableau (et chaque formateur csv, xls etc... pourrait également être dans une classe à part)
175
		switch($this->format) {
178
		switch($this->format) {
176
		case 'csv':
179
		case 'csv':
177
			$csv = $this->convertirEnCsv($observations, $colonnes, $colonnes_champs_supp_par_obs, $champs_supp_par_obs);
180
			$csv = $this->convertirEnCsv($observations, $colonnes, $colonnes_champs_supp_par_obs, $champs_supp_par_obs);
178
			$this->envoyerCsv($csv);
181
			$this->envoyerCsv($csv);
179
			break;
182
			break;
180
		case 'xls':
183
		case 'xls':
181
			$xls = $this->convertirEnXls($observations, $colonnes, $colonnes_champs_supp_par_obs, $champs_supp_par_obs);
184
			$xls = $this->convertirEnXls($observations, $colonnes, $colonnes_champs_supp_par_obs, $champs_supp_par_obs);
182
			$this->envoyerXls($xls);
185
			$this->envoyerXls($xls);
183
			break;
186
			break;
184
		case 'pdf':
187
		case 'pdf':
185
			$pdf = $this->convertirEnPdf($observations);
188
			$pdf = $this->convertirEnPdf($observations);
186
			$this->envoyerPdf($pdf);
189
			$this->envoyerPdf($pdf);
187
			break;
190
			break;
188
		default:
191
		default:
189
		}
192
		}
190
	}
193
	}
191
	
194
	
192
	protected function traiterParametresAutorises(Array $parametres) {
195
	protected function traiterParametresAutorises(Array $parametres) {
193
		$parametres_traites = array();
196
		$parametres_traites = array();
194
		$this->format = (isset($parametres['format']) && $parametres['format'] != '') ? $parametres['format'] : $this->format;
197
		$this->format = (isset($parametres['format']) && $parametres['format'] != '') ? $parametres['format'] : $this->format;
195
		foreach($parametres as $cle => $valeur) {
198
		foreach($parametres as $cle => $valeur) {
196
			if(trim($valeur) != '' && isset($this->parametres_autorises[$cle])) {
199
			if(trim($valeur) != '' && isset($this->parametres_autorises[$cle])) {
197
				$parametres_traites[$this->parametres_autorises[$cle]] = $valeur;
200
				$parametres_traites[$this->parametres_autorises[$cle]] = $valeur;
198
			}
201
			}
199
		}
202
		}
200
		return $parametres_traites;
203
		return $parametres_traites;
201
	}
204
	}
202
	
205
	
203
	private function envoyerCsv($csv) {
206
	private function envoyerCsv($csv) {
204
		header('Content-Type: text/csv; charset=UTF-8');
207
		header('Content-Type: text/csv; charset=UTF-8');
205
		header('Content-Disposition: attachment;filename='.$this->nom_fichier_export.'.csv');
208
		header('Content-Disposition: attachment;filename='.$this->nom_fichier_export.'.csv');
206
		echo $csv;
209
		echo $csv;
207
		exit;
210
		exit;
208
	}
211
	}
209
	
212
	
210
	private function envoyerXls($workbook) {
213
	private function envoyerXls($workbook) {
211
		$workbook->close();
214
		$workbook->close();
212
		exit;
215
		exit;
213
	}
216
	}
214
	
217
	
215
	private function convertirEnCsv(&$data, &$colonnes, &$colonnes_supplementaires, &$champs_supplementaires = array())
218
	private function convertirEnCsv(&$data, &$colonnes, &$colonnes_supplementaires, &$champs_supplementaires = array())
216
	{
219
	{
217
		$chemin_temp = "php://temp";
220
		$chemin_temp = "php://temp";
218
		$outstream = fopen($chemin_temp, 'r+');
221
		$outstream = fopen($chemin_temp, 'r+');
219
		$intitule_champs = array();
222
		$intitule_champs = array();
220
		$nb_colonnes_supp = count($colonnes_supplementaires);
223
		$nb_colonnes_supp = count($colonnes_supplementaires);
221
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
224
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
222
		foreach($data as &$ligne) {
225
		foreach($data as &$ligne) {
223
			$id_obs = $ligne['id_observation'];
226
			$id_obs = $ligne['id_observation'];
224
			$ligne = $this->filtrerDonneesSensibles($ligne);
227
			$ligne = $this->filtrerDonneesSensibles($ligne);
225
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
228
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
226
			$ligne_supp = $nb_colonnes_supp > 0 ? array_fill(0, $nb_colonnes_supp, '') : array();
229
			$ligne_supp = $nb_colonnes_supp > 0 ? array_fill(0, $nb_colonnes_supp, '') : array();
227
			if(isset($champs_supplementaires[$id_obs])) {
230
			if(isset($champs_supplementaires[$id_obs])) {
228
				$ligne_supp = $this->traiterLigneEtendue($colonnes_supplementaires, $champs_supplementaires[$id_obs]);
231
				$ligne_supp = $this->traiterLigneEtendue($colonnes_supplementaires, $champs_supplementaires[$id_obs]);
229
			}
232
			}
230
			$ligne += $ligne_supp;
233
			$ligne += $ligne_supp;
231
			if(empty($intitule_champs)) {
234
			if(empty($intitule_champs)) {
232
				$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
235
				$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
233
				foreach($colonnes_supplementaires as $colonne_sup) {
236
				foreach($colonnes_supplementaires as $colonne_sup) {
234
					$intitule_champs[] = $colonne_sup;
237
					$intitule_champs[] = $colonne_sup;
235
				}
238
				}
236
				fputcsv($outstream, $intitule_champs, ',', '"');			
239
				fputcsv($outstream, $intitule_champs, ',', '"');			
237
			}
240
			}
238
			fputcsv($outstream, $ligne, ',', '"');
241
			fputcsv($outstream, $ligne, ',', '"');
239
		}
242
		}
240
		rewind($outstream);
243
		rewind($outstream);
241
		$csv = stream_get_contents($outstream);
244
		$csv = stream_get_contents($outstream);
242
		fclose($outstream);
245
		fclose($outstream);
243
		return $csv;
246
		return $csv;
244
	}
247
	}
245
	
248
	
246
	private function convertirEnXls(&$data, &$colonnes,  &$colonnes_supplementaires, &$champs_supplementaires = array()) {		
249
	private function convertirEnXls(&$data, &$colonnes,  &$colonnes_supplementaires, &$champs_supplementaires = array()) {		
247
		$this->extendSpreadsheetProductor = new SpreadsheetProductor();
250
		$this->extendSpreadsheetProductor = new SpreadsheetProductor();
248
		$this->extendSpreadsheetProductor->initSpreadsheet();
251
		$this->extendSpreadsheetProductor->initSpreadsheet();
249
		
252
		
250
		$nb_colonnes_supp = count($colonnes_supplementaires);
253
		$nb_colonnes_supp = count($colonnes_supplementaires);
251
		
254
		
252
		$workbook = new Spreadsheet_Excel_Writer();
255
		$workbook = new Spreadsheet_Excel_Writer();
253
		$worksheet = $workbook->addWorksheet('Liste');
256
		$worksheet = $workbook->addWorksheet('Liste');
254
		$workbook->setTempDir($this->config['cel']['chemin_stockage_temp']);
257
		$workbook->setTempDir($this->config['cel']['chemin_stockage_temp']);
255
		$workbook->setVersion(8);
258
		$workbook->setVersion(8);
256
 
259
 
257
		$worksheet->setInputEncoding('utf-8');
260
		$worksheet->setInputEncoding('utf-8');
258
		$workbook->send($this->nom_fichier_export.'.xls');
261
		$workbook->send($this->nom_fichier_export.'.xls');
259
		
262
		
260
		$nb_lignes = 1;
263
		$nb_lignes = 1;
261
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
264
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
262
		foreach($data as &$ligne) {
265
		foreach($data as &$ligne) {
263
			$id_obs = $ligne['id_observation'];
266
			$id_obs = $ligne['id_observation'];
264
			$ligne = $this->filtrerDonneesSensibles($ligne);
267
			$ligne = $this->filtrerDonneesSensibles($ligne);
265
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
268
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
266
			if(empty($intitule_champs)) {
269
			if(empty($intitule_champs)) {
267
				$indice = 0;
270
				$indice = 0;
268
				$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
271
				$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
269
				foreach($colonnes_supplementaires as $colonne_sup) {
272
				foreach($colonnes_supplementaires as $colonne_sup) {
270
					$intitule_champs[] = $colonne_sup;
273
					$intitule_champs[] = $colonne_sup;
271
				}
274
				}
272
				foreach ($intitule_champs as &$intitule) {	
275
				foreach ($intitule_champs as &$intitule) {	
273
					$colonne = $intitule_champs[$indice];
276
					$colonne = $intitule_champs[$indice];
274
					$worksheet->write(0,$indice,$colonne);
277
					$worksheet->write(0,$indice,$colonne);
275
					$indice++;
278
					$indice++;
276
				}
279
				}
277
			}
280
			}
278
			$ligne_supp = $nb_colonnes_supp > 0 ? array_fill(0, $nb_colonnes_supp, '') : array();
281
			$ligne_supp = $nb_colonnes_supp > 0 ? array_fill(0, $nb_colonnes_supp, '') : array();
279
			if(isset($champs_supplementaires[$id_obs])) {
282
			if(isset($champs_supplementaires[$id_obs])) {
280
				$ligne_supp = $this->traiterLigneEtendue($colonnes_supplementaires, $champs_supplementaires[$id_obs]);
283
				$ligne_supp = $this->traiterLigneEtendue($colonnes_supplementaires, $champs_supplementaires[$id_obs]);
281
			}
284
			}
282
			$ligne += $ligne_supp;
285
			$ligne += $ligne_supp;
283
			$indice = 0;
286
			$indice = 0;
284
			foreach($ligne as &$champ) {
287
			foreach($ligne as &$champ) {
285
				$worksheet->write($nb_lignes,$indice,$champ);
288
				$worksheet->write($nb_lignes,$indice,$champ);
286
				$indice++;
289
				$indice++;
287
			}
290
			}
288
			$nb_lignes++;
291
			$nb_lignes++;
289
		}
292
		}
290
		return $workbook;
293
		return $workbook;
291
	}
294
	}
292
	
295
	
293
	private function convertirEnPdf(&$observations) {
296
	private function convertirEnPdf(&$observations) {
294
		if(count($observations) > 300) die('trop de données');
297
		if(count($observations) > 300) die('trop de données');
295
		//require_once('GenerateurPDF.php');
298
		//require_once('GenerateurPDF.php');
296
		$pdf = new GenerateurPDF();
299
		$pdf = new GenerateurPDF();
297
		$pdf->export($observations);
300
		$pdf->export($observations);
298
		return $pdf;
301
		return $pdf;
299
	}
302
	}
300
	
303
	
301
	private function envoyerPdf(&$pdf) {
304
	private function envoyerPdf(&$pdf) {
302
		$pdf->pdf->Output('etiquettes.pdf', 'I');
305
		$pdf->pdf->Output('etiquettes.pdf', 'I');
303
		exit;;
306
		exit;;
304
	}
307
	}
305
	
308
	
306
	private function traiterLigneEtendue(&$colonnes_etendues, &$ligne_champs_etendus) {
309
	private function traiterLigneEtendue(&$colonnes_etendues, &$ligne_champs_etendus) {
307
		$ligne_etendue_aplatie = $this->aplatirChampsEtendus($ligne_champs_etendus);
310
		$ligne_etendue_aplatie = $this->aplatirChampsEtendus($ligne_champs_etendus);
308
		$ligne_etendue_fmt = array();
311
		$ligne_etendue_fmt = array();
309
		foreach($colonnes_etendues as $colonne) {
312
		foreach($colonnes_etendues as $colonne) {
310
			if(!isset($ligne_etendue_aplatie[$colonne])) {
313
			if(!isset($ligne_etendue_aplatie[$colonne])) {
311
				$ligne_etendue_fmt[$colonne] = ''; 
314
				$ligne_etendue_fmt[$colonne] = ''; 
312
			} else {
315
			} else {
313
				$ligne_etendue_fmt[$colonne] = $ligne_etendue_aplatie[$colonne];
316
				$ligne_etendue_fmt[$colonne] = $ligne_etendue_aplatie[$colonne];
314
			}
317
			}
315
		}
318
		}
316
		return $ligne_etendue_fmt;
319
		return $ligne_etendue_fmt;
317
	}
320
	}
318
	
321
	
319
	private function aplatirChampsEtendus(&$ligne_champs_etendus) {
322
	private function aplatirChampsEtendus(&$ligne_champs_etendus) {
320
		$champs_etendus_fmt = array();
323
		$champs_etendus_fmt = array();
321
		foreach($ligne_champs_etendus as $champ) {
324
		foreach($ligne_champs_etendus as $champ) {
322
			$champs_etendus_fmt[$champ->cle] = $champ->valeur;
325
			$champs_etendus_fmt[$champ->cle] = $champ->valeur;
323
		}
326
		}
324
		return $champs_etendus_fmt;
327
		return $champs_etendus_fmt;
325
	}
328
	}
326
	
329
	
327
	private function filtrerDonneesSensibles($ligne) {
330
	private function filtrerDonneesSensibles($ligne) {
328
		if(stripos($ligne['mots_cles_texte'], 'sensible') !== false) {
331
		if(stripos($ligne['mots_cles_texte'], 'sensible') !== false) {
329
			$ligne['latitude'] = '';
332
			$ligne['latitude'] = '';
330
			$ligne['longitude'] = '';
333
			$ligne['longitude'] = '';
331
		}
334
		}
332
		return $ligne;
335
		return $ligne;
333
	}
336
	}
334
	
337
	
335
	private function nettoyerChaine($chaine) {
338
	private function nettoyerChaine($chaine) {
336
		$chaine = str_replace("\n",' ',$chaine);
339
		$chaine = str_replace("\n",' ',$chaine);
337
		$chaine = str_replace("\t",'',$chaine);
340
		$chaine = str_replace("\t",'',$chaine);
338
		return $chaine;
341
		return $chaine;
339
	}
342
	}
340
	
343
	
341
	private function doitEtPeutExporterObsPrivees($criteres) {
344
	private function doitEtPeutExporterObsPrivees($criteres) {
342
		return isset($criteres['ce_utilisateur']) && 
345
		return isset($criteres['ce_utilisateur']) && 
343
					$this->peutExporterObsPrivees($criteres['ce_utilisateur']);
346
					$this->peutExporterObsPrivees($criteres['ce_utilisateur']);
344
	}
347
	}
345
	
348
	
346
	private function peutExporterObsPrivees($id_utilisateur) {
349
	private function peutExporterObsPrivees($id_utilisateur) {
347
		$gestion_utilisateur = new User($this->config);
350
		$gestion_utilisateur = new User($this->config);
348
		$utilisateur = $gestion_utilisateur->obtenirIdentiteConnectee();
351
		$utilisateur = $gestion_utilisateur->obtenirIdentiteConnectee();
349
		return $utilisateur['connecte'] && 
352
		return $utilisateur['connecte'] && 
350
				$utilisateur['id_utilisateur'] != '' &&
353
				$utilisateur['id_utilisateur'] != '' &&
351
				$id_utilisateur == $utilisateur['id_utilisateur'];
354
				$id_utilisateur == $utilisateur['id_utilisateur'];
352
	}
355
	}
353
}
356
}
354
?>
357
?>