schreuer.org> * http://francois.schreuer.org/ * */ /************************************************************************************ Configuration *************************************************************************************/ // Numéro de l'article dans le forum duquel on va injecter les données // Attention: vous devez avoir créé cet article préalablement $id_article = 1; // Nom du forum phorum (le nom de la table contenant les entêtes de ce forum) $phorum = "nom_forum"; // Coordonnées de la base de données spip $spip_host = "localhost"; $spip_user = "user"; $spip_pass = "password"; $spip_base = "base_spip"; $spip_table = "spip_forum"; // Ne changer cette valeur que si vous avez modifié le préfixe des tables $spip_charset = "utf-8"; // Le type de codage de votre site spip // valeurs possibles: utf8 / iso-latin // Coordonnées de la base de données phorum $phorum_host = "localhost"; $phorum_user = "user"; $phorum_pass = "password"; $phorum_base = "base_phorum"; /************************************************************************************ Fin de la config *************************************************************************************/ print(" Convertisseur phorum2spip "); // // Connexion aux deux bases de données // $connexion_phorum = mysql_pconnect($phorum_host, $phorum_user, $phorum_pass); $db_phorum = mysql_select_db($phorum_base, $connexion_phorum) or die("erreur SQL: ". mysql_error()); // On récupère le corps de tous les messages et on stocke ça dans un tableau // (pour éviter une requête mysql à chaque message) $phorum_bodies = $phorum."_bodies"; $r_bodies = mysql_query("SELECT id,body FROM $phorum_bodies", $connexion_phorum); while($a_bodies = mysql_fetch_array($r_bodies)) { if($spip_charset == "utf-8") $a_bodies['body'] = utf8_encode($a_bodies['body']); // Il est éventuellement possible d'ajouter un traitement typographique du texte ici $bodies[$a_bodies['id']] = $a_bodies['body']; } $r_main = mysql_query("SELECT * FROM $phorum ORDER BY parent",$connexion_phorum); mysql_close($connexion_phorum); $connexion_spip = mysql_pconnect($spip_host, $spip_user, $spip_pass); $db_spip = mysql_select_db($spip_base, $connexion_spip) or die("erreur SQL-FEhler: ". mysql_error()); while($a = mysql_fetch_array($r_main)) { // On traduit le statut du message (on récupère aussi bien les messages publics que les autres) if($a[approved] == "Y") $statut = "publie"; else $statut = "off"; // Quelques petits nettoyages if($spip_charset == "utf-8") $a['subject'] = utf8_encode($a['subject']); $titre = trim(addslashes($a['subject'])); if($spip_charset = "utf-8") $a['author'] = utf8_encode($a['author']); $auteur = trim(addslashes($a['author'])); // Gestion des citations et suppression des signatures à la barbare // Il faudra remplacer les lignes préfixées par de jolis "" $corps = trim(addslashes(str_replace("\n> ","\n_ > ",str_replace("[%sig%]","",$bodies[$a[id]])))); $date = $a[datestamp]; $courriel = $a[email]; $lastmod = $a[modifystamp]; // On traduit id_parent dans la nouvelle numérotation if($a['parent'] == 0) $id_parent = 0; else $id_parent = $trad_id[$a['parent']]; // Ce tableau contient la correspondance entre les anciens identifiants et les nouveaux // Et on injecte le tout dans la base de données de SPIP mysql_query("INSERT INTO $spip_table(id_parent,id_rubrique,id_article,id_breve,date_heure,titre,texte,auteur,email_auteur,statut,maj) VALUES('$id_parent','0','$id_article','0','$date','$titre','$corps','$auteur','$courriel','$statut','$lastmod')", $connexion_spip); // On récupère id_forum de l'entrée qu'on vient d'ajouter et on stocke cette valeur dans le tableau de "traduction" $retro = mysql_query("SELECT id_forum FROM $spip_table ORDER BY id_forum DESC LIMIT 1",$connexion_spip); $id_forum_array = mysql_fetch_array($retro); $id_forum = $id_forum_array['id_forum']; $trad_id[$a['id']] = $id_forum; // On calcule id_thread et on l'ajoute dans la table if($a['id'] == $a['thread']) $id_thread = $id_forum; else $id_thread = $trad_id[$a['thread']]; mysql_query("UPDATE $spip_table SET id_thread='$id_thread' WHERE id_forum='$id_forum' LIMIT 1", $connexion_spip); // On envoie un message de confirmation print("\nLe message \"".$titre."\" a été transféré
"); } mysql_close($connexion_spip); // Fini print("

Fini

"); ?>