Changeset 73276 in spip-zone


Ignore:
Timestamp:
Jun 5, 2013, 3:08:24 PM (6 years ago)
Author:
nicolas.dorigny@…
Message:

suite commit précédent, ne pas traiter les tables de l'hote qui n'existent pas dans la base importée

Location:
_plugins_/fusion_spip/trunk
Files:
4 edited

Legend:

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

    r73275 r73276  
    2020                                <p><:fusion_spip:base_desc:></p>
    2121                        </li>
    22                         #SET{warning,#ENV**{erreurs}|table_valeur{warning_base_source}}
    23                         [<li class="editer_confirme_warning [ (#GET{warning}|oui)erreur]">
    24                                 <span class='erreur_message'>(#GET{warning})</span>
     22                        #SET{warning_shema,#ENV**{erreurs}|table_valeur{warning_shema}}
     23                        [<li class="editer_confirme_warning [ (#GET{warning_shema}|oui)erreur]">
     24                                <span class='erreur_message'>(#GET{warning_shema})</span>
    2525                                <input type="checkbox" name="confirme_warning" id="confirme_warning" />
    2626                                <label for="confirme_warning"><:fusion_spip:confirme_warning:></label>
  • _plugins_/fusion_spip/trunk/formulaires/fusion_spip.php

    r73275 r73276  
    4040        $erreurs = array();
    4141
     42        $base = _request('base');
    4243        $traite_stats = (_request('stats') == 'on' ? true : false);
    4344        $traite_referers = (_request('referers') == 'on' ? true : false);
    4445        $traite_versions = (_request('versions') == 'on' ? true : false);
     46
     47        $bases = bases_referencees(_FILE_CONNECT_TMP);
     48        $connect = $bases[$base];
     49
     50        $principales = fusion_spip_lister_tables_principales($connect, false);
     51        $auxiliaires = fusion_spip_lister_tables_auxiliaires($connect, false, $traite_stats, $traite_referers, $traite_versions);
    4552
    4653        // vérifier champs obligatoires
     
    5057        else {
    5158                if( _request('confirme_warning') != 'on' ){
    52                         $erreurs_shema = fusion_spip_comparer_shemas(_request('base'), $traite_stats, $traite_referers, $traite_versions);
     59                        $erreurs_shema = fusion_spip_comparer_shemas($connect, $principales, $auxiliaires);
    5360                        if (count($erreurs_shema)) {
    54                                 $erreurs['warning_base_source'] = '- '.join('<br>- ', $erreurs_shema);
     61                                $erreurs['warning_shema'] = '- '.join('<br>- ', $erreurs_shema);
    5562                        }
    5663                }
    57 
    5864        }
    5965
     
    103109                spip_log('Démarrage de la fusion', 'fusion_spip_'.$connect);
    104110
    105 
    106                 $principales = fusion_spip_lister_tables_principales();
    107                 $auxiliaires = fusion_spip_lister_tables_auxiliaires($traite_stats, $traite_referers, $traite_versions);
     111                $principales = fusion_spip_lister_tables_principales($connect, true);
     112                $auxiliaires = fusion_spip_lister_tables_auxiliaires($connect, true, $traite_stats, $traite_referers, $traite_versions);
    108113                $cles_primaires = fusion_spip_lister_cles_primaires($principales);
    109114
  • _plugins_/fusion_spip/trunk/formulaires/fusion_spip_supprimer.php

    r70924 r73276  
    5555        $connect = $bases[$base];
    5656
    57         $principales = fusion_spip_lister_tables_principales();
     57        $principales = fusion_spip_lister_tables_principales($connect);
    5858        foreach ($principales as $nom_table => $val) {
    5959                // Retrouve la clé primaire à partir du nom d'objet ou de table
  • _plugins_/fusion_spip/trunk/inc/fusion_spip.php

    r73275 r73276  
    66 * @return array liste des tables
    77 */
    8 function fusion_spip_lister_tables_principales() {
     8function fusion_spip_lister_tables_principales($connect, $skip_non_existing = false) {
    99
    1010        // @todo : lire les descriptions des tables sources plutot que locales ?
     
    2020        unset($tables['spip_types_documents']);
    2121
     22        // zapper les tables de l'hote qui ne sont pas dans la basqe importée
     23        if( $skip_non_existing ) {
     24                foreach($tables as $table => $shema){
     25                        if( !sql_showtable($table, false, $connect)){
     26                                unset($tables[$table]);
     27                        }
     28                }
     29        }
     30
    2231        return $tables;
    2332}
     
    3241 * @return array liste des tables
    3342 */
    34 function fusion_spip_lister_tables_auxiliaires($stats = false, $referers = false, $versions = false) {
     43function fusion_spip_lister_tables_auxiliaires($connect, $skip_non_existing = false, $stats = false, $referers = false, $versions = false) {
    3544
    3645        // @todo : lire les descriptions des tables sources plutot que locales ?
     
    5766        }
    5867
     68        // zapper les tables de l'hote qui ne sont pas dans la basqe importée
     69        if( $skip_non_existing ) {
     70                foreach($tables as $table => $shema){
     71                        if( !sql_showtable($table, false, $connect)){
     72                                unset($tables[$table]);
     73                        }
     74                }
     75        }
     76
    5977        return $tables;
    6078}
     
    85103 * @return array liste des erreurs
    86104 */
    87 function fusion_spip_comparer_shemas($base, $traite_stats, $traite_referers) {
    88         $erreurs = array();
    89         $bases = bases_referencees(_FILE_CONNECT_TMP);
    90         $connect = $bases[$base];
    91 
    92         $tables = array_merge(fusion_spip_lister_tables_principales(), fusion_spip_lister_tables_auxiliaires($traite_stats, $traite_referers));
     105function fusion_spip_comparer_shemas($connect, $principales, $auxiliaires) {
     106
     107        $tables = array_merge($principales, $auxiliaires);
    93108        foreach ($tables as $nom_table => $shema_table) {
    94109                // ne pas utiliser 'trouver_table' pour ne pas utiliser le cache
Note: See TracChangeset for help on using the changeset viewer.