Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 1624 → Rev 1625

/trunk/jrest/services/CelWidgetExport.php
71,9 → 71,14
'num_taxon' => 'nt',
'date_debut' => 'date_debut',
'date_fin' => 'date_fin',
'taxon' => 'taxon'
'taxon' => 'taxon',
'debut' => 'debut',
'limite' => 'limite',
'format' => 'format'
);
private $limite_decoupage_defaut = 9000;
private $format = 'csv';
public function getRessource() {
83,10 → 88,27
/**
* Méthode appelée avec une requête de type GET.
*/
public function getElement($params = array()) {
public function getElement($params = array()) {
if(count($params) > 0) {
switch(strtolower($params[0])) {
case 'calcul':
$this->getCalcul();
break;
case 'export':
$this->getExport();
break;
default:
$this->getExport();
}
} else {
$this->getExport();
}
}
private function getCalcul() {
$criteres = $this->traiterParametresAutorises($_GET);
// Seulement les observation publiques
$criteres['transmission'] = 1;
$chercheur_observations = new RechercheObservation($this->config);
96,17 → 118,66
unset($criteres['limite']);
unset($criteres['debut']);
unset($criteres['format']);
$nb_observations = $chercheur_observations->compterObservations(null, $criteres);
$limite_decoupage = $this->calculerNbLignesMaxParFichier();
$url_telechargements = array();
$intervalle = 0;
$params_url = $criteres;
unset($params_url['transmission']);
do {
$base_url = $this->config['settings']['baseURLAbsolu'].'CelWidgetExport/export';
$params_url['debut'] = $intervalle;
$params_url['limite'] = $limite_decoupage;
$url_telechargement_fichier = $base_url;
$url_telechargements[] = $base_url.'?'.http_build_query($params_url).'&format='.$this->format;
$intervalle += $limite_decoupage;
$nb_observations -= $limite_decoupage;
} while($nb_observations >= $limite_decoupage);
$this->envoyerJson($url_telechargements);
}
$observations = $chercheur_observations->rechercherObservations(null, $criteres, $numero_page, $limite);
private function calculerNbLignesMaxParFichier() {
$limite = $this->limite_decoupage_defaut;
switch($this->format) {
case 'csv':
$limite = 20000;
break;
case 'xls':
$limite = 8000;
break;
}
return $limite;
}
private function getExport() {
$criteres = $this->traiterParametresAutorises($_GET);
 
// Seulement les observation publiques
$criteres['transmission'] = 1;
$chercheur_observations = new RechercheObservation($this->config);
$debut = isset($criteres['debut']) ? $criteres['debut'] : 0;
$limite = isset($criteres['limite']) ? $criteres['limite'] : 0;
unset($criteres['limite']);
unset($criteres['debut']);
unset($criteres['format']);
$observations = $chercheur_observations->rechercherObservations(null, $criteres, $debut, $limite);
switch($this->format) {
case 'csv':
$csv = $this->convertirEnCsv($observations);
$this->envoyerCsv($csv);
break;
break;
case 'xls':
$xls = $this->convertirEnXls($observations);
$this->envoyerXls($xls);
break;
break;
default:
}
}
159,9 → 230,10
$this->extendSpreadsheetProductor->initSpreadsheet();
$workbook = new Spreadsheet_Excel_Writer();
$worksheet = $workbook->addWorksheet('Liste');
$workbook->setTempDir($this->config['cel']['chemin_stockage_temp']);
$workbook->setVersion(8);
 
$worksheet = $workbook->addWorksheet('Liste');
$worksheet->setInputEncoding('utf-8');
$workbook->send($this->nom_fichier_export.'.xls');