Subversion Repositories eFlore/Applications.cel

Rev

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

Rev 1656 Rev 1675
Line 38... Line 38...
38
//define('NB_LIRE_LIGNE_SIMUL', 30);
38
//define('NB_LIRE_LIGNE_SIMUL', 30);
39
define('NB_LIRE_LIGNE_SIMUL', 5);
39
define('NB_LIRE_LIGNE_SIMUL', 5);
Line 40... Line 40...
40
 
40
 
41
// Numbers of days between January 1, 1900 and 1970 (including 19 leap years)
41
// Numbers of days between January 1, 1900 and 1970 (including 19 leap years)
42
// see traiterDateObs()
42
// see traiterDateObs()
Line 43... Line 43...
43
define("MIN_DATES_DIFF", 25569);
43
// define("MIN_DATES_DIFF", 25569);
44
 
44
 
45
 
45
 
Line 62... Line 62...
62
		if($this->ligne_debut && ($ligne < $this->ligne_debut || $ligne >= $this->ligne_fin)) return false;
62
		if($this->ligne_debut && ($ligne < $this->ligne_debut || $ligne >= $this->ligne_fin)) return false;
63
		return true;
63
		return true;
64
    } 
64
    } 
65
} 
65
} 
Line -... Line 66...
-
 
66
 
-
 
67
// XXX: PHP 5.3
-
 
68
function __anonyme_1($v) {	return !$v['importable']; }
-
 
69
function __anonyme_2(&$v) {	$v = $v['nom']; }
-
 
70
function __anonyme_3($cell) { return !is_null($cell); };
-
 
71
function __anonyme_4($item, $key, $obj) { $item = $obj->quoteNonNull(trim($item)); }
-
 
72
function __anonyme_5($item) { return is_null($item) ? '?' : $item; }
-
 
73
function __anonyme_6() { return NULL; }
66
 
74
 
