Subversion Repositories eFlore/Applications.cel

Rev

Rev 1709 | Rev 1714 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1709 Rev 1711
Line 69... Line 69...
69
		
69
		
70
	/**
70
	/**
71
	 * Méthode appelée avec une requête de type GET.
71
	 * Méthode appelée avec une requête de type GET.
72
	 */
72
	 */
73
	public function getElement($params = array()) {
-
 
74
		if(!$params) exit; // ne pas faire de super-requête en cas d'absence de paramètres
73
	public function getElement($params = array()) {
75
		switch(strtolower($params[0])) {
74
		switch(@strtolower($params[0])) {
76
		case 'calcul':
75
		case 'calcul':
77
			$this->getCalcul();
76
			$this->getCalcul();
Line 78... Line 77...
78
			break;
77
			break;
79
				
78
				
80
		case 'export':
79
		case 'export':
81
			$this->getExport();
-
 
82
			break;
80
			$this->getExport();
83
				
81
			break;
84
		default:
82
		default:
85
			$this->getExport();
83
			$this->getExport();
Line 142... Line 140...
142
		return $limite;
140
		return $limite;
143
	}
141
	}
Line 144... Line 142...
144
	
142
	
145
	private function getExport() {
143
	private function getExport() {
-
 
144
		$criteres = $this->traiterParametresAutorises($_GET);
-
 
145
		// ne pas faire de super-requête en cas d'absence de paramètres
-
 
146
		// par exemple "format", au minimum, devrait être défini
-
 
147
		if(!$criteres) die('pas de paramètre reçu');
146
		$criteres = $this->traiterParametresAutorises($_GET);
148
 
147
		$criteres['transmission'] = 1;
149
		$criteres['transmission'] = 1;
148
		if($this->doitEtPeutExporterObsPrivees($criteres)) {
150
		if($this->doitEtPeutExporterObsPrivees($criteres)) {
149
			unset($criteres['transmission']);
151
			unset($criteres['transmission']);
150
		}
152
		}
Line 151... Line 153...
151
		$chercheur_observations = new RechercheObservation($this->config);
153
		$chercheur_observations = new RechercheObservation($this->config);
152
		
154
		
153
		$debut = isset($criteres['debut']) ? intval($criteres['debut']) : 0;
155
		$debut = isset($criteres['debut']) ? intval($criteres['debut']) : 0;
Line 154... Line 156...
154
		$limite = isset($criteres['limite']) ? intval($criteres['limite']) : 0;
156
		$limite = isset($criteres['limite']) ? intval($criteres['limite']) : 0;
155
		$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
157
		$groupes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
Line 156... Line 158...
156
 
158
 
Line 184... Line 186...
184
 
186
 
185
		// 2) nom communs
187
		// 2) nom communs
186
		// $cache pourrait être utilisé par les fonctions de colonnes
188
		// $cache pourrait être utilisé par les fonctions de colonnes
187
		// * Pour "nom commun", "preload" retourne NULL, car c'est le cache statique de FormateurGroupeColonne
189
		// * Pour "nom commun", "preload" retourne NULL, car c'est le cache statique de FormateurGroupeColonne
188
		// qu'il initialise et utilise en interne sans qu'un passage par paramètre ne soit nécessaire
190
		// qu'il initialise et utilise en interne sans qu'un passage par paramètre ne soit nécessaire
189
		$cache = FormateurGroupeColonne::preload(FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes),
191
		$colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($groupes);
190
												 $this,
192
		if(!$colonnes) die('ne peut identifier les groupes de champs demandés');
Line 191... Line 193...
191
												 $ids);
193
		$cache = FormateurGroupeColonne::preload($colonnes, $this, $ids);
192
 
194
 
193
    	// TODO: tous les champs étendus et les paramètres supplémentaires devraient être passés en un seul
195
    	// TODO: tous les champs étendus et les paramètres supplémentaires devraient être passés en un seul
194
    	// tableau (et chaque formateur csv, xls etc... pourrait également être dans une classe à part)
196
    	// tableau (et chaque formateur csv, xls etc... pourrait également être dans une classe à part)
Line 207... Line 209...
207
	
209
	
208
	protected function traiterParametresAutorises(Array $parametres) {
210
	protected function traiterParametresAutorises(Array $parametres) {
209
		$parametres_traites = array();
211
		$parametres_traites = array();
210
		$this->format = (isset($parametres['format']) && $parametres['format'] != '') ? $parametres['format'] : $this->format;
212
		$this->format = (isset($parametres['format']) && $parametres['format'] != '') ? $parametres['format'] : $this->format;
-
 
213
		foreach($parametres as $cle => $valeur) {
211
		foreach($parametres as $cle => $valeur) {
214
			if(is_string($valeur) && !trim($valeur)) continue;
212
			if(trim($valeur) != '' && isset($this->parametres_autorises[$cle])) {
215
			if(isset($this->parametres_autorises[$cle])) {
213
				$parametres_traites[$this->parametres_autorises[$cle]] = $valeur;
216
				$parametres_traites[$this->parametres_autorises[$cle]] = $valeur;
214
			}
217
			}
215
		}
218
		}
216
		$parametres_traites['obsids'] = @self::traiterObsIds($parametres['obsids']);
219
		$parametres_traites['obsids'] = @self::traiterObsIds($parametres['obsids']);
Line 227... Line 230...
227
	private function envoyerXls($workbook) {
230
	private function envoyerXls($workbook) {
228
		$workbook->close();
231
		$workbook->close();
229
		exit;
232
		exit;
230
	}
233
	}
Line 231... Line 234...
231
	
234
	
232
	private function convertirEnCsv(&$data, &$colonnes, &$colonnes_supplementaires, &$champs_supplementaires = array()) {
235
	private function convertirEnCsv(&$data, $colonnes, &$colonnes_supplementaires, &$champs_supplementaires = array()) {
233
		$chemin_temp = "php://temp";
236
		$chemin_temp = "php://temp";
Line 234... Line -...
234
		$outstream = fopen($chemin_temp, 'r+');
-
 
235
 
-
 
236
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
237
		$outstream = fopen($chemin_temp, 'r+');
237
 
238
 
238
		$intitule_champs = array_merge(FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes));
239
		$intitule_champs = array_merge(FormateurGroupeColonne::getIntitulesColonnes($colonnes));
239
		// en premier car utilisé génériquement dans getLigneObservation()
240
		// en premier car utilisé génériquement dans getLigneObservation()
240
		if(strpos($colonnes, 'avance') !== false) {
241
		if(isset($colonnes['baseflor'])) {
241
			$intitule_champs = array_merge($intitule_champs, FormateurGroupeColonne::$baseflor_col);
242
			$intitule_champs = array_merge($intitule_champs, FormateurGroupeColonne::$baseflor_col);
242
		}
243
		}
Line 247... Line 248...
247
		fputcsv($outstream, $intitule_champs, ',', '"');			
248
		fputcsv($outstream, $intitule_champs, ',', '"');			
248
		// lignes
249
		// lignes
249
		foreach($data as &$ligne) {
250
		foreach($data as &$ligne) {
250
			$id_obs = $ligne['id_observation'];
251
			$id_obs = $ligne['id_observation'];
251
			$ligne = self::filtrerDonneesSensibles($ligne);
252
			$ligne = self::filtrerDonneesSensibles($ligne);
252
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
253
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $colonnes, $this);
253
			$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]);
254
			$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]);
254
			self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie);
255
			self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie);
255
			fputcsv($outstream, $ligne, ',', '"');
256
			fputcsv($outstream, $ligne, ',', '"');
256
		}
