32,6 → 32,7 |
ini_set('xdebug.cli_color', 2); |
date_default_timezone_set('Europe/Paris'); |
require_once 'lib/PHPExcel/Classes/PHPExcel.php'; |
require_once 'bibliotheque/GestionMotsClesChemin.php'; |
|
// nombre d'INSERT à cumuler par requête SQL |
// (= nombre de lignes XLS à bufferiser) |
284,7 → 285,7 |
} |
} |
|
list($enregistrements, $images, $mots_cle, $champs_etendus) = self::chargerLignes($this, $donnees, $this->colonnes_statiques, $dernier_ordre); |
list($enregistrements, $images, $mots_cle, $champs_etendus) = self::chargerLignes($this, $donnees, $this->colonnes_statiques, $dernier_ordre, $config); |
if (! $enregistrements) { |
break; |
} |
307,6 → 308,10 |
|
$stmt->execute($donnees); |
|
# @TODO lier les mots-clées de l'arbre à l'obs nouvellement insérée, sinon seuls les mots-clés texte |
# seront à jour, et ils seront écrasés à la prochaine modification de mots-clés pour cette obs... |
# => nécessite d'insérer les obs une par une pour avoir le dernier id inséré |
|
$dernier_autoinc = Cel::db()->lastInsertId(); |
Cel::db()->commit(); |
|
531,7 → 536,7 |
/* |
* charge un groupe de lignes |
*/ |
static function chargerLignes($cel, $lignes, $colonnes_statiques, &$dernier_ordre) { |
static function chargerLignes($cel, $lignes, $colonnes_statiques, &$dernier_ordre, $config) { |
$enregistrement = NULL; |
$enregistrements = array(); |
$toutes_images = array(); |
549,7 → 554,7 |
continue; |
} |
|
if ($enregistrement = self::chargerLigne($ligne, $dernier_ordre, $cel)) { |
if ($enregistrement = self::chargerLigne($ligne, $dernier_ordre, $cel, $config)) { |
// $enregistrements[] = array_merge($colonnes_statiques, $enregistrement); |
if ($enregistrement['latitude'] == NULL && $enregistrement['longitude'] == NULL) { |
if (isset($enregistrement['_champs_etendus']['latitudeDebutRue'])) { |
602,7 → 607,7 |
} |
} |
|
static function stockerMotsCle($enregistrements, $tous_mots_cle, $lastid) { |
static function stockerMotsCle($enregistrements, $tous_mots_cle) { |
$c = 0; |
// debug: var_dump($tous_mots_cle);die; |
foreach ($tous_mots_cle as $v) { |
650,7 → 655,7 |
car ce tableau est passé à un PDO::preparedStatement() qui applique |
proprement les règle d'échappement. |
*/ |
static function chargerLigne($ligne, $dernier_ordre, $cel) { |
static function chargerLigne($ligne, $dernier_ordre, $cel, $config) { |
// évite des notices d'index lors des trigger_error() |
$ref_ligne = !empty($ligne[C_NOM_SEL]) ? trim($ligne[C_NOM_SEL]) : ''; |
|
739,7 → 744,7 |
} |
|
if (@$ligne[C_MOTS_CLES_TEXTE]) { |
self::traiterMotsCle($ligne[C_MOTS_CLES_TEXTE], $cel->id_utilisateur, $enregistrement); |
self::traiterMotsCle($ligne[C_MOTS_CLES_TEXTE], $cel->id_utilisateur, $enregistrement, $config); |
} |
|
$champs_etendus = self::traiterChampsEtendus($ligne, self::$indexes_colonnes_etendues); |
776,22 → 781,41 |
} |
} |
|
static function traiterMotsCle($str, $id_utilisateur, &$enregistrement) { |
static function traiterMotsCle($str, $id_utilisateur, &$enregistrement, $config) { |
$liste_mots_cle = $liste_mots_cle_recherche = array_map('trim', array_unique(array_filter(explode(',', $str)))); |
array_walk($liste_mots_cle_recherche, array(__CLASS__, '__anonyme_4')); |
|
if (self::$gestion_mots_cles == null) { |
$gestion_mots_cles = new GestionMotsCles($this->config, 'obs'); |
#if (self::$gestion_mots_cles == null) { |
if (true) { |
$gestion_mots_cles = new GestionMotsClesChemin($config, 'obs'); |
} |
|
// Recherche des IDs des mots-cles |
$mots_cles_ids = $gestion_mots_cles->obtenirIdsMotClesPourMotsCles($liste_mots_cle, $id_utilisateur); |
// Y aura-t-il des nouvaux mots-cles |
foreach ($mots_cles_ids as $mot_cle) { |
$resultat[$mot_cle['id_mot_cle']] = $mot_cle['mot_cle']; |
} |
if ($resultat == null) { |
// array_diff() ne gère pas les NULL en entrée |
$nouveaux_mots_cles = $liste_mots_cle; |
} else { |
$nouveaux_mots_cles = array_diff($liste_mots_cle, $resultat); |
} |
// Ajout des mots-cles inexistants dans l'arbre |
if (count($nouveaux_mots_cles) > 0) { |
foreach ($nouveaux_mots_cles as $nmc) { |
$gestion_mots_cles->insererParChemin($nmc, '/', $id_utilisateur); |
} |
// Mise à jour des ids de mots-cles après ajout |
$mots_cles_ids = $gestion_mots_cles->obtenirIdsMotClesPourMotsCles($liste_mots_cle, $id_utilisateur); |
} |
|
$enregistrement['mots_cles_texte'] = implode(',', $liste_mots_cle); |
$enregistrement['_mots_cle'] = array( |
'existing' => $resultat, |
'to_insert' => array_diff($liste_mots_cle, $resultat)); |
'to_insert' => $nouveaux_mots_cles |
); |
} |
|
|