Line 67... Line 75...
67
class ImportXLS extends Cel  {
75
class ImportXLS extends Cel  {
68
 
76
 
69
	static $ordre_BDD = Array(
77
	static $ordre_BDD = Array(
Line 242... Line 250...
242
			// notamment dans RechercheInfosTaxonBeta.php
250
			// notamment dans RechercheInfosTaxonBeta.php
243
			list($enregistrements, $images) =
251
			list($enregistrements, $images) =
244
				self::chargerLignes($this, $donnees, $this->colonnes_statiques, $dernier_ordre);
252
				self::chargerLignes($this, $donnees, $this->colonnes_statiques, $dernier_ordre);
245
			if(! $enregistrements) break;
253
			if(! $enregistrements) break;
Line 246... Line -...
246
 
-
 
247
			echo "===chunk\n";
254
 
248
			self::trierColonnes($enregistrements);
255
			self::trierColonnes($enregistrements);
249
			// normalement: NB_LIRE_LIGNE_SIMUL, sauf si une enregistrement ne semble pas valide
256
			// normalement: NB_LIRE_LIGNE_SIMUL, sauf si une enregistrement ne semble pas valide
Line 250... Line 257...
250
			// ou bien lors du dernier chunk
257
			// ou bien lors du dernier chunk
Line 312... Line 319...
312
		// ==> Array( I => rien )
319
		// ==> Array( I => rien )
313
		$colonnesID_non_reconnues = array_diff_key($entete, $colonnes_reconnues);
320
		$colonnesID_non_reconnues = array_diff_key($entete, $colonnes_reconnues);
Line 314... Line 321...
314
 
321
 
315
		// des colonnes de FormateurGroupeColonne::nomEnsembleVersListeColonnes()
322
		// des colonnes de FormateurGroupeColonne::nomEnsembleVersListeColonnes()
316
		// ne retient que celles marquées "importables"
323
		// ne retient que celles marquées "importables"
Line 317... Line 324...
317
		$colonnes_automatiques = array_filter($cols, function($v) {	return !$v['importable']; });
324
		$colonnes_automatiques = array_filter($cols, '__anonyme_1');
318
 
325
 
Line 319... Line 326...
319
		// ne conserve que le nom long pour matcher avec la ligne XLS d'entête
326
		// ne conserve que le nom long pour matcher avec la ligne XLS d'entête
320
		array_walk($colonnes_automatiques, function(&$v) {	$v = $v['nom']; });
327
		array_walk($colonnes_automatiques, '__anonyme_2');
321
 
328
 
Line 339... Line 346...
339
 
346
 
340
		foreach($lignes as $ligne) {
347
		foreach($lignes as $ligne) {
341
			//$ligne = array_filter($ligne, function($cell) { return !is_null($cell); });
348
			//$ligne = array_filter($ligne, function($cell) { return !is_null($cell); });
342
			//if(!$ligne) continue;
349
			//if(!$ligne) continue;
343
			// on a besoin des NULL pour éviter des notice d'index indéfini
350
			// on a besoin des NULL pour éviter des notice d'index indéfini
Line 344... Line 351...
344
			if(! array_filter($ligne, function($cell) { return !is_null($cell); })) continue;
351
			if(! array_filter($ligne, '__anonyme_3')) continue;
345
 
352
 
346
			if( ($enregistrement = self::chargerLigne($ligne, $dernier_ordre, $cel)) ) {
353
			if( ($enregistrement = self::chargerLigne($ligne, $dernier_ordre, $cel)) ) {
Line 421... Line 428...
421
		// $localisation est rempli à partir de plusieurs champs: C_ZONE_GEO et C_CE_ZONE_GEO
428
		// $localisation est rempli à partir de plusieurs champs: C_ZONE_GEO et C_CE_ZONE_GEO
422
		$localisation = Array(C_ZONE_GEO => NULL, C_CE_ZONE_GEO => NULL);
429
		$localisation = Array(C_ZONE_GEO => NULL, C_CE_ZONE_GEO => NULL);
423
		self::traiterLocalisation($ligne, $localisation, $cel);
430
		self::traiterLocalisation($ligne, $localisation, $cel);
Line 424... Line 431...
424
 
431
 
-
 
432
		// $transmission est utilisé pour date_transmission
425
		// $transmission est utilisé pour date_transmission
433
		// XXX: @ contre "Undefined index"
Line 426... Line 434...
426
		$transmission = in_array(strtolower(trim($ligne[C_TRANSMISSION])), array(1, 'oui')) ? 1 : 0;
434
		@$transmission = in_array(strtolower(trim($ligne[C_TRANSMISSION])), array(1, 'oui')) ? 1 : 0;
427
 
435
 
428
 
436
 
Line 449... Line 457...
449
			"lieudit" => trim($ligne[C_LIEUDIT]),
457
			"lieudit" => trim($ligne[C_LIEUDIT]),
450
			"station" => trim($ligne[C_STATION]),
458
			"station" => trim($ligne[C_STATION]),
451
			"milieu" => trim($ligne[C_MILIEU]),
459
			"milieu" => trim($ligne[C_MILIEU]),
Line 452... Line 460...
452
 
460
 
-
 
461
			"mots_cles_texte" => NULL, // TODO: foreign-key
453
			"mots_cles_texte" => NULL, // TODO: foreign-key
462
			// XXX: @ contre "Undefined index"
Line 454... Line 463...
454
			"commentaire" => trim($ligne[C_COMMENTAIRE]),
463
			"commentaire" => @trim($ligne[C_COMMENTAIRE]),
455
 
464
 
Line 456... Line 465...
456
			"transmission" => $transmission,
465
			"transmission" => $transmission,
Line 476... Line 485...
476
		return $enregistrement;
485
		return $enregistrement;
477
	}
486
	}
Line 478... Line 487...
478
 
487
 
479
	static function traiterImage($str, $cel, &$enregistrement) {
488
	static function traiterImage($str, $cel, &$enregistrement) {
-
 
489
		$liste_images = array_filter(explode("/", $str));
480
		$liste_images = array_filter(explode("/", $str));
490
 
481
		array_walk($liste_images,
491
		array_walk($liste_images,
482
				   function($item, $key, $obj) { $item = $obj->quoteNonNull(trim($item)); },
492
				   '__anonyme_4',
483
				   $cel);
493
				   $cel);
484
		$requete = sprintf(
494
		$requete = sprintf(
485
			"SELECT id_image, nom_original FROM cel_images WHERE ce_utilisateur = %d AND nom_original IN (\"%s\")",
495
			"SELECT id_image, nom_original FROM cel_images WHERE ce_utilisateur = %d AND nom_original IN (\"%s\")",
486
			$cel->id_utilisateur,
496
			$cel->id_utilisateur,
Line 739... Line 749...
739
			'(' .
749
			'(' .
740
			// 3) créé une chaîne de liste de champ à inséré en DB
750
			// 3) créé une chaîne de liste de champ à inséré en DB
741
			implode(', ', array_values(
751
			implode(', ', array_values(
742
				// 2) garde les valeurs fixes (de $colonnes_statiques),
752
				// 2) garde les valeurs fixes (de $colonnes_statiques),
743
				// mais remplace les NULL par des "?"
753
				// mais remplace les NULL par des "?"
744
				array_map(function($item) { return is_null($item) ? '?' : $item; },
754
				array_map('__anonyme_5',
745
						  // 1) créé un tableau genre (nom_sel_nn => NULL) depuis self::$ordre_BDD
755
						  // 1) créé un tableau genre (nom_sel_nn => NULL) depuis self::$ordre_BDD
746
						  // et écrase certaines valeurs avec $colonnes_statiques (initilisé avec les données utilisateur)
756
						  // et écrase certaines valeurs avec $colonnes_statiques (initilisé avec les données utilisateur)
747
						  array_merge(array_map(function() { return NULL; }, array_flip(self::$ordre_BDD)), $colonnes_statiques
757
						  array_merge(array_map('__anonyme_6', array_flip(self::$ordre_BDD)), $colonnes_statiques
748
				)))) .
758
				)))) .
749
			')'
759
			')'
750
		);
760
		);
751
	}
761
	}