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); |