Changeset 94607 in spip-zone for _plugins_/fusion_spip


Ignore:
Timestamp:
Jan 15, 2016, 6:04:23 PM (4 years ago)
Author:
kent1@…
Message:

Passer par charger_fonction sur les fonctions fusion_spip_* permettant de les surcharger (ajout de _dist pour cela)

_q remplacé par sql_quote

Tester la présence des tables et ne rien faire si non présente

Location:
_plugins_/fusion_spip/trunk
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/fusion_spip/trunk/formulaires/fusion_spip.php

    r85805 r94607  
    5151                $bases = bases_referencees(_FILE_CONNECT_TMP);
    5252                $connect = $bases[$base];
    53 
    54                 $principales = fusion_spip_lister_tables_principales($connect, false);
    55                 $auxiliaires = fusion_spip_lister_tables_auxiliaires($connect, false, $traite_stats, $traite_referers);
     53               
     54                $lister_tables_principales = charger_fonction('lister_tables_principales','fusion_spip');
     55                $principales = $lister_tables_principales($connect, false);
     56                $lister_tables_auxiliaires = charger_fonction('lister_tables_auxiliaires','fusion_spip');
     57                $auxiliaires = $lister_tables_auxiliaires($connect, false, $traite_stats, $traite_referers);
    5658
    5759                // vérifier la version de la base source
     
    6769                // vérifier la conformité du shéma de la base source
    6870                if( empty($erreurs) && _request('confirme_warning') != 'on' ){
    69                         $erreurs_shema = fusion_spip_comparer_shemas($connect, $principales, $auxiliaires);
     71                        $comparer_shemas = charger_fonction('comparer_shemas','fusion_spip');
     72                        $erreurs_shema = $comparer_shemas($connect, $principales, $auxiliaires);
    7073                        if (count($erreurs_shema)) {
    7174                                $erreurs['warning_shema'] = '- '.join('<br>- ', $erreurs_shema);
     
    119122                $time_start = microtime(true);
    120123
    121         //commençons par vider la table de traitement fusion_spip pour pouvoir faire le comptage en fin de traiter
    122         sql_delete("spip_fusion_spip");
    123         fusion_spip_log('Démarrage de la fusion', 'fusion_spip_'.$connect);
    124 
    125                 $principales = fusion_spip_lister_tables_principales($connect, true);
    126                 $auxiliaires = fusion_spip_lister_tables_auxiliaires($connect, true, $traite_stats, $traite_referers);
    127                 $cles_primaires = fusion_spip_lister_cles_primaires($principales);
     124                //commençons par vider la table de traitement fusion_spip pour pouvoir faire le comptage en fin de traiter
     125                sql_delete("spip_fusion_spip");
     126                fusion_spip_log('Démarrage de la fusion', 'fusion_spip_'.$connect);
     127
     128                $lister_tables_principales = charger_fonction('lister_tables_principales','fusion_spip');
     129                $principales = $lister_tables_principales($connect, false);
     130                $lister_tables_auxiliaires = charger_fonction('lister_tables_auxiliaires','fusion_spip');
     131                $auxiliaires = $lister_tables_auxiliaires($connect, false, $traite_stats, $traite_referers);
     132                $lister_cles_primaires = charger_fonction('lister_cles_primaires','fusion_spip');
     133                $cles_primaires = $lister_cles_primaires($principales);
    128134
    129135                // insérer les objets principaux
     136                $inserer_table_principale = charger_fonction('inserer_table_principale','fusion_spip');
    130137                foreach ($principales as $nom_table => $shema) {
    131                         fusion_spip_inserer_table_principale($nom_table, $shema, $secteur, $connect);
     138                        $inserer_table_principale($nom_table, $shema, $secteur, $connect);
    132139                }
    133140
    134141                // mettre à jour les liens entre objets principaux
     142                $liaisons_table_principale = charger_fonction('liaisons_table_principale','fusion_spip');
    135143                foreach ($principales as $nom_table => $shema) {
    136                         fusion_spip_liaisons_table_principale($nom_table, $shema, $cles_primaires, $connect);
     144                        $liaisons_table_principale($nom_table, $shema, $cles_primaires, $connect);
    137145                }
    138146
    139147                // mise à jour des liaisons de vignettes de documents
    140                 fusion_spip_vignettes_documents($connect);
     148                $vignettes_documents = charger_fonction('vignettes_documents','fusion_spip');
     149                $vignettes_documents($connect);
    141150
    142151                // mise à jour des statuts des rubriques
     
    145154
    146155                // insérer les tables auxiliaires
     156                $inserer_table_auxiliaire = charger_fonction('inserer_table_auxiliaire','fusion_spip');
    147157                foreach ($auxiliaires as $nom_table => $shema) {
    148                         fusion_spip_inserer_table_auxiliaire($nom_table, $shema, $cles_primaires, $connect);
     158                        $inserer_table_auxiliaire($nom_table, $shema, $cles_primaires, $connect);
    149159                }
    150160
    151161                // importer un par un les documents et logos de la source
    152162                if ($img_dir) {
    153                         fusion_spip_import_documents($img_dir, $connect);
     163                        $import_documents = charger_fonction('import_documents','fusion_spip');
     164                        $import_documents($img_dir, $connect);
    154165                }
    155166
    156167                // mise à jour des liens internes [...->...]
    157                 fusion_spip_maj_liens_internes($principales, $connect);
     168                $maj_liens_internes = charger_fonction('maj_liens_internes','fusion_spip');
     169                $maj_liens_internes($principales, $connect);
    158170
    159171                // mise à jour des modèles <docXX> <imgXX> <embXX> ...
    160                 fusion_spip_maj_modeles($principales, $connect);
     172                $maj_modeles = charger_fonction('maj_modeles','fusion_spip');
     173                $maj_modeles($principales, $connect);
    161174
    162175                // déclarer les url uniques importées avec "perma=1"
    163                 fusion_spip_maj_perma_urls($connect);
     176                $maj_perma_urls = charger_fonction('maj_perma_urls','fusion_spip');
     177                $maj_perma_urls($connect);
    164178
    165179                // appel d'une fonction de traitements perso (déclarée dans mes_options.php par exemple)
     
    178192
    179193                // Un résumé des objets importés
    180                 $res            = sql_select('objet, count(*) as count', 'spip_fusion_spip', '', 'objet');
     194                $res = sql_select('objet, count(*) as count', 'spip_fusion_spip', '', 'objet');
    181195                $resume_imports = array();
    182196                while( $ligne = sql_fetch($res) ) {
  • _plugins_/fusion_spip/trunk/inc/fusion_spip.php

    r85144 r94607  
    88 * @return array liste des tables
    99 */
    10 function fusion_spip_lister_tables_principales($connect, $skip_non_existing = false) {
     10function fusion_spip_lister_tables_principales_dist($connect, $skip_non_existing = false) {
    1111
    1212        // @todo : lire les descriptions des tables sources plutot que locales ?
     
    4545 * @return array liste des tables
    4646 */
    47 function fusion_spip_lister_tables_auxiliaires($connect, $skip_non_existing = false, $stats = false, $referers = false) {
     47function fusion_spip_lister_tables_auxiliaires_dist($connect, $skip_non_existing = false, $stats = false, $referers = false) {
    4848
    4949        // @todo : lire les descriptions des tables sources plutot que locales ?
     
    8484 * @return array
    8585 */
    86 function fusion_spip_lister_cles_primaires($tables) {
     86function fusion_spip_lister_cles_primaires_dist($tables) {
    8787        $cles_primaires = array();
    8888        foreach ($tables as $nom_table => $shema) {
     
    105105 * @return array liste des erreurs
    106106 */
    107 function fusion_spip_comparer_shemas($connect, $principales, $auxiliaires) {
     107function fusion_spip_comparer_shemas_dist($connect, $principales, $auxiliaires) {
    108108
    109109        $erreurs = array();
     
    131131 * @param string $connect nom du connecteur
    132132 */
    133 function fusion_spip_inserer_table_principale($nom_table, $shema, $secteur, $connect) {
    134         $time_start = microtime(true);
    135 
    136         // liste des champs à recopier
    137         // $champs_select = array_keys($shema['field']);
    138 
    139         // on a déjà signalé par un warning que des champs manquaient dans la table source
    140         // on va travailler sur l'intersection des champs de la table source et hote
    141         $shema_source = sql_showtable($nom_table, false, $connect);
    142         $champs_select = array_intersect(array_keys($shema['field']), array_keys($shema_source['field']));
    143 
    144         // Retrouve la clé primaire à partir du nom d'objet ou de table
    145         $nom_id_objet = id_table_objet($nom_table);
    146         // Retrouve le type d'objet à partir du nom d'objet ou de table
    147         $objet = objet_type($nom_table);
    148 
    149         // selectionner tous les objets d'une table à importer
    150         $res = sql_select($champs_select, $nom_table, '', '', '', '', '', $connect);
    151         $count = sql_count($res, $connect);
    152         $fusion_spips = array();
    153         while ($obj_import = sql_fetch($res, $connect)) {
    154 
    155                 // garder l'id original
    156                 $id_origine = $obj_import[$nom_id_objet];
    157 
    158                 // mais ne pas l'insérer dans l'objet importé
    159                 // (sinon doublon sur la clé primaire)
    160                 unset($obj_import[$nom_id_objet]);
    161 
    162                 // réaffecter les secteurs et mettre à jour la profondeur
    163                 if ($secteur) {
    164                         if (in_array('id_secteur', array_keys($shema['field']))) {
    165                                 $obj_import['id_secteur'] = $secteur;
    166                         }
    167                         if ($objet == 'rubrique' && $obj_import['id_parent'] == 0) {
    168                                 $obj_import['id_parent'] = $secteur;
    169                         }
    170                         if ($objet == 'rubrique') {
    171                                 $obj_import['profondeur']++;
    172                         }
    173                 }
    174 
    175                 // inserer localement l'objet
    176                 $id_final = sql_insertq($nom_table, $obj_import);
    177 
    178                 $fusion_spips[] = array(
    179                         'site_origine' => $connect,
    180                         'objet' => $objet,
    181                         'id_origine' => $id_origine,
    182                         'id_final' => $id_final,
    183                 );
    184 
    185         }
    186         // garder les traces id_origine / id_final
    187         if (count($fusion_spips)) {
    188                 sql_insertq_multi('spip_fusion_spip', $fusion_spips);
    189         }
    190 
    191         $time_end = microtime(true);
    192         $time = $time_end - $time_start;
    193         fusion_spip_log('Table '.$nom_table.' traitée ('.$count.') : '.number_format($time, 2).' secondes)', 'fusion_spip_'.$connect);
     133function fusion_spip_inserer_table_principale_dist($nom_table, $shema, $secteur, $connect) {
     134        if(isset($shema['field']) && is_array($shema['field'])){
     135                $time_start = microtime(true);
     136       
     137                // liste des champs à recopier
     138                // $champs_select = array_keys($shema['field']);
     139       
     140                // on a déjà signalé par un warning que des champs manquaient dans la table source
     141                // on va travailler sur l'intersection des champs de la table source et hote
     142                $shema_source = sql_showtable($nom_table, false, $connect);
     143                if(is_array($shema_source['field'])){
     144                        $champs_select = array_intersect(array_keys($shema['field']), array_keys($shema_source['field']));
     145       
     146                        // Retrouve la clé primaire à partir du nom d'objet ou de table
     147                        $nom_id_objet = id_table_objet($nom_table);
     148                        // Retrouve le type d'objet à partir du nom d'objet ou de table
     149                        $objet = objet_type($nom_table);
     150               
     151                        // selectionner tous les objets d'une table à importer
     152                        $res = sql_select($champs_select, $nom_table, '', '', '', '', '', $connect);
     153                        $count = sql_count($res, $connect);
     154                        $fusion_spips = array();
     155                        while ($obj_import = sql_fetch($res, $connect)) {
     156               
     157                                // garder l'id original
     158                                $id_origine = $obj_import[$nom_id_objet];
     159               
     160                                // mais ne pas l'insérer dans l'objet importé
     161                                // (sinon doublon sur la clé primaire)
     162                                unset($obj_import[$nom_id_objet]);
     163               
     164                                // réaffecter les secteurs et mettre à jour la profondeur
     165                                if ($secteur) {
     166                                        if (in_array('id_secteur', array_keys($shema['field']))) {
     167                                                $obj_import['id_secteur'] = $secteur;
     168                                        }
     169                                        if ($objet == 'rubrique' && $obj_import['id_parent'] == 0) {
     170                                                $obj_import['id_parent'] = $secteur;
     171                                        }
     172                                        if ($objet == 'rubrique') {
     173                                                $obj_import['profondeur']++;
     174                                        }
     175                                }
     176               
     177                                // inserer localement l'objet
     178                                $id_final = sql_insertq($nom_table, $obj_import);
     179               
     180                                $fusion_spips[] = array(
     181                                        'site_origine' => $connect,
     182                                        'objet' => $objet,
     183                                        'id_origine' => $id_origine,
     184                                        'id_final' => $id_final,
     185                                );
     186               
     187                        }
     188                        // garder les traces id_origine / id_final
     189                        if (count($fusion_spips)) {
     190                                sql_insertq_multi('spip_fusion_spip', $fusion_spips);
     191                        }
     192       
     193                        $time_end = microtime(true);
     194                        $time = $time_end - $time_start;
     195                        fusion_spip_log('Table '.$nom_table.' traitée ('.$count.') : '.number_format($time, 2).' secondes)', 'fusion_spip_'.$connect);
     196                } else {
     197                        fusion_spip_log('Table '.$nom_table.' inexistante sur le site distant)', 'fusion_spip_'.$connect);
     198                }
     199        }
     200        else{
     201                fusion_spip_log('Schema '.$nom_table.' n est pas un tableau)', 'fusion_spip_'.$connect);
     202        }
    194203
    195204}
     
    203212 * @param string $connect nom du connecteur
    204213 */
    205 function fusion_spip_inserer_table_auxiliaire($nom_table, $shema, $cles_primaires, $connect) {
     214function fusion_spip_inserer_table_auxiliaire_dist($nom_table, $shema, $cles_primaires, $connect) {
    206215        $time_start = microtime(true);
    207216
     
    220229                foreach ($shema['field'] as $nom_champ => $valeur_champ) {
    221230                        if (in_array($nom_champ, $cles_primaires)) {
    222                                 $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '._q($connect).' and id_origine = '._q($obj_import[$nom_champ]).' and objet='._q(objet_type($nom_champ))));
     231                                $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '.sql_quote($connect).' and id_origine = '.sql_quote($obj_import[$nom_champ]).' and objet='.sql_quote(objet_type($nom_champ))));
    223232                                // mettre à jour l'id de l'objet lié
    224233                                if ($nouveau_id) {
     
    234243                // retrouver l'id_final de l'objet lié
    235244                if ($shema['field']['id_objet'] && $shema['field']['objet']) {
    236                         $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '._q($connect).' and id_origine = '._q($obj_import['id_objet']).' and objet='._q($obj_import['objet'])));
     245                        $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '.sql_quote($connect).' and id_origine = '.sql_quote($obj_import['id_objet']).' and objet='.sql_quote($obj_import['objet'])));
    237246                        // mettre à jour l'id de l'objet lié
    238247                        if ($nouveau_id) {
     
    246255                // cas particulier pour spip_urls (id_objet / type au lieu de id_objet / objet)
    247256                if ($nom_table == 'spip_urls' && $shema['field']['id_objet'] && $shema['field']['type']) {
    248                         $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '._q($connect).' and id_origine = '._q($obj_import['id_objet']).' and objet='._q($obj_import['type'])));
     257                        $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '.sql_quote($connect).' and id_origine = '.sql_quote($obj_import['id_objet']).' and objet='.sql_quote($obj_import['type'])));
    249258                        // mettre à jour l'id de l'objet lié
    250259                        if ($nouveau_id) {
     
    260269                                // cas particulier pour la table spip_visites
    261270                                // il y a peut être déjà des visites pour cette date
    262                                 $res_visites = sql_fetsel('*', 'spip_visites', 'date='._q($obj_import['date']));
     271                                $res_visites = sql_fetsel('*', 'spip_visites', 'date='.sql_quote($obj_import['date']));
    263272                                if ($res_visites['date']) {
    264                                         sql_updateq('spip_visites', array('visites' => $res_visites['visites'] + $obj_import['visites']), 'date='._q($obj_import['date']));
     273                                        sql_updateq('spip_visites', array('visites' => $res_visites['visites'] + $obj_import['visites']), 'date='.sql_quote($obj_import['date']));
    265274                                } else {
    266275                                        sql_insertq($nom_table, $obj_import);
     
    287296 * @param string $connect nom du connecteur
    288297 */
    289 function fusion_spip_liaisons_table_principale($nom_table, $shema, $cles_primaires, $connect) {
     298function fusion_spip_liaisons_table_principale_dist($nom_table, $shema, $cles_primaires, $connect) {
    290299        $time_start = microtime(true);
    291300
     
    299308        unset($shema['field'][$cleprimaire]);
    300309
     310        $mettre_a_jour_liaisons = charger_fonction('mettre_a_jour_liaisons','fusion_spip');
     311
    301312        // pour chaque champ de la table, et si ce champ est une clé primaire d'un autre objet,
    302313        // on met à jour les liaisons (par exemple mettre à jour id_rubrique dans spip_articles)
    303314        foreach ($shema['field'] as $nom_champ => $valeur_champ) {
    304 
    305315                if (in_array($nom_champ, $cles_primaires)) {
    306316                        $objet_liaison = objet_type($nom_champ);
    307317                        $cle_liaison = $nom_champ;
    308                         fusion_spip_mettre_a_jour_liaisons($nom_table, $objet, $cleprimaire, $objet_liaison, $cle_liaison, $connect);
    309                 }
    310 
     318                        $mettre_a_jour_liaisons($nom_table, $objet, $cleprimaire, $objet_liaison, $cle_liaison, $connect);
     319                }
    311320        }
    312321
     
    314323        // mettre à jour les liaisons (par exemple spip_forum)
    315324        if ($shema['field']['id_objet'] && $shema['field']['objet']) {
    316                 fusion_spip_mettre_a_jour_liaisons_par_objet($nom_table, $objet, $cleprimaire, $connect);
     325                $mettre_a_jour_liaisons_par_objet = charger_fonction('mettre_a_jour_liaisons_par_objet','fusion_spip');
     326                $mettre_a_jour_liaisons_par_objet($nom_table, $objet, $cleprimaire, $connect);
    317327        }
    318328
    319329        // cas particulier : pour les rubriques, mettre à jour id_parent
    320330        if ($objet == 'rubrique') {
    321                 fusion_spip_mettre_a_jour_liaisons('spip_rubriques', 'rubrique', 'id_rubrique', 'rubrique', 'id_parent', $connect);
     331                $mettre_a_jour_liaisons('spip_rubriques', 'rubrique', 'id_rubrique', 'rubrique', 'id_parent', $connect);
    322332        }
    323333
    324334        // cas particulier : pour les forums, mettre à jour id_parent et id_thread
    325335        if ($objet == 'forum') {
    326                 fusion_spip_mettre_a_jour_liaisons('spip_forum', 'forum', 'id_forum', 'forum', 'id_parent', $connect);
    327                 fusion_spip_mettre_a_jour_liaisons('spip_forum', 'forum', 'id_forum', 'forum', 'id_thread', $connect);
     336                $mettre_a_jour_liaisons('spip_forum', 'forum', 'id_forum', 'forum', 'id_parent', $connect);
     337                $mettre_a_jour_liaisons('spip_forum', 'forum', 'id_forum', 'forum', 'id_thread', $connect);
    328338        }
    329339
     
    346356 * @param string $connect
    347357 */
    348 function fusion_spip_mettre_a_jour_liaisons($table, $objet, $cle_primaire, $objet_liaison, $cle_liaison, $connect) {
    349 
    350         $res = sql_select('id_origine,id_final', 'spip_fusion_spip', 'objet='._q($objet).' and site_origine='._q($connect));
     358function fusion_spip_mettre_a_jour_liaisons_dist($table, $objet, $cle_primaire, $objet_liaison, $cle_liaison, $connect) {
     359
     360        $res = sql_select('id_origine,id_final', 'spip_fusion_spip', 'objet='.sql_quote($objet).' and site_origine='.sql_quote($connect));
    351361        while ($obj_import = sql_fetch($res)) {
    352362                // retrouver l'id_liaison original
    353                 $ancien_id = intval(sql_getfetsel($cle_liaison, $table, $cle_primaire.' = '._q($obj_import['id_origine']), '', '', '', '', $connect));
     363                $ancien_id = intval(sql_getfetsel($cle_liaison, $table, $cle_primaire.' = '.sql_quote($obj_import['id_origine']), '', '', '', '', $connect));
    354364                if ($ancien_id) {
    355365                        // déterminer le nouveau lien
    356                         $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '._q($connect).' and id_origine = '._q($ancien_id).' and objet='._q($objet_liaison)));
     366                        $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '.sql_quote($connect).' and id_origine = '.sql_quote($ancien_id).' and objet='.sql_quote($objet_liaison)));
    357367                        // mettre à jour l'objet importé
    358368                        if ($nouveau_id) {
     
    360370                                        $table,
    361371                                        array($cle_liaison => $nouveau_id),
    362                                         $cle_primaire.' = '._q($obj_import['id_final'])
     372                                        $cle_primaire.' = '.sql_quote($obj_import['id_final'])
    363373                                );
    364374                        }
     
    376386 * @param string $connect
    377387 */
    378 function fusion_spip_mettre_a_jour_liaisons_par_objet($table, $objet, $cle_primaire, $connect) {
    379 
    380         $res = sql_select('id_origine,id_final', 'spip_fusion_spip', 'objet='._q($objet).' and site_origine='._q($connect));
     388function fusion_spip_mettre_a_jour_liaisons_par_objet_dist($table, $objet, $cle_primaire, $connect) {
     389
     390        $res = sql_select('id_origine,id_final', 'spip_fusion_spip', 'objet='.sql_quote($objet).' and site_origine='.sql_quote($connect));
    381391        while ($obj_import = sql_fetch($res)) {
    382392                // retrouver l'id_liaison original
    383                 $ancien_objet = sql_fetsel(array('id_objet', 'objet'), $table, $cle_primaire.' = '._q($obj_import['id_origine']), '', '', '', '', $connect);
     393                $ancien_objet = sql_fetsel(array('id_objet', 'objet'), $table, $cle_primaire.' = '.sql_quote($obj_import['id_origine']), '', '', '', '', $connect);
    384394                if ($ancien_objet['id_objet']) {
    385395                        // déterminer le nouveau lien
    386                         $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '._q($connect).' and id_origine = '._q($ancien_objet['id_objet']).' and objet='._q($ancien_objet['objet'])));
     396                        $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '.sql_quote($connect).' and id_origine = '.sql_quote($ancien_objet['id_objet']).' and objet='.sql_quote($ancien_objet['objet'])));
    387397                        // mettre à jour l'objet importé
    388398                        if ($nouveau_id) {
     
    390400                                        $table,
    391401                                        array('id_objet' => $nouveau_id),
    392                                         $cle_primaire.' = '._q($obj_import['id_final'])
     402                                        $cle_primaire.' = '.sql_quote($obj_import['id_final'])
    393403                                );
    394404                        }
     
    405415 * @param string $connect base source
    406416 */
    407 function fusion_spip_maj_perma_urls($connect) {
    408         $res = sql_select('id_origine, objet, id_final', 'spip_fusion_spip', 'site_origine='._q($connect));
     417function fusion_spip_maj_perma_urls_dist($connect) {
     418        $res = sql_select('id_origine, objet, id_final', 'spip_fusion_spip', 'site_origine='.sql_quote($connect));
    409419        while ($obj_import = sql_fetch($res)) {
    410                 $urls = sql_allfetsel('*', 'spip_urls', 'id_objet='._q($obj_import['id_final']).' and type='._q($obj_import['objet']));
     420                $urls = sql_allfetsel('*', 'spip_urls', 'id_objet='.sql_quote($obj_import['id_final']).' and type='.sql_quote($obj_import['objet']));
    411421                if (count($urls) == 1) {
    412422                        sql_updateq(
    413423                                'spip_urls',
    414424                                array('perma' => 1),
    415                                 'id_objet='._q($obj_import['id_final']).' and type='._q($obj_import['objet'])
     425                                'id_objet='.sql_quote($obj_import['id_final']).' and type='.sql_quote($obj_import['objet'])
    416426                        );
    417427                }
     
    424434 * @param string $connect base source
    425435 */
    426 function fusion_spip_vignettes_documents($connect) {
     436function fusion_spip_vignettes_documents_dist($connect) {
    427437        $time_start = microtime(true);
    428438
     
    430440                'a.id_final, d.id_vignette',
    431441                'spip_fusion_spip a join spip_documents d on (a.id_final = d.id_document)',
    432                 'objet="document" and site_origine='._q($connect).' and id_vignette <> 0'
     442                'objet="document" and site_origine='.sql_quote($connect).' and id_vignette <> 0'
    433443        );
    434444        while ($obj_import = sql_fetch($res)) {
    435                 $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '._q($connect).' and id_origine = '._q($obj_import['id_vignette']).' and objet="document"'));
     445                $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '.sql_quote($connect).' and id_origine = '.sql_quote($obj_import['id_vignette']).' and objet="document"'));
    436446                if ($nouveau_id) {
    437447                        sql_updateq(
    438448                                'spip_documents',
    439449                                array('id_vignette' => $nouveau_id),
    440                                 'id_document='._q($obj_import['id_final'])
     450                                'id_document='.sql_quote($obj_import['id_final'])
    441451                        );
    442452                } else {
     
    445455                                'spip_documents',
    446456                                array('id_vignette' => 0),
    447                                 'id_document='._q($obj_import['id_final'])
     457                                'id_document='.sql_quote($obj_import['id_final'])
    448458                        );
    449459                }
     
    461471 * @param string $connect base source
    462472 */
    463 function fusion_spip_import_documents($img_dir, $connect) {
     473function fusion_spip_import_documents_dist($img_dir, $connect) {
     474        fusion_spip_log('Traitement du répertoire IMG : '.$img_dir, 'fusion_spip_documents_'.$connect);
    464475        include_spip('inc/documents');
    465476        $time_start = microtime(true);
     
    475486                'a.id_final, d.fichier',
    476487                'spip_fusion_spip a join spip_documents d on (a.id_final = d.id_document)',
    477                 'objet="document" and site_origine='._q($connect)
     488                'objet="document" and site_origine='.sql_quote($connect)
    478489        );
    479490        while ($obj_import = sql_fetch($res)) {
     
    489500                        // @todo: traiter les fichiers déja existant (les renommer)
    490501                        if (file_exists($source_doc) && copy($source_doc, $dest_doc)) {
     502                                fusion_spip_log('Document copié : '.$source_doc.' > '.$dest_doc, 'fusion_spip_documents_'.$connect);
    491503                                $documents_importes++;
    492                                 //fusion_spip_log('Document copié : '.$source_doc.' > '.$dest_doc, 'fusion_spip_documents_'.$connect);
    493504                        } else {
    494                                 //fusion_spip_log('Document échec : '.$source_doc.' > '.$dest_doc, 'fusion_spip_documents_'.$connect);
     505                                fusion_spip_log(_DIR_IMG.$ext.'/'.basename($source_doc), 'fusion_spip_documents_'.$connect);
     506                               
     507                                if(file_exists(_DIR_IMG.$ext.'/'.basename($source_doc))){
     508                                        fusion_spip_log('Document échec : le document existe déjà '.$source_doc.' > '.$dest_doc, 'fusion_spip_documents_'.$connect);
     509                                }
     510                                else{
     511                                        fusion_spip_log('Document échec : '.$source_doc.' > '.$dest_doc, 'fusion_spip_documents_'.$connect);
     512                                }
    495513                        }
    496514                }
     
    519537                $id_objet = preg_replace('#([^0-9])*#', '', basename($logo));
    520538
    521                 $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '._q($connect).' and id_origine = '._q($id_objet).' and objet='._q($objet_logo)));
     539                $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'site_origine = '.sql_quote($connect).' and id_origine = '.sql_quote($id_objet).' and objet='.sql_quote($objet_logo)));
    522540                if ($nouveau_id) {
    523541                        $dest_logo = _DIR_IMG.$type_logo.$nouveau_id.'.'.$ext_logo;
     
    525543                        if (copy($logo, $dest_logo)) {
    526544                                $logos_importes++;
    527                                 //fusion_spip_log('Logo copié : '.$logo.' > '.$dest_logo, 'fusion_spip_documents_'.$connect);
     545                                fusion_spip_log('Logo copié : '.$logo.' > '.$dest_logo, 'fusion_spip_documents_'.$connect);
    528546                        } else {
    529                                 //fusion_spip_log('Logo échec : '.$logo.' > '.$dest_logo, 'fusion_spip_documents_'.$connect);
     547                                fusion_spip_log('Logo échec : '.$logo.' > '.$dest_logo, 'fusion_spip_documents_'.$connect);
    530548                        }
    531549                } else {
    532550                        // objet lié pas trouvé ? logo obsolète, on ne fait rien
    533                         //fusion_spip_log($logo.' : liaison pas trouvée', 'fusion_spip_documents_'.$connect);
     551                        fusion_spip_log($logo.' : liaison pas trouvée', 'fusion_spip_documents_'.$connect);
    534552                }
    535553        }
     
    546564 * @param string $connect base source
    547565 */
    548 function fusion_spip_maj_liens_internes($principales, $connect) {
     566function fusion_spip_maj_liens_internes_dist($principales, $connect) {
    549567        $time_start = microtime(true);
    550568        $objets_mis_a_jour = 0;
    551569
    552         $objets_sources = fusion_spip_determiner_champs_texte($principales);
     570        $determiner_champs_texte = charger_fonction('determiner_champs_texte','fusion_spip');
     571        $objets_sources = $determiner_champs_texte($principales);
    553572
    554573        // liens possibles et objets auxquels ils se rapportent
     
    591610                        $objets_import = sql_allfetsel(
    592611                                'o.'.$cle_primaire.', '.$select,
    593                                 'spip_fusion_spip a join '.$table.' o on (a.id_final = o.'.$cle_primaire.' and a.objet="'.$objet.'" and a.site_origine='._q($connect).')',
     612                                'spip_fusion_spip a join '.$table.' o on (a.id_final = o.'.$cle_primaire.' and a.objet="'.$objet.'" and a.site_origine='.sql_quote($connect).')',
    594613                                $where
    595614                        );
     
    607626                                                        $type_lien = preg_replace('#[0-9]*#', '', $lien_trouve[4]);
    608627                                                        $objet_lien = $objets_liens[$type_lien];
    609                                                         $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'id_origine='._q($id_origine_lien).' and objet="'.$objet_lien.'" and site_origine="'.$connect.'"'));
     628                                                        $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'id_origine='.sql_quote($id_origine_lien).' and objet="'.$objet_lien.'" and site_origine="'.$connect.'"'));
    610629                                                        if ($nouveau_id) {
    611630                                                                $pattern_cherche = '#\[([^][]*?([[]\w*[]][^][]*)*)->'.$type_lien.$id_origine_lien.'\]#';
     
    620639                                }
    621640                                if ($update_array) {
    622                                         sql_updateq($table, $update_array, $cle_primaire.'='._q($obj_import[$cle_primaire]));
     641                                        sql_updateq($table, $update_array, $cle_primaire.'='.sql_quote($obj_import[$cle_primaire]));
    623642                                        $objets_mis_a_jour++;
    624643                                }
     
    638657 * @param string $connect base source
    639658 */
    640 function fusion_spip_maj_modeles($principales, $connect) {
     659function fusion_spip_maj_modeles_dist($principales, $connect) {
    641660        $time_start = microtime(true);
    642661        $objets_mis_a_jour = 0;
    643662
    644         $objets_sources = fusion_spip_determiner_champs_texte($principales);
     663        $determiner_champs_texte = charger_fonction('determiner_champs_texte','fusion_spip');
     664        $objets_sources = $determiner_champs_texte($principales);
    645665
    646666        if (function_exists('medias_declarer_tables_objets_sql')) {
     
    674694                        $res = sql_select(
    675695                                'o.'.$cle_primaire.', '.$select,
    676                                 'spip_fusion_spip a join '.$table.' o on (a.id_final = o.'.$cle_primaire.' and a.objet="'.$objet.'" and a.site_origine='._q($connect).')',
     696                                'spip_fusion_spip a join '.$table.' o on (a.id_final = o.'.$cle_primaire.' and a.objet="'.$objet.'" and a.site_origine='.sql_quote($connect).')',
    677697                                $where
    678698                        );
     
    687707                                                        $id_origine_lien = $lien_trouve[2];
    688708                                                        $modele = $lien_trouve[1];
    689                                                         $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'id_origine='._q($id_origine_lien).' and objet="document" and site_origine="'.$connect.'"'));
     709                                                        $nouveau_id = intval(sql_getfetsel('id_final', 'spip_fusion_spip', 'id_origine='.sql_quote($id_origine_lien).' and objet="document" and site_origine="'.$connect.'"'));
    690710                                                        if ($nouveau_id) {
    691711                                                                $pattern_cherche = '#<'.$modele.$id_origine_lien.'#';
     
    698718                                }
    699719                                if ($update_array) {
    700                                         sql_updateq($table, $update_array, $cle_primaire.'='._q($obj_import[$cle_primaire]));
     720                                        sql_updateq($table, $update_array, $cle_primaire.'='.sql_quote($obj_import[$cle_primaire]));
    701721                                        $objets_mis_a_jour++;
    702722                                }
     
    716736 * @return array
    717737 */
    718 function fusion_spip_determiner_champs_texte($tables) {
     738function fusion_spip_determiner_champs_texte_dist($tables) {
    719739        $objets = array();
    720740        foreach ($tables as $nom_table => $shema_table) {
Note: See TracChangeset for help on using the changeset viewer.