Script de migration de Xoops vers punBB

php

Suite à ma réflexion ainsi que l’avale des ambassadeurs francophones du projet Fedora, je viens de commencer le script de migration de Xoops vers punBB. Pour le moment, seul les groupes sont convertis (oui je sais, c’est le plus facile), mais cette migration ma permis de construire le script et sa logique.

Quel est la logique de ce script ?

Des requêtes SELECT alimentent un tableau de correspondance des données de Xoops vers celles de punBB. Ensuite, ce tableau est passé à la fonction buildInsert qui va construire la requête d’insertion.

function convGroupe () {

    //$this->emptyTable( "punbb_groups" );

    $query = $this->query( "SELECT * FROM xoops_groups ORDER BY groupid" );

    while ( $groupe = $this->fetch_array($query) ) {
        // Convertie les groupid            
        $groupe['groupid'] = $this->convertGroupeId($groupe['groupid']);
        if ( $groupe['groupid'] > 4 ) {

            $tab =  array(  'g_id'                          => $groupe['groupid'],
                                    'g_title'                       => $groupe['name'],
                                    'g_user_title'                  => $groupe['name'],
                                    'g_read_board'                  => 1,
                                    'g_post_replies'                => 1,
                                    'g_post_topics'             => 1,
                                    'g_post_polls'                  => 1,
                                    'g_edit_posts'                  => 1,
                                    'g_delete_posts'                => 1,
                                    'g_delete_topics'               => 1,
                                    'g_set_title'                   => 0,
                                    'g_search_users'                => 1,
                                    'g_edit_subjects_interval'  => 300,
                                    'g_post_flood'                  => 60,
                                    'g_search_flood'                => 30,
                );
            $this->buidInsert( 'punbb_groups', $tab);
        }
    }                   
}



/**
 * Construction de requêtes d'insertion.
 * @author Guillaume Kulakowski 
 * @since 0.1
 * @TODO Code lourd à optimisé.
 * @param array $tab    Paramêtres.
 */
function buidInsert( $table, $tab ) {

    $_key;
    $_value;

    foreach ( $tab as $key => $value ) {
        $_key[] = $key;
        $_value[]   = $value;
    }

    $SQL = "INSERT INTO ".$table." (" . implode(", ", $_key) . ") VALUES ('" . implode("', '", $_value) . "')";
    $this->query($SQL);
}

Le layer de base est minimaliste car le script reste quand même dans un esprit one-shoot mais pourra être repris par toutes personnes voulant réaliser la même opération.

Pré requis du script, lorsqu’il sera fini

php4 ou supérieur, par contre la base de données de Fedora-France étant assez conséquente, je compte lancer le script en ligne de commande. Il sera donc optimisé pour les gros forums/sites mais pourra ne pas marcher avec un simple appel via un navigateur.

Un roadmap ?

Non, le script sera prêt quand il sera prêt et sera sous licence GNU/GPL.

Version finale disponible sur GitHub.

Commentaires

TitaX

De TitaX le 9 septembre 2006

Bravo pour ton travail !!! Nom seulement ca servira pour fedora-fr mais je suis certain que bcp d'autres l'utiliseront !

Prolag

De Prolag le 9 septembre 2006

Salut ! Je ne connais pas la taille de votre forum Xoops mais pour la table des posts tu a prévu de réaliser comment ? encore une boucle ? ou si les 2 structures de table se ressemble juste modifier les champs ? et leur nom ?

LLaumgui

De LLaumgui le 9 septembre 2006

Elle fait dans les 100Mo. Je doit y faire des traitements donc je vais faire mes test avec un SELECT limité puiis un SELECT * massif :).

Les commentaires pour ce poste sont fermés.