Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1710 → Rev 1711

/trunk/jrest/services/CelWidgetExport.php
71,8 → 71,7
* Méthode appelée avec une requête de type GET.
*/
public function getElement($params = array()) {
if(!$params) exit; // ne pas faire de super-requête en cas d'absence de paramètres
switch(strtolower($params[0])) {
switch(@strtolower($params[0])) {
case 'calcul':
$this->getCalcul();
break;
80,7 → 79,6
case 'export':
$this->getExport();
break;
default:
$this->getExport();
}
144,6 → 142,10
private function getExport() {
$criteres = $this->traiterParametresAutorises($_GET);
// ne pas faire de super-requête en cas d'absence de paramètres
// par exemple "format", au minimum, devrait être défini
if(!$criteres) die('pas de paramètre reçu');
 
$criteres['transmission'] = 1;
if($this->doitEtPeutExporterObsPrivees($criteres)) {
unset($criteres['transmission']);
152,7 → 154,7
$debut = isset($criteres['debut']) ? intval($criteres['debut']) : 0;
$limite = isset($criteres['limite']) ? intval($criteres['limite']) : 0;
$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
$groupes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
 
if($criteres['obsids']) $criteres['sql_brut'] = sprintf('id_observation IN (%s)',
implode(',', $criteres['obsids']));
186,9 → 188,9
// $cache pourrait être utilisé par les fonctions de colonnes
// * Pour "nom commun", "preload" retourne NULL, car c'est le cache statique de FormateurGroupeColonne
// qu'il initialise et utilise en interne sans qu'un passage par paramètre ne soit nécessaire
$cache = FormateurGroupeColonne::preload(FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes),
$this,
$ids);
$colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($groupes);
if(!$colonnes) die('ne peut identifier les groupes de champs demandés');
$cache = FormateurGroupeColonne::preload($colonnes, $this, $ids);
// TODO: tous les champs étendus et les paramètres supplémentaires devraient être passés en un seul
// tableau (et chaque formateur csv, xls etc... pourrait également être dans une classe à part)
209,7 → 211,8
$parametres_traites = array();
$this->format = (isset($parametres['format']) && $parametres['format'] != '') ? $parametres['format'] : $this->format;
foreach($parametres as $cle => $valeur) {
if(trim($valeur) != '' && isset($this->parametres_autorises[$cle])) {
if(is_string($valeur) && !trim($valeur)) continue;
if(isset($this->parametres_autorises[$cle])) {
$parametres_traites[$this->parametres_autorises[$cle]] = $valeur;
}
}
229,15 → 232,13
exit;
}
private function convertirEnCsv(&$data, &$colonnes, &$colonnes_supplementaires, &$champs_supplementaires = array()) {
private function convertirEnCsv(&$data, $colonnes, &$colonnes_supplementaires, &$champs_supplementaires = array()) {
$chemin_temp = "php://temp";
$outstream = fopen($chemin_temp, 'r+');
 
$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
 
$intitule_champs = array_merge(FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes));
$intitule_champs = array_merge(FormateurGroupeColonne::getIntitulesColonnes($colonnes));
// en premier car utilisé génériquement dans getLigneObservation()
if(strpos($colonnes, 'avance') !== false) {
if(isset($colonnes['baseflor'])) {
$intitule_champs = array_merge($intitule_champs, FormateurGroupeColonne::$baseflor_col);
}
// en second car manuellement appellé plus bas, TODO: utiliser l'API du FormateurGroupeColonne
249,7 → 250,7
foreach($data as &$ligne) {
$id_obs = $ligne['id_observation'];
$ligne = self::filtrerDonneesSensibles($ligne);
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $colonnes, $this);
$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]);
self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie);
fputcsv($outstream, $ligne, ',', '"');
260,7 → 261,7
return $csv;
}
private function convertirEnXls(&$data, &$colonnes, &$colonnes_supplementaires, &$champs_supplementaires = array()) {
private function convertirEnXls(&$data, $colonnes, &$colonnes_supplementaires, &$champs_supplementaires = array()) {
$this->extendSpreadsheetProductor = new SpreadsheetProductor();
$this->extendSpreadsheetProductor->initSpreadsheet();
273,11 → 274,10
$workbook->send($this->nom_fichier_export.'.xls');
$nb_lignes = 1;
$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
 
$intitule_champs = array_merge(FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes));
$intitule_champs = array_merge(FormateurGroupeColonne::getIntitulesColonnes($colonnes));
// en premier car utilisé génériquement dans getLigneObservation()
if(strpos($colonnes, 'avance') !== false) {
if(isset($colonnes['baseflor'])) {
$intitule_champs = array_merge($intitule_champs, FormateurGroupeColonne::$baseflor_col);
}
// en second car manuellement appellé plus bas, TODO: utiliser l'API du FormateurGroupeColonne
292,7 → 292,7
foreach($data as &$ligne) {
$id_obs = $ligne['id_observation'];
$ligne = self::filtrerDonneesSensibles($ligne);
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $colonnes, $this);
 
$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]);
$ligne_supp = self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie);