Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1679 Rev 1690
Line 18... Line 18...
18
* @copyright 2012
18
* @copyright 2012
19
*/
19
*/
Line 20... Line 20...
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");
Line 25... Line 25...
25
require_once("lib/Spreadsheet/Excel/Writer.php");
25
require_once("lib/Spreadsheet/Excel/Writer.php");
Line 223... Line 223...
223
	
223
	
224
	private function convertirEnCsv(&$data, &$colonnes, &$colonnes_supplementaires, &$champs_supplementaires = array())
224
	private function convertirEnCsv(&$data, &$colonnes, &$colonnes_supplementaires, &$champs_supplementaires = array())
225
	{
225
	{
226
		$chemin_temp = "php://temp";
226
		$chemin_temp = "php://temp";
227
		$outstream = fopen($chemin_temp, 'r+');
-
 
228
		$intitule_champs = array();
-
 
-
 
227
		$outstream = fopen($chemin_temp, 'r+');
229
		$nb_colonnes_supp = count($colonnes_supplementaires);
228
 
-
 
229
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
-
 
230
		$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
-
 
231
 
-
 
232
		foreach($colonnes_supplementaires as $colonne_sup) {
-
 
233
			$intitule_champs[] = $colonne_sup;
-
 
234
		}
-
 
235
 
-
 
236
		// header
-
 
237
		fputcsv($outstream, $intitule_champs, ',', '"');			
230
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
238
		// lignes
231
		foreach($data as &$ligne) {
239
		foreach($data as &$ligne) {
232
			$id_obs = $ligne['id_observation'];
240
			$id_obs = $ligne['id_observation'];
233
			$ligne = $this->filtrerDonneesSensibles($ligne);
241
			$ligne = $this->filtrerDonneesSensibles($ligne);
234
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
-
 
235
			$ligne_supp = $nb_colonnes_supp > 0 ? array_fill(0, $nb_colonnes_supp, '') : array();
-
 
236
			if(isset($champs_supplementaires[$id_obs])) {
242
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
237
				$ligne_supp = $this->traiterLigneEtendue($colonnes_supplementaires, $champs_supplementaires[$id_obs]);
-
 
238
			}
-
 
239
			$ligne += $ligne_supp;
-
 
240
			if(empty($intitule_champs)) {
-
 
241
				$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
243
			$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]);
242
				foreach($colonnes_supplementaires as $colonne_sup) {
-
 
243
					$intitule_champs[] = $colonne_sup;
-
 
244
				}
-
 
245
				fputcsv($outstream, $intitule_champs, ',', '"');			
-
 
246
			}
244
			self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie);
247
			fputcsv($outstream, $ligne, ',', '"');
245
			fputcsv($outstream, $ligne, ',', '"');
248
		}
246
		}
249
		rewind($outstream);
247
		rewind($outstream);
250
		$csv = stream_get_contents($outstream);
248
		$csv = stream_get_contents($outstream);
Line 254... Line 252...
254
	
252
	
255
	private function convertirEnXls(&$data, &$colonnes,  &$colonnes_supplementaires, &$champs_supplementaires = array()) {		
253
	private function convertirEnXls(&$data, &$colonnes,  &$colonnes_supplementaires, &$champs_supplementaires = array()) {		
256
		$this->extendSpreadsheetProductor = new SpreadsheetProductor();
254
		$this->extendSpreadsheetProductor = new SpreadsheetProductor();
Line 257... Line -...
257
		$this->extendSpreadsheetProductor->initSpreadsheet();
-
 
258
		
-
 
259
		$nb_colonnes_supp = count($colonnes_supplementaires);
255
		$this->extendSpreadsheetProductor->initSpreadsheet();
260
		
256
		
261
		$workbook = new Spreadsheet_Excel_Writer();
257
		$workbook = new Spreadsheet_Excel_Writer();
262
		$worksheet = $workbook->addWorksheet('Liste');
258
		$worksheet = $workbook->addWorksheet('Liste');
Line 263... Line 259...
263
		$workbook->setTempDir($this->config['cel']['chemin_stockage_temp']);
259
		$workbook->setTempDir($this->config['cel']['chemin_stockage_temp']);
264
		$workbook->setVersion(8);
260
		$workbook->setVersion(8);
Line 265... Line 261...
265
 
261
 
266
		$worksheet->setInputEncoding('utf-8');
262
		$worksheet->setInputEncoding('utf-8');
-
 
263
		$workbook->send($this->nom_fichier_export.'.xls');
-
 
264
		
-
 
265
		$nb_lignes = 1;
-
 
266
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
-
 
267
		$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
-
 
268
		foreach($colonnes_supplementaires as $colonne_sup) {
-
 
269
			$intitule_champs[] = $colonne_sup;
-
 
270
		}
-
 
271
 
-
 
272
		// header
-
 
273
		$indice = 0;
-
 
274
		foreach ($intitule_champs as &$intitule) {	
267
		$workbook->send($this->nom_fichier_export.'.xls');
275
			$worksheet->write(0,$indice,$intitule);
268
		
276
			$indice++;
269
		$nb_lignes = 1;
277
		}
270
		$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
278
 
271
		foreach($data as &$ligne) {
-
 
272
			$id_obs = $ligne['id_observation'];
-
 
273
			$ligne = $this->filtrerDonneesSensibles($ligne);
-
 
274
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
-
 
275
			if(empty($intitule_champs)) {
-
 
276
				$indice = 0;
-
 
277
				$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
-
 
278
				foreach($colonnes_supplementaires as $colonne_sup) {
-
 
279
					$intitule_champs[] = $colonne_sup;
-
 
280
				}
-
 
281
				foreach ($intitule_champs as &$intitule) {	
-
 
282
					$colonne = $intitule_champs[$indice];
279
		foreach($data as &$ligne) {
283
					$worksheet->write(0,$indice,$colonne);
-
 
284
					$indice++;
280
			$id_obs = $ligne['id_observation'];
285
				}
281
			$ligne = $this->filtrerDonneesSensibles($ligne);
286
			}
-
 
287
			$ligne_supp = $nb_colonnes_supp > 0 ? array_fill(0, $nb_colonnes_supp, '') : array();
-
 
288
			if(isset($champs_supplementaires[$id_obs])) {
282
			$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
289
				$ligne_supp = $this->traiterLigneEtendue($colonnes_supplementaires, $champs_supplementaires[$id_obs]);
283
 
290
			}
284
			$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]);
291
			$ligne += $ligne_supp;
285
			$ligne_supp = self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie);
292
			$indice = 0;
286
			$indice = 0;
Line 310... Line 304...
310
	private function envoyerPdf(&$pdf) {
304
	private function envoyerPdf(&$pdf) {
311
		$pdf->pdf->Output('etiquettes.pdf', 'I');
305
		$pdf->pdf->Output('etiquettes.pdf', 'I');
312
		exit;;
306
		exit;;
313
	}
307
	}
Line 314... Line 308...
314
	
308
	
-
 
309
	static function traiterLigneEtendue(&$ligne, &$colonnes_etendues, $ligne_etendue_aplatie) {
-
 
310
		if(! $colonnes_etendues) return;
-
 
311
		if(! $ligne_etendue_aplatie) return;
-
 
312
		$nb_colonnes_supp = count($colonnes_etendues);
315
	private function traiterLigneEtendue(&$colonnes_etendues, &$ligne_champs_etendus) {
313
 
316
		$ligne_etendue_aplatie = $this->aplatirChampsEtendus($ligne_champs_etendus);
314
		$ligne_supp = array_fill(0, $nb_colonnes_supp, '');
-
 
315
		$ligne_etendue_fmt = array();
317
		$ligne_etendue_fmt = array();
316
 
318
		foreach($colonnes_etendues as $colonne) {
317
		foreach($colonnes_etendues as $colonne) {
319
			if(!isset($ligne_etendue_aplatie[$colonne])) {
318
			if(!isset($ligne_etendue_aplatie[$colonne])) {
320
				$ligne_etendue_fmt[$colonne] = ''; 
319
				$ligne_etendue_fmt[$colonne] = ''; 
321
			} else {
320
			} else {
322
				$ligne_etendue_fmt[$colonne] = $ligne_etendue_aplatie[$colonne];
321
				$ligne_etendue_fmt[$colonne] = $ligne_etendue_aplatie[$colonne];
323
			}
322
			}
-
 
323
		}
324
		}
324
 
325
		return $ligne_etendue_fmt;
325
		$ligne += $ligne_etendue_fmt;
Line 326... Line 326...
326
	}
326
	}
-
 
327
	
327
	
328
	static function aplatirChampsEtendus(&$ligne_champs_etendus) {
328
	private function aplatirChampsEtendus(&$ligne_champs_etendus) {
329
		if(!$ligne_champs_etendus) return;
329
		$champs_etendus_fmt = array();
330
		$champs_etendus_fmt = array();
330
		foreach($ligne_champs_etendus as $champ) {
331
		foreach($ligne_champs_etendus as $champ) {
331
			$champs_etendus_fmt[$champ->cle] = $champ->valeur;
332
			$champs_etendus_fmt[$champ->cle] = $champ->valeur;