| Line 198... |
Line 198... |
| 198 |
(@rename($fichier, $fichier . '.' . $extension))) { // XXX: @ safe-mode
|
198 |
(@rename($fichier, $fichier . '.' . $extension))) { // XXX: @ safe-mode
|
| 199 |
$fichier = $fichier . '.' . $extension;
|
199 |
$fichier = $fichier . '.' . $extension;
|
| 200 |
}
|
200 |
}
|
| Line 201... |
Line 201... |
| 201 |
|
201 |
|
| - |
|
202 |
$objReader = PHPExcel_IOFactory::createReaderForFile($fichier);
|
| 202 |
$objReader = PHPExcel_IOFactory::createReaderForFile($fichier);
|
203 |
// TODO: check if compatible with toArray(<1>,<2>,TRUE,<4>)
|
| Line 203... |
Line 204... |
| 203 |
$objReader->setReadDataOnly(true);
|
204 |
$objReader->setReadDataOnly(true);
|
| 204 |
|
205 |
|
| 205 |
// TODO: is_a obsolete entre 5.0 et 5.3, retirer le @ à terme
|
206 |
// TODO: is_a obsolete entre 5.0 et 5.3, retirer le @ à terme
|
| Line 218... |
Line 219... |
| 218 |
$objPHPExcel = $objReader->load($fichier);
|
219 |
$objPHPExcel = $objReader->load($fichier);
|
| 219 |
$obj_infos = $objReader->listWorksheetInfo($fichier);
|
220 |
$obj_infos = $objReader->listWorksheetInfo($fichier);
|
| 220 |
// XXX: indépendant du readFilter ?
|
221 |
// XXX: indépendant du readFilter ?
|
| 221 |
$nb_lignes = $obj_infos[0]['totalRows'];
|
222 |
$nb_lignes = $obj_infos[0]['totalRows'];
|
| Line 222... |
Line 223... |
| 222 |
|
223 |
|
| 223 |
$donnees = $objPHPExcel->getActiveSheet()->toArray(NULL, FALSE, FALSE, TRUE);
|
224 |
$donnees = $objPHPExcel->getActiveSheet()->toArray(NULL, FALSE, TRUE, TRUE);
|
| Line 224... |
Line 225... |
| 224 |
$filtre->exclues = self::detectionEntete($donnees[1]);
|
225 |
$filtre->exclues = self::detectionEntete($donnees[1]);
|
| 225 |
|
226 |
|
| 226 |
$obs_ajouts = 0;
|
227 |
$obs_ajouts = 0;
|
| Line 242... |
Line 243... |
| 242 |
$objReader->setReadFilter($filtre);
|
243 |
$objReader->setReadFilter($filtre);
|
| Line 243... |
Line 244... |
| 243 |
|
244 |
|
| 244 |
/* recharge avec $filtre actif (filtre sur lignes colonnes):
|
245 |
/* recharge avec $filtre actif (filtre sur lignes colonnes):
|
| 245 |
- exclue les colonnes inutiles/inutilisables)
|
246 |
- exclue les colonnes inutiles/inutilisables)
|
| 246 |
- ne selectionne que les lignes dans le range [$ligne - $ligne + NB_LIRE_LIGNE_SIMUL] */
|
247 |
- ne selectionne que les lignes dans le range [$ligne - $ligne + NB_LIRE_LIGNE_SIMUL] */
|
| - |
|
248 |
$objPHPExcel = $objReader->load($fichier)->getActiveSheet();
|
| - |
|
249 |
|
| - |
|
250 |
// set col typing
|
| - |
|
251 |
if(C_CE_ZONE_GEO != 'C_CE_ZONE_GEO')
|
| - |
|
252 |
$objPHPExcel->getStyle(C_CE_ZONE_GEO . '2:' . C_CE_ZONE_GEO . $objPHPExcel->getHighestRow())->getNumberFormat()->setFormatCode('00000');
|
| - |
|
253 |
|
| - |
|
254 |
// TODO: set to string type
|
| - |
|
255 |
if(C_ZONE_GEO != 'C_ZONE_GEO')
|
| - |
|
256 |
$objPHPExcel->getStyle(C_ZONE_GEO . '2:' . C_ZONE_GEO . $objPHPExcel->getHighestRow())->getNumberFormat()->setFormatCode('00000');
|
| 247 |
$objPHPExcel = $objReader->load($fichier);
|
257 |
|
| Line 248... |
Line 258... |
| 248 |
$donnees = $objPHPExcel->getActiveSheet()->toArray(NULL, FALSE, FALSE, TRUE);
|
258 |
$donnees = $objPHPExcel->toArray(NULL, FALSE, TRUE, TRUE);
|
| 249 |
|
259 |
|
| Line 250... |
Line 260... |
| 250 |
// ici on appel la fonction qui fera effectivement l'insertion multiple
|
260 |
// ici on appel la fonction qui fera effectivement l'insertion multiple
|
| Line 578... |
Line 588... |
| 578 |
// TODO: PHP 5.3, utiliser date_parse_from_format()
|
588 |
// TODO: PHP 5.3, utiliser date_parse_from_format()
|
| 579 |
// TODO: parser les heures (cf product-owner)
|
589 |
// TODO: parser les heures (cf product-owner)
|
| 580 |
// TODO: passer par le timestamp pour s'assurer de la validité
|
590 |
// TODO: passer par le timestamp pour s'assurer de la validité
|
| 581 |
static function traiterDateObs($date, $ref_ligne) {
|
591 |
static function traiterDateObs($date, $ref_ligne) {
|
| 582 |
// TODO: see https://github.com/PHPOffice/PHPExcel/issues/208
|
592 |
// TODO: see https://github.com/PHPOffice/PHPExcel/issues/208
|
| - |
|
593 |
// TODO: PHPExcel_Shared_Date::ExcelToPHP()
|
| 583 |
if(is_double($date)) {
|
594 |
if(is_double($date)) {
|
| 584 |
if($date > 0)
|
595 |
if($date > 0)
|
| 585 |
return PHPExcel_Style_NumberFormat::toFormattedString($date, PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2) . " 00:00:00";
|
596 |
return PHPExcel_Style_NumberFormat::toFormattedString($date, PHPExcel_Style_NumberFormat::FORMAT_DATE_YYYYMMDD2) . " 00:00:00";
|
| 586 |
trigger_error("ligne \"{$ref_ligne}\": " .
|
597 |
trigger_error("ligne \"{$ref_ligne}\": " .
|
| 587 |
"Attention: date antérieure à 1970 et format de cellule \"DATE\" utilisés ensemble",
|
598 |
"Attention: date antérieure à 1970 et format de cellule \"DATE\" utilisés ensemble",
|
| Line 796... |
Line 807... |
| 796 |
self::quoteNonNull(substr($localisation[C_CE_ZONE_GEO], strlen("INSEE-C:")))));
|
807 |
self::quoteNonNull(substr($localisation[C_CE_ZONE_GEO], strlen("INSEE-C:")))));
|
| 797 |
if($nom) $localisation[C_ZONE_GEO] = $nom[0]['nom'];
|
808 |
if($nom) $localisation[C_ZONE_GEO] = $nom[0]['nom'];
|
| 798 |
return;
|
809 |
return;
|
| 799 |
}
|
810 |
}
|
| Line 800... |
Line -... |
| 800 |
|
- |
|
| 801 |
|
811 |
|
| 802 |
if(!is_numeric($departement)) {
|
812 |
if(!is_numeric($departement)) {
|
| 803 |
$localisation[C_CE_ZONE_GEO] = $ligne[C_CE_ZONE_GEO];
|
813 |
$localisation[C_CE_ZONE_GEO] = $ligne[C_CE_ZONE_GEO];
|
| 804 |
return;
|
814 |
return;
|
| Line -... |
Line 815... |
| - |
|
815 |
}
|
| - |
|
816 |
|
| - |
|
817 |
if( ($resultat_commune = Cel::db()->requeter(sprintf("SELECT DISTINCT nom, CONCAT('INSEE-C:', code) AS code FROM cel_zones_geo WHERE code = %s LIMIT 1",
|
| - |
|
818 |
self::quoteNonNull($departement)))) ) {
|
| - |
|
819 |
$localisation[C_ZONE_GEO] = $resultat_commune[0]['nom'];
|
| - |
|
820 |
$localisation[C_CE_ZONE_GEO] = $resultat_commune[0]['code'];
|
| - |
|
821 |
return;
|
| 805 |
}
|
822 |
}
|
| 806 |
|
823 |
;
|
| 807 |
if(strlen($departement) == 4) $departement = "INSEE-C:0" . $departement;
|
824 |
// if(strlen($departement) == 4) $departement = "INSEE-C:0" . $departement;
|
| Line 808... |
Line 825... |
| 808 |
if(strlen($departement) == 5) $departement = "INSEE-C:" . $departement;
|
825 |
// if(strlen($departement) == 5) $departement = "INSEE-C:" . $departement;
|
| Line 809... |
Line 826... |
| 809 |
// if(strlen($departement) <= 9) return "INSEE-C:0" . $departement; // ? ... TODO
|
826 |
// if(strlen($departement) <= 9) return "INSEE-C:0" . $departement; // ? ... TODO
|
| 810 |
|
827 |
|
| 811 |
$departement = trim($departement); // TODO
|
828 |
$departement = trim($departement); // TODO
|
| Line 812... |
Line 829... |
| 812 |
|
829 |
|
| Line 813... |
Line 830... |
| 813 |
$localisation[C_CE_ZONE_GEO] = $ligne[C_CE_ZONE_GEO];
|
830 |
$localisation[C_CE_ZONE_GEO] = $ligne[C_CE_ZONE_GEO];
|
| 814 |
return;
|
831 |
return;
|
| 815 |
}
|
832 |
}
|
| 816 |
|
833 |
|
| Line 829... |
Line 846... |
| 829 |
else {
|
846 |
else {
|
| 830 |
$requete = sprintf("%s WHERE nom = %s AND code = %d",
|
847 |
$requete = sprintf("%s WHERE nom = %s AND code = %d",
|
| 831 |
$select, self::quoteNonNull($nom_commune),
|
848 |
$select, self::quoteNonNull($nom_commune),
|
| 832 |
$code_commune);
|
849 |
$code_commune);
|
| 833 |
}
|
850 |
}
|
| 834 |
|
- |
|
| 835 |
}
|
851 |
}
|
| 836 |
elseif (preg_match('/^(\d+|(2[ab]\d+))$/i', $identifiant_commune, $elements)) {
|
852 |
elseif (preg_match('/^(\d+|(2[ab]\d+))$/i', $identifiant_commune, $elements)) {
|
| 837 |
// Code insee seul
|
853 |
// Code insee seul
|
| 838 |
$code_insee_commune=$elements[1];
|
854 |
$code_insee_commune=$elements[1];
|
| 839 |
$requete = sprintf("%s WHERE code = %s", $select, self::quoteNonNull($code_insee_commune));
|
855 |
$requete = sprintf("%s WHERE code = %s", $select, self::quoteNonNull($code_insee_commune));
|