Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1711 → Rev 1709

/trunk/jrest/services/CelWidgetExport.php
71,7 → 71,8
* Méthode appelée avec une requête de type GET.
*/
public function getElement($params = array()) {
switch(@strtolower($params[0])) {
if(!$params) exit; // ne pas faire de super-requête en cas d'absence de paramètres
switch(strtolower($params[0])) {
case 'calcul':
$this->getCalcul();
break;
79,6 → 80,7
case 'export':
$this->getExport();
break;
default:
$this->getExport();
}
142,10 → 144,6
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']);
154,7 → 152,7
$debut = isset($criteres['debut']) ? intval($criteres['debut']) : 0;
$limite = isset($criteres['limite']) ? intval($criteres['limite']) : 0;
$groupes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
$colonnes = isset($criteres['colonnes']) ? $criteres['colonnes'] : 'standard,avance';
 
if($criteres['obsids']) $criteres['sql_brut'] = sprintf('id_observation IN (%s)',
implode(',', $criteres['obsids']));
188,9 → 186,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
$colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($groupes);
if(!$colonnes) die('ne peut identifier les groupes de champs demandés');
$cache = FormateurGroupeColonne::preload($colonnes, $this, $ids);
$cache = FormateurGroupeColonne::preload(FormateurGroupeColonne::nomEnsembleVersListeColonnes($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)
211,8 → 209,7
$parametres_traites = array();
$this->format = (isset($parametres['format']) && $parametres['format'] != '') ? $parametres['format'] : $this->format;
foreach($parametres as $cle => $valeur) {
if(is_string($valeur) && !trim($valeur)) continue;
if(isset($this->parametres_autorises[$cle])) {
if(trim($valeur) != '' && isset($this->parametres_autorises[$cle])) {
$parametres_traites[$this->parametres_autorises[$cle]] = $valeur;
}
}
232,13 → 229,15
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+');
 
$intitule_champs = array_merge(FormateurGroupeColonne::getIntitulesColonnes($colonnes));
$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
 
$intitule_champs = array_merge(FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes));
// en premier car utilisé génériquement dans getLigneObservation()
if(isset($colonnes['baseflor'])) {
if(strpos($colonnes, 'avance') !== false) {
$intitule_champs = array_merge($intitule_champs, FormateurGroupeColonne::$baseflor_col);
}
// en second car manuellement appellé plus bas, TODO: utiliser l'API du FormateurGroupeColonne
250,7 → 249,7
foreach($data as &$ligne) {
$id_obs = $ligne['id_observation'];
$ligne = self::filtrerDonneesSensibles($ligne);
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $colonnes, $this);
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]);
self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie);
fputcsv($outstream, $ligne, ',', '"');
261,7 → 260,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();
274,10 → 273,11
$workbook->send($this->nom_fichier_export.'.xls');
$nb_lignes = 1;
$groupe_colonnes = FormateurGroupeColonne::nomEnsembleVersListeColonnes($colonnes);
 
$intitule_champs = array_merge(FormateurGroupeColonne::getIntitulesColonnes($colonnes));
$intitule_champs = array_merge(FormateurGroupeColonne::getIntitulesColonnes($groupe_colonnes));
// en premier car utilisé génériquement dans getLigneObservation()
if(isset($colonnes['baseflor'])) {
if(strpos($colonnes, 'avance') !== false) {
$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, $colonnes, $this);
$ligne = FormateurGroupeColonne::getLigneObservation($ligne, $groupe_colonnes, $this);
 
$ligne_etendue_aplatie = self::aplatirChampsEtendus($champs_supplementaires[$id_obs]);
$ligne_supp = self::traiterLigneEtendue($ligne, $colonnes_supplementaires, $ligne_etendue_aplatie);
/trunk/jrest/lib/FormateurGroupeColonne.php
49,19 → 49,7
*/
static function nomEnsembleVersListeColonnes($groupe_de_champs = 'standard') {
if(! $groupe_de_champs) $groupe_de_champs = 'standard';
if(is_string($groupe_de_champs)) {
$groupe_de_champs = array_flip(explode(',', $groupe_de_champs));
}
elseif(is_array($groupe_de_champs)) {
$groupe_de_champs = array_flip($groupe_de_champs);
}
else {
return NULL;
}
$groupe_de_champs = array_intersect_key(array_flip(array('standard','avance','etendu','baseflor')),
$groupe_de_champs);
if(!$groupe_de_champs) return NULL;
 
$groupe_de_champs = array_flip(explode(',', $groupe_de_champs));
$colonnes = Array();
if(isset($groupe_de_champs['standard'])) {