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