| Line 30... |
Line 30... |
| 30 |
error_reporting(-1);
|
30 |
error_reporting(-1);
|
| 31 |
ini_set('html_errors', 0);
|
31 |
ini_set('html_errors', 0);
|
| 32 |
ini_set('xdebug.cli_color', 2);
|
32 |
ini_set('xdebug.cli_color', 2);
|
| 33 |
date_default_timezone_set('Europe/Paris');
|
33 |
date_default_timezone_set('Europe/Paris');
|
| 34 |
require_once 'lib/PHPExcel/Classes/PHPExcel.php';
|
34 |
require_once 'lib/PHPExcel/Classes/PHPExcel.php';
|
| - |
|
35 |
require_once 'bibliotheque/GestionMotsClesChemin.php';
|
| Line 35... |
Line 36... |
| 35 |
|
36 |
|
| 36 |
// nombre d'INSERT à cumuler par requête SQL
|
37 |
// nombre d'INSERT à cumuler par requête SQL
|
| 37 |
// (= nombre de lignes XLS à bufferiser)
|
38 |
// (= nombre de lignes XLS à bufferiser)
|
| 38 |
//define('NB_LIRE_LIGNE_SIMUL', 30);
|
39 |
//define('NB_LIRE_LIGNE_SIMUL', 30);
|
| Line 282... |
Line 283... |
| 282 |
}
|
283 |
}
|
| 283 |
$donnees[] = array_diff_key($tab, $filtre->exclues);
|
284 |
$donnees[] = array_diff_key($tab, $filtre->exclues);
|
| 284 |
}
|
285 |
}
|
| 285 |
}
|
286 |
}
|
| Line 286... |
Line 287... |
| 286 |
|
287 |
|
| 287 |
list($enregistrements, $images, $mots_cle, $champs_etendus) = self::chargerLignes($this, $donnees, $this->colonnes_statiques, $dernier_ordre);
|
288 |
list($enregistrements, $images, $mots_cle, $champs_etendus) = self::chargerLignes($this, $donnees, $this->colonnes_statiques, $dernier_ordre, $config);
|
| 288 |
if (! $enregistrements) {
|
289 |
if (! $enregistrements) {
|
| 289 |
break;
|
290 |
break;
|
| Line 290... |
Line 291... |
| 290 |
}
|
291 |
}
|
| Line 305... |
Line 306... |
| 305 |
$donnees = array_merge($donnees, array_values($e));
|
306 |
$donnees = array_merge($donnees, array_values($e));
|
| 306 |
}
|
307 |
}
|
| Line 307... |
Line 308... |
| 307 |
|
308 |
|
| Line -... |
Line 309... |
| - |
|
309 |
$stmt->execute($donnees);
|
| - |
|
310 |
|
| - |
|
311 |
# @TODO lier les mots-clées de l'arbre à l'obs nouvellement insérée, sinon seuls les mots-clés texte
|
| - |
|
312 |
# seront à jour, et ils seront écrasés à la prochaine modification de mots-clés pour cette obs...
|
| 308 |
$stmt->execute($donnees);
|
313 |
# => nécessite d'insérer les obs une par une pour avoir le dernier id inséré
|
| 309 |
|
314 |
|
| Line 310... |
Line 315... |
| 310 |
$dernier_autoinc = Cel::db()->lastInsertId();
|
315 |
$dernier_autoinc = Cel::db()->lastInsertId();
|
| 311 |
Cel::db()->commit();
|
316 |
Cel::db()->commit();
|
| Line 529... |
Line 534... |
| 529 |
}
|
534 |
}
|
| Line 530... |
Line 535... |
| 530 |
|
535 |
|
| 531 |
/*
|
536 |
/*
|
| 532 |
* charge un groupe de lignes
|
537 |
* charge un groupe de lignes
|
| 533 |
*/
|
538 |
*/
|
| 534 |
static function chargerLignes($cel, $lignes, $colonnes_statiques, &$dernier_ordre) {
|
539 |
static function chargerLignes($cel, $lignes, $colonnes_statiques, &$dernier_ordre, $config) {
|
| 535 |
$enregistrement = NULL;
|
540 |
$enregistrement = NULL;
|
| 536 |
$enregistrements = array();
|
541 |
$enregistrements = array();
|
| 537 |
$toutes_images = array();
|
542 |
$toutes_images = array();
|
| 538 |
$tous_mots_cle = array();
|
543 |
$tous_mots_cle = array();
|
| Line 547... |
Line 552... |
| 547 |
// on a besoin des NULL pour éviter des notice d'index indéfini
|
552 |
// on a besoin des NULL pour éviter des notice d'index indéfini
|
| 548 |
if (! array_filter($ligne, '__anonyme_3')) {
|
553 |
if (! array_filter($ligne, '__anonyme_3')) {
|
| 549 |
continue;
|
554 |
continue;
|
| 550 |
}
|
555 |
}
|
| Line 551... |
Line 556... |
| 551 |
|
556 |
|
| 552 |
if ($enregistrement = self::chargerLigne($ligne, $dernier_ordre, $cel)) {
|
557 |
if ($enregistrement = self::chargerLigne($ligne, $dernier_ordre, $cel, $config)) {
|
| 553 |
// $enregistrements[] = array_merge($colonnes_statiques, $enregistrement);
|
558 |
// $enregistrements[] = array_merge($colonnes_statiques, $enregistrement);
|
| 554 |
if ($enregistrement['latitude'] == NULL && $enregistrement['longitude'] == NULL) {
|
559 |
if ($enregistrement['latitude'] == NULL && $enregistrement['longitude'] == NULL) {
|
| 555 |
if (isset($enregistrement['_champs_etendus']['latitudeDebutRue'])) {
|
560 |
if (isset($enregistrement['_champs_etendus']['latitudeDebutRue'])) {
|
| 556 |
$enregistrement['latitude'] = $enregistrement['_champs_etendus']['latitudeDebutRue'];
|
561 |
$enregistrement['latitude'] = $enregistrement['_champs_etendus']['latitudeDebutRue'];
|
| Line 600... |
Line 605... |
| 600 |
foreach ($enregistrements as &$enregistrement) {
|
605 |
foreach ($enregistrements as &$enregistrement) {
|
| 601 |
$enregistrement = self::sortArrayByArray($enregistrement, self::$ordre_BDD);
|
606 |
$enregistrement = self::sortArrayByArray($enregistrement, self::$ordre_BDD);
|
| 602 |
}
|
607 |
}
|
| 603 |
}
|
608 |
}
|
| Line 604... |
Line 609... |
| 604 |
|
609 |
|
| 605 |
static function stockerMotsCle($enregistrements, $tous_mots_cle, $lastid) {
|
610 |
static function stockerMotsCle($enregistrements, $tous_mots_cle) {
|
| 606 |
$c = 0;
|
611 |
$c = 0;
|
| 607 |
// debug: var_dump($tous_mots_cle);die;
|
612 |
// debug: var_dump($tous_mots_cle);die;
|
| 608 |
foreach ($tous_mots_cle as $v) {
|
613 |
foreach ($tous_mots_cle as $v) {
|
| 609 |
$c += count($v['mots_cle']['to_insert']);
|
614 |
$c += count($v['mots_cle']['to_insert']);
|
| Line 648... |
Line 653... |
| 648 |
Aucune des valeurs présentes dans $enregistrement n'est quotée
|
653 |
Aucune des valeurs présentes dans $enregistrement n'est quotée
|
| 649 |
cad aucune des valeurs retournée par traiter{Espece|Localisation}()
|
654 |
cad aucune des valeurs retournée par traiter{Espece|Localisation}()
|
| 650 |
car ce tableau est passé à un PDO::preparedStatement() qui applique
|
655 |
car ce tableau est passé à un PDO::preparedStatement() qui applique
|
| 651 |
proprement les règle d'échappement.
|
656 |
proprement les règle d'échappement.
|
| 652 |
*/
|
657 |
*/
|
| 653 |
static function chargerLigne($ligne, $dernier_ordre, $cel) {
|
658 |
static function chargerLigne($ligne, $dernier_ordre, $cel, $config) {
|
| 654 |
// évite des notices d'index lors des trigger_error()
|
659 |
// évite des notices d'index lors des trigger_error()
|
| 655 |
$ref_ligne = !empty($ligne[C_NOM_SEL]) ? trim($ligne[C_NOM_SEL]) : '';
|
660 |
$ref_ligne = !empty($ligne[C_NOM_SEL]) ? trim($ligne[C_NOM_SEL]) : '';
|
| Line 656... |
Line 661... |
| 656 |
|
661 |
|
| 657 |
// en premier car le résultat est utile pour
|
662 |
// en premier car le résultat est utile pour
|
| Line 737... |
Line 742... |
| 737 |
if (@$ligne[C_IMAGES]) {
|
742 |
if (@$ligne[C_IMAGES]) {
|
| 738 |
self::traiterImage($ligne[C_IMAGES], $cel->id_utilisateur, $enregistrement);
|
743 |
self::traiterImage($ligne[C_IMAGES], $cel->id_utilisateur, $enregistrement);
|
| 739 |
}
|
744 |
}
|
| Line 740... |
Line 745... |
| 740 |
|
745 |
|
| 741 |
if (@$ligne[C_MOTS_CLES_TEXTE]) {
|
746 |
if (@$ligne[C_MOTS_CLES_TEXTE]) {
|
| 742 |
self::traiterMotsCle($ligne[C_MOTS_CLES_TEXTE], $cel->id_utilisateur, $enregistrement);
|
747 |
self::traiterMotsCle($ligne[C_MOTS_CLES_TEXTE], $cel->id_utilisateur, $enregistrement, $config);
|
| Line 743... |
Line 748... |
| 743 |
}
|
748 |
}
|
| 744 |
|
749 |
|
| 745 |
$champs_etendus = self::traiterChampsEtendus($ligne, self::$indexes_colonnes_etendues);
|
750 |
$champs_etendus = self::traiterChampsEtendus($ligne, self::$indexes_colonnes_etendues);
|
| Line 774... |
Line 779... |
| 774 |
if ($resultat) {
|
779 |
if ($resultat) {
|
| 775 |
$enregistrement['_images'] = $resultat;
|
780 |
$enregistrement['_images'] = $resultat;
|
| 776 |
}
|
781 |
}
|
| 777 |
}
|
782 |
}
|
| Line 778... |
Line 783... |
| 778 |
|
783 |
|
| 779 |
static function traiterMotsCle($str, $id_utilisateur, &$enregistrement) {
|
784 |
static function traiterMotsCle($str, $id_utilisateur, &$enregistrement, $config) {
|
| 780 |
$liste_mots_cle = $liste_mots_cle_recherche = array_map('trim', array_unique(array_filter(explode(',', $str))));
|
785 |
$liste_mots_cle = $liste_mots_cle_recherche = array_map('trim', array_unique(array_filter(explode(',', $str))));
|
| Line 781... |
Line 786... |
| 781 |
array_walk($liste_mots_cle_recherche, array(__CLASS__, '__anonyme_4'));
|
786 |
array_walk($liste_mots_cle_recherche, array(__CLASS__, '__anonyme_4'));
|
| - |
|
787 |
|
| 782 |
|
788 |
#if (self::$gestion_mots_cles == null) {
|
| 783 |
if (self::$gestion_mots_cles == null) {
|
789 |
if (true) {
|
| - |
|
790 |
$gestion_mots_cles = new GestionMotsClesChemin($config, 'obs');
|
| - |
|
791 |
}
|
| 784 |
$gestion_mots_cles = new GestionMotsCles($this->config, 'obs');
|
792 |
|
| - |
|
793 |
// Recherche des IDs des mots-cles
|
| 785 |
}
|
794 |
$mots_cles_ids = $gestion_mots_cles->obtenirIdsMotClesPourMotsCles($liste_mots_cle, $id_utilisateur);
|
| 786 |
$mots_cles_ids = $gestion_mots_cles->obtenirIdsMotClesPourMotsCles($liste_mots_cle, $id_utilisateur);
|
795 |
// Y aura-t-il des nouvaux mots-cles
|
| 787 |
foreach ($mots_cles_ids as $mot_cle) {
|
796 |
foreach ($mots_cles_ids as $mot_cle) {
|
| - |
|
797 |
$resultat[$mot_cle['id_mot_cle']] = $mot_cle['mot_cle'];
|
| - |
|
798 |
}
|
| - |
|
799 |
if ($resultat == null) {
|
| - |
|
800 |
// array_diff() ne gère pas les NULL en entrée
|
| - |
|
801 |
$nouveaux_mots_cles = $liste_mots_cle;
|
| - |
|
802 |
} else {
|
| - |
|
803 |
$nouveaux_mots_cles = array_diff($liste_mots_cle, $resultat);
|
| - |
|
804 |
}
|
| - |
|
805 |
// Ajout des mots-cles inexistants dans l'arbre
|
| - |
|
806 |
if (count($nouveaux_mots_cles) > 0) {
|
| - |
|
807 |
foreach ($nouveaux_mots_cles as $nmc) {
|
| - |
|
808 |
$gestion_mots_cles->insererParChemin($nmc, '/', $id_utilisateur);
|
| - |
|
809 |
}
|
| - |
|
810 |
// Mise à jour des ids de mots-cles après ajout
|
| Line 788... |
Line 811... |
| 788 |
$resultat[$mot_cle['id_mot_cle']] = $mot_cle['mot_cle'];
|
811 |
$mots_cles_ids = $gestion_mots_cles->obtenirIdsMotClesPourMotsCles($liste_mots_cle, $id_utilisateur);
|
| 789 |
}
|
812 |
}
|
| 790 |
|
813 |
|
| 791 |
$enregistrement['mots_cles_texte'] = implode(',', $liste_mots_cle);
|
814 |
$enregistrement['mots_cles_texte'] = implode(',', $liste_mots_cle);
|
| - |
|
815 |
$enregistrement['_mots_cle'] = array(
|
| 792 |
$enregistrement['_mots_cle'] = array(
|
816 |
'existing' => $resultat,
|
| Line 793... |
Line 817... |
| 793 |
'existing' => $resultat,
|
817 |
'to_insert' => $nouveaux_mots_cles
|
| 794 |
'to_insert' => array_diff($liste_mots_cle, $resultat));
|
818 |
);
|