| 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 |
}
|