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