Script de migration de Xoops vers punBB
Par llaumgui le samedi 9 septembre 2006, 18:28 - Développement web - Lien permanent
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 <guillaume AT llaumgui DOT com>
* @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, vous pouvez déjà télécharger la version en cours de développement attachée à ce billet.
Version finale disponible attachée à ce billet

Commentaires
par TitaX
Bravo pour ton travail !!! Nom seulement ca servira pour fedora-fr mais je suis certain que bcp d'autres l'utiliseront !
par Prolag
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 ?
par LLaumgui
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 :).