Subversion Repositories eFlore/Applications.cel

Rev

Rev 1814 | Rev 1852 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1814 Rev 1818
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));