257
		}
257
		rewind($outstream);
258
		rewind($outstream);
258
		$csv = stream_get_contents($outstream);
259
		$csv = stream_get_contents($outstream);
259
		fclose($outstream);
260
		fclose($outstream);
260
		return $csv;
261
		return $csv;
261
	}
262
	}
Line 262... Line 263...
262
	
263
	
263
	private function convertirEnXls(&$data, &$colonnes,  &$colonnes_supplementaires, &$champs_supplementaires = array()) {		
264
	private function convertirEnXls(&$data, $colonnes, &$colonnes_supplementaires, &$champs_supplementaires = array()) {		
264
		$this->extendSpreadsheetProductor = new SpreadsheetProductor();
265
		$this->extendSpreadsheetProductor = new SpreadsheetProductor();
Line 265... Line 266...
265
		$this->extendSpreadsheetProductor->initSpreadsheet();
266
		$this->extendSpreadsheetProductor->initSpreadsheet();
266
		
267
		
Line 271... Line 272...
271
 
272
 
272
		$worksheet->setInputEncoding('utf-8');
273
		$worksheet->setInputEncoding('utf-8');
Line 273... Line 274...
273
		$workbook->send($this->nom_fichier_export.'.xls');
274
		$workbook->send($this->nom_fichier_export.'.xls');
274
		
-
 
Line 275... Line 275...
275
		$nb_lignes = 1;
275
		
276
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
276
		$nb_lignes = 1;
277
 
277
 
278
		$intitule_champs = array_merge(FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes));
278
		$intitule_champs = array_merge(FormateurGroupeColonne::getIntitulesColonnes($colonnes));
279
		// en premier car utilisé génériquement dans getLigneObservation()
279
		// en premier car utilisé génériquement dans getLigneObservation()
280
		if(strpos($colonnes, 'avance') !== false) {
280
		if(isset($colonnes['baseflor'])) {
281
			$intitule_champs = array_merge($intitule_champs, FormateurGroupeColonne::$baseflor_col);
281
			$intitule_champs = array_merge($intitule_champs, FormateurGroupeColonne::$baseflor_col);
Line 290... Line 290...
290
		}
290
		}
Line 291... Line 291...
291
 
291
 
292
		foreach($data as &$ligne) {
292
		foreach($data as &$ligne) {
293
			$id_obs = $ligne['id_observation'];
293
			$id_obs = $ligne['id_observation'];
294
			$ligne = self::filtrerDonneesSensibles($ligne);
294
			$ligne = self::filtrerDonneesSensibles($ligne);
Line 295... Line 295...
295
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
295
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $colonnes, $this);
296
 
296
 
297
			$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]);
297
			$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]);
298
			$ligne_supp = self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie);
298
			$ligne_supp = self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie);