Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1689 → Rev 1690

/trunk/jrest/services/CelWidgetExport.php
20,7 → 20,7
 
set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(realpath(__FILE__))) . '/lib');
// la sortie est binaire (xls), mais OLE n'est pas compatible E_ALL en PHP-5.4
//error_reporting(error_reporting() ^ E_STRICT);
error_reporting(error_reporting() ^ E_STRICT);
require_once("lib/OLE.php");
require_once("lib/Spreadsheet/Excel/Writer.php");
 
225,25 → 225,23
{
$chemin_temp = "php://temp";
$outstream = fopen($chemin_temp, 'r+');
$intitule_champs = array();
$nb_colonnes_supp = count($colonnes_supplementaires);
 
$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
 
foreach($colonnes_supplementaires as $colonne_sup) {
$intitule_champs[] = $colonne_sup;
}
 
// header
fputcsv($outstream, $intitule_champs, ',', '"');
// lignes
foreach($data as &$ligne) {
$id_obs = $ligne['id_observation'];
$ligne = $this->filtrerDonneesSensibles($ligne);
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
$ligne_supp = $nb_colonnes_supp > 0 ? array_fill(0, $nb_colonnes_supp, '') : array();
if(isset($champs_supplementaires[$id_obs])) {
$ligne_supp = $this->traiterLigneEtendue($colonnes_supplementaires, $champs_supplementaires[$id_obs]);
}
$ligne += $ligne_supp;
if(empty($intitule_champs)) {
$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
foreach($colonnes_supplementaires as $colonne_sup) {
$intitule_champs[] = $colonne_sup;
}
fputcsv($outstream, $intitule_champs, ',', '"');
}
$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]);
self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie);
fputcsv($outstream, $ligne, ',', '"');
}
rewind($outstream);
256,8 → 254,6
$this->extendSpreadsheetProductor = new SpreadsheetProductor();
$this->extendSpreadsheetProductor->initSpreadsheet();
$nb_colonnes_supp = count($colonnes_supplementaires);
$workbook = new Spreadsheet_Excel_Writer();
$worksheet = $workbook->addWorksheet('Liste');
$workbook->setTempDir($this->config['cel']['chemin_stockage_temp']);
268,27 → 264,25
$nb_lignes = 1;
$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
foreach($colonnes_supplementaires as $colonne_sup) {
$intitule_champs[] = $colonne_sup;
}
 
// header
$indice = 0;
foreach ($intitule_champs as &$intitule) {
$worksheet->write(0,$indice,$intitule);
$indice++;
}
 
foreach($data as &$ligne) {
$id_obs = $ligne['id_observation'];
$ligne = $this->filtrerDonneesSensibles($ligne);
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
if(empty($intitule_champs)) {
$indice = 0;
$intitule_champs = FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes);
foreach($colonnes_supplementaires as $colonne_sup) {
$intitule_champs[] = $colonne_sup;
}
foreach ($intitule_champs as &$intitule) {
$colonne = $intitule_champs[$indice];
$worksheet->write(0,$indice,$colonne);
$indice++;
}
}
$ligne_supp = $nb_colonnes_supp > 0 ? array_fill(0, $nb_colonnes_supp, '') : array();
if(isset($champs_supplementaires[$id_obs])) {
$ligne_supp = $this->traiterLigneEtendue($colonnes_supplementaires, $champs_supplementaires[$id_obs]);
}
$ligne += $ligne_supp;
 
$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]);
$ligne_supp = self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie);
$indice = 0;
foreach($ligne as &$champ) {
$worksheet->write($nb_lignes,$indice,$champ);
312,9 → 306,14
exit;;
}
private function traiterLigneEtendue(&$colonnes_etendues, &$ligne_champs_etendus) {
$ligne_etendue_aplatie = $this->aplatirChampsEtendus($ligne_champs_etendus);
static function traiterLigneEtendue(&$ligne, &$colonnes_etendues, $ligne_etendue_aplatie) {
if(! $colonnes_etendues) return;
if(! $ligne_etendue_aplatie) return;
$nb_colonnes_supp = count($colonnes_etendues);
 
$ligne_supp = array_fill(0, $nb_colonnes_supp, '');
$ligne_etendue_fmt = array();
 
foreach($colonnes_etendues as $colonne) {
if(!isset($ligne_etendue_aplatie[$colonne])) {
$ligne_etendue_fmt[$colonne] = '';
322,10 → 321,12
$ligne_etendue_fmt[$colonne] = $ligne_etendue_aplatie[$colonne];
}
}
return $ligne_etendue_fmt;
 
$ligne += $ligne_etendue_fmt;
}
private function aplatirChampsEtendus(&$ligne_champs_etendus) {
static function aplatirChampsEtendus(&$ligne_champs_etendus) {
if(!$ligne_champs_etendus) return;
$champs_etendus_fmt = array();
foreach($ligne_champs_etendus as $champ) {
$champs_etendus_fmt[$champ->cle] = $champ->valeur;