Aller au contenu
Invision Board France
  • 0

Phorum -> IPB 1.2 via phpBB 2.0x


PAT

Question

Utilisateur de PHORUM (22.000 posts), je me suis décidé à passer à IPB 1.2. Bonjour la galère !!

 

1/ Le convertisseur PHORUM -> IPB n'existe pas, comme chacun le sait. Mais on en trouve un pour PHORUM -> phpBB. Qu'à cela ne tienne, il faudra donc passer par une étape intermédiaire.

 

2/ La conversion vers phpBB ne pose pas de problème majeur. Je retrouve toutes mes billes.

 

DETAIL IMPORTANT : Dans PHORUM, il n'y avait pas de notion de MEMBRES INSCRITS, mais on retrouve bien les pseudos des posteurs dans phpBB (même si on ne peut pas les exploiter outre mesure, pour en faire un forum d'archives, c'est largement suffisant)

 

3/ Ca se corse ! Le convertisseur phpBB 2.0x -> IPB 1.2 est très bien fait (trop bien peut-être :unsure: ) Il convertit tout sauf qu'il recherche cette fameuse table de MEMBRES INSCRITS. Comme elle est vide, il ne conserve pas les pseudos des posteurs d'origine ; ceux-ci sont remplacés par "ANONYMOUS" pour mes 22.000 posts :'(

 

QUESTION : Quelqu'un se serait-il penché sur le pbm (je manque sincérement de temps) ?

Que faudrait-il modifier dans le script de conversion pour qu'il conserve tout simplement les pseudos d'origine phpBB (donc sans "forcer un rapprochement" avec la table MEMBRES de IPB) ?

 

Je pense que ça servira aussi à d'autres, car la conversion de PHORUM a souvent été abordée (sans succès)

 

Merci d'avance

PAT

Lien vers le commentaire
Partager sur d’autres sites

16 réponses à cette question

Messages recommandés

  • 0

Bonsoir,

 

Ouvrez apiphpbb2.php vers la ligne 1236

 

//---------------------------

  // Convert...

  //---------------------------

 

  $HB->query("SELECT * FROM ".$ibforums->vars['hb_sql_database'].".".$ibforums->vars['hb_sql_tbl_prefix']."users

        WHERE username <> 'Anonymous'

  LIMIT $start, $end");

 

  if ( ! $HB->get_num_rows() )

  {

// We are done?

$std->redirect_screen("Member conversion complete", "?a=convert&tbl=members&end=1");

  }

 

  while ( $row = $HB->fetch_row() )

  {

$db_string = "";

 

if ( $row['user_id'] == "" OR $row['username'] == "" OR $row['user_password'] == "" )

{

    continue;

}

 

Pour le premier passage en gras on voit que ne sont repris que les membres différents de Anonymous et ensuite ne sont insérés dans la table ibf_members que les membres correspondants au deuxième passage en gras, à savoir qu'il faut qu'ils aient un user_id mais aussi un pseudo différent de "" et aussi un mot de passe. Vérifiez déjà les données de la table vars['hb_sql_tbl_prefix']."users (phpbb_users surement)

Lien vers le commentaire
Partager sur d’autres sites

  • 0
Ouvrez apiphpbb2.php vers la ligne 1236

 

Pour le premier passage en gras on voit que ne sont repris que les membres différents de Anonymous et ensuite ne sont insérés dans la table ibf_members que les membres correspondants au deuxième passage en gras, à savoir qu'il faut qu'ils aient un user_id mais aussi un pseudo différent de "" et aussi un mot de passe. Vérifiez déjà les données de la table vars['hb_sql_tbl_prefix']."users (phpbb_users surement)

Merci pour cette première réponse.

 

Je viens d'y passer encore près de 2 heures, mais j'en suis tjrs au même stade.

 

Si j'ai bien tout compris, les "author_name" (table "ibf_posts") ne sont conservés que s'ils existent dans la table "ibf_members". Dans le cas contraire, on a un joli "Anonymous" à la place.

 

A quel moment le "post_username" de la table "phpbb_posts" est remplacé par ANONYMOUS dans la table "ibf_posts" ? (WHERE username <> 'Anonymous' c'est la condition, mais que ce passe t'il avant ?)

 

Vous l'avez compris, l'auteur des posts apparaît dans phpbb malgré que la table "phpbb_users" soit vide (puisqu'elle provient de PHORUM)

Ce serait tout de même incroyable de ne pas pouvoir conserver la même chose avec IPB (c'est tout de même plus propre que d'avoir "Anonymous" à côté de chaque post) !

 

PAT

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Ca s'appelle du contrôle d'intégrité ;) Bon sinon puisque vos username sont vides dans phpBB, il va falloir chercher du côté des auteurs des messages eux mêmes.

 

Ouvrez le même fichier vers la ligne 778

$db_array = array(

        'pid'    => $row['post_id'],

        'author_id' => $row['user_id'],

        'author_name' => $row['username'] ? $std->txt_safeslashes($row['username']) : $std->txt_safeslashes($row['post_username']),

 

Je pense qu'il suffit de remplacer la deuxième ligne par

'author_name' => $std->txt_safeslashes($row['post_username']),

Pour aller chercher l'auteur plutôt que le membre.

 

Tous les messages devraient alors être considérés comme postés par des invités 'author_id' devrait alors être égal à 0 si ce n'est pas le cas modifier la ligne comme ceci 'author_id' => 0, et relancez le script de conversion pour la section messages.

Lien vers le commentaire
Partager sur d’autres sites

  • 0
Ca s'appelle du contrôle d'intégrité ;)

Ca s'appelle de l'éfficacité de thewiseoldman ;)

 

J'ai fait les modifs indiquées. Il faut bien en effet aussi que 'author_id' => 0, sinon ils restent tous à -1

 

BINGO ! La table "ibf_polls" est tout à fait OK après une nouvelle conversion. Quand on affiche les messages d'un topic, l'auteur apparaît bien à gauche avec la mention "Unregistered" -> normal.

 

Par contre :

 

Le résultat est toujours le même à l'affichage des TOPICS (avant de descendre dans l'arborescence) -> Anonymous partout

 

Je pense qu'il y a autre chose à modifier dans le convertisseur dans la section TOPICS car dans la table ibf_topics : 'starter_name' et 'last_poster_name' sont tous en "Anonymous", 'starter_id' et 'last_poster_id' sont aussi tous à "-1"

 

Mais comment faire ? puisque la table correspondante de phpbb (phpbb_topics) ne stocke pas les "_name" mais uniquement 'topic_first_post_id' et 'topic_last_post_id'

 

Je sens qu'on approche du but ;)

Any idea ?

 

PAT

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Tout ce que l'on peut faire c'est ramener 'starter_name' et 'last_poster_name', je vais regarder.

 

<? 
// on se connecte à MySQL, modifiez en conséquence
$db = mysql_connect('server', 'user', 'pass'); 

// on séléctionne la base, modifiez en conséquence
mysql_select_db('nom_de_base',$db); 

// on sélectionne les sujets en ordre croissant sur l'id
$sql = 'SELECT * from ibf_topics order by tid'; 

// on envoie la requete 
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 

// on fait une boucle qui va faire un tour pour chaque sujet
while($data = mysql_fetch_array($req)) 
   { 
   // on récupère l'auteur dans la table ibf_posts pour chaque sujet
   $sql2 = 'SELECT author_name from ibf_posts where topic_id = '.$data['tid'].' order by pid limit 0,1'; 
   // on envoie la requete 
$req2 = mysql_query($sql2) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
$auteur = mysql_fetch_array($req2);

   // on récupère le dernier posteur dans la table ibf_posts pour chaque sujet
   $sql3 = 'SELECT author_name from ibf_posts where topic_id = '.$data['tid'].' order by pid desc limit 0,1';
   // on envoie la requete 
$req3 = mysql_query($sql3) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
$dernier_posteur = mysql_fetch_array($req3);

//on met à jour la table ibf_topics
$sql4 = "UPDATE ibf_topics SET starter_name='".$auteur['author_name']."', last_poster_name='".$dernier_posteur['author_name']."' where tid = ".$data['tid'].""; 
// un petit affichage pour voir la requête crée
echo '<br />'.$sql4.'<br />';
// on envoie la requete 
$req4 = mysql_query($sql4) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); 
  	 // un petit message comme ca	
  	 echo ' <i>Sujet : '.$data['tid'].'</i> mis à jour<br>'; 
   } 

// on ferme la connexion à mysql 
mysql_close(); 
?>

 

Copiez collez ca dans un fichier update_topics.php, uploadez le sur votre serveur puis appellez le via votre navigateur internet.

 

Dois je préciser qu'une sauvegarde de la table s'impose avant ? Pour tester vous pouvez aussi remplacer la ligne

$req4 = mysql_query($sql4) or die('Erreur SQL !<br>'.$sql.'<br>'.
par
// $req4 = mysql_query($sql4) or die('Erreur SQL !<br>'.$sql.'<br>'.
de ce fait la requête mise à jour ne sera pas exécutée mais vous verrez le script défiler.
Lien vers le commentaire
Partager sur d’autres sites

  • 0

WOUAHHH ! Superbe ! :unsure:

 

Avec les commentaires dans le script on comprend parfaitement le fonctionnement de la moulinette. C'est un plus ! Encore bravo thewiseoldman pour cet excellent boulot.

 

Mes 22.000 posts Made in PHORUM sont désormais totalement convertis dans IPB 1.2. D'autres seront sans doute contents d'apprendre que c'est totalement réalisable (pas pratique certes car transit par phpbb, mais faisable !)

 

J'ai juste fait un UPDATE supplémentaire dans la table 'ibf_topics' pour passer 'starter_id' et 'last_poster_id' à "0" (au lieu de "-1") afin que les posteurs de mes anciens forums soient tous considérés comme "invités" Ca évite surtout, d'après ce que j'ai pu remarquer, d'avoir un lien "user" qui renvoie vers une erreur (puisqu'ils ne figurent pas dans la table 'ibf_members')

 

C'est par contre bizarre (mais sans doute voulu) que les pseudos non enregistrés apparaîssent ainsi : -pseudo-

 

PAT >> qui est heureux :)

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Content que cette moulinette ait fonctionné :unsure:

 

Oui c'est normal et configurable via le PC Admin dans Topics, Posts & Polls avec les champs prefix et suffix :)

Lien vers le commentaire
Partager sur d’autres sites

  • 0
Oui c'est normal et configurable via le PC Admin dans Topics, Posts & Polls avec les champs prefix et suffix :unsure:

Bizarre, dans mon cas justement ces 2 champs sont vides mais j'ai tout de même les tirets avant et après chaque pseudo.

 

J'ai fait un essai en mettant autre chose dans ces champs mais ça ne change rien non plus.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

J'ai confondu :unsure:

 

C'est normal et c'est pour tous les forums comme cela, les préfixes et suffixes invités sont utilisés lorsqu'un invité utilise un pseudo membre existant.

Lien vers le commentaire
Partager sur d’autres sites

  • 0
C'est normal et c'est pour tous les forums comme cela, les préfixes et suffixes invités sont utilisés lorsqu'un invité utilise un pseudo membre existant.

Je dirais plutôt que dans mon cas, ils sont considérés comme invités car ils n'existent pas dans la table "membres"

 

Quoi qu'il en soit, j'ai réussi à supprimer le tiret avant et après ces pseudos. C'est plus joli à mon goût :'(

Il n'y a de toute façon aucun lien "profil" sur ces pseudos, donc aucun risque de message d'erreur du style "ce membre est introuvable..."

 

Ca se passe dans sources/Forums.php :

$topic['last_poster'] = ($topic['last_poster_id'] != 0)
       ? "<a href='{$this->base_url}showuser={$topic['last_poster_id']}'>{$topic['last_poster_name']}</a>"
       : "".$topic['last_poster_name']."";
       
 $topic['starter']     = ($topic['starter_id']     != 0)
       ? "<a href='{$this->base_url}showuser={$topic['starter_id']}'>{$topic['starter_name']}</a>"
       : "".$topic['starter_name']."";

 

PS/ J'ai laissé volontairement les "". et ."" pour bien situer où se trouvaient les tirets avant la modif.

 

Bonne chance aux PHORUMistes. Moi je ne regrette vraiment pas mon choix :unsure:

Lien vers le commentaire
Partager sur d’autres sites

  • 0
Je dirais plutôt que dans mon cas, ils sont considérés comme invités car ils n'existent pas dans la table "membres"

Lapalisse :(

 

S'ils étaient dans la table membres ils ne seraient pas des invités

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Je me suis mal exprimé :unsure:

Je dirais donc plutôt :

 

Dans mon cas (forums d'archives) ils seront toujours considérés comme invités même s'ils s'inscrivent maintenant avec le même pseudo car à l'époque de ces messages (et plus particulièrement au moment de la conversion), ils ne figuraient pas dans la table "membres".

Lien vers le commentaire
Partager sur d’autres sites

  • 0
1/ Le convertisseur PHORUM -> IPB n'existe pas, comme chacun le sait. Mais on en trouve un pour PHORUM -> phpBB. Qu'à cela ne tienne, il faudra donc passer par une étape intermédiaire.

Salut,

 

Je suis intéressée par la conversion de ma base Phorum vers IPB via PhpBB, mais je n'arrive pas à trouver de convertisseur Phorum vers PhpBB......

Est-ce qqu'un pourrait me donner l'URL ?

 

Merci d'avance

Lien vers le commentaire
Partager sur d’autres sites

  • 0

Hello

 

Je suis passé récemment de Phorum à IPB (en passant pas phpBB)

Pour répondre à la question du post d'avant, le conv phorum > phpBB est >> LA <<

 

Ensuite j'ai fait comme c'est marqué tout au long de ce topic avec les scripts fournis mais un peu adaptés (j'avais une très vieille version de phorum)

 

Bon par contre je me retrouvais avec des posts avec des usernames liés à aucun user (puisqu'on postait librement sur mon phorum), et ces mêmes personnes fraîchement enregistrées sur IPB ont commencé à me demander de relier leurs anciens posts avec leur nouveau compte (des fois avec un username quia changé en plus).

 

en gros ça revient à :

- chercher les posts avec le vieux username et un userid = 0

- en avoir le compte total

- en profiter pour retrouver le plus vieux pour connaitre l'arrivée du user sur le vieux phorum

- rechercher le id du user avec son nouveau username

- updater le userid de ces posts avec l'id trouvé

- updater le user en incrémentant son nombre de posts du total trouvé précédemment et changer sa date d'enregistement.

 

ça fait quelques requêtes SQL, et comme ça me soulait de me taper ça 2-3 fois par jour au début, j'ai développé une petite moulinette en java pour faire ça.

 

...........Alors c'est là où j'espère que ça va vous servir..........

 

Le code est assez long, vous pouvez le trouver >> ICI <<

Vous ne pourrez pas le compiler comme ça parce que ça utilise d'autres classes à moi mais en gros DateTime hérite de java.util.Date et MySqlMgr est une moulinette qui passe des bête statements JDBC.

 

La version compilées est >> ICI <<

Elle marche avec IPB 2.0 sur MySql.

Je n'ai pas essayé avec IPB 1.2/1.3, donc attention.

Modifié par marsf
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à cette question…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...

Information importante

En utilisant ce site, vous êtes d’accords avec nos Conditions d’utilisation. Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookies, sinon nous supposerons que vous êtes d’accord pour continuer.