Subversion Repositories eFlore/Applications.cel

Compare Revisions

Ignore whitespace Rev 3076 → Rev 3077

/trunk/jrest/services/ImportXLS.php
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
);
}