Migrer un forum phpBB3 vers Discourse

Je peux au moins affirmer que cela ne se produit pas uniquement dans les cas où des anciens posts lient vers des plus récents.

J’ai un exemple où j’ai d’abord identifié le problème.

ID du post original : 842948, qui fait référence à la page 22 d’un fil de discussion déjà existant, et au moins le premier post (&start=220) a un ID inférieur à celui du post qui fait le lien (842880).

Après l’importation, ce post original (qui a été publié seulement quelques jours avant la création du dump) pointe vers un fil de discussion vieux de 7 ans dont le premier post a un ID original de 1353.

Je ne parviens pas à trouver d’indices expliquant pourquoi cela se produit, ni aucune similarité numérique d’une quelconque nature… Le lien original était simplement une URL publiée normalement et convertie automatiquement en lien par phpBB. Ce type de liens ne pose généralement aucun problème – ils fonctionnent correctement dans plusieurs autres endroits.

En général, je ne m’attends pas à ce que l’importation se passe parfaitement dès le début. Je suis vraiment satisfait des résultats obtenus jusqu’ici, mais je suppose que ce problème pourrait être l’un des plus difficiles à résoudre, surtout parce que je ne sais pas encore comment configurer un environnement de développement/débogage avec Discourse. Il va peut-être falloir que je m’y penche bientôt.

3 « J'aime »

Bonjour,

Si ma mémoire est bonne, l’importateur phpBB remplissait par défaut le nom complet de l’utilisateur Discourse en le déduisant de l’adresse e-mail de l’utilisateur. Est-ce exact et est-ce toujours le cas ? Je ne trouve rien à ce sujet dans les fichiers de l’importateur…

C’est un comportement que je ne voudrais pas voir se produire lors de l’importation de mon prochain forum.

Autre question également :

Sur le forum phpBB actuel, il existe des champs personnalisés pour les utilisateurs (comme les URL Facebook ou Instagram). J’aimerais importer ces données dans les champs personnalisés de Discourse. Je suppose que je devrai d’abord installer et configurer Discourse en ajoutant ces champs personnalisés, puis importer les données phpBB via mon propre script d’importation ?

1 « J'aime »

Ce n’est plus le cas.

Cela semble être un bon plan.

6 « J'aime »

Existe-t-il un moyen fiable d’estimer le volume mensuel d’emails que Discourse enverra aux utilisateurs après une migration depuis phpBB ? Inscriptions de nouveaux utilisateurs, mentions et réponses, résumés hebdomadaires, etc. phpBB envoie très peu d’emails par défaut, et je pense que nous devrons changer de fournisseur d’emails actuel.

Je ne dispose pas actuellement de nombreuses statistiques sur phpBB lui-même. Il existe depuis 2013, avec 200 000 messages et 5 500 membres. De nouveaux membres s’inscrivent tous les jours.

1 « J'aime »

Combien de publications par jour ?

1 « J'aime »

Je ne sais pas encore. Pour l’instant, je n’ai que les statistiques publiques. Peut-être 20.

1 « J'aime »

Avec seulement 20 publications par jour, je pense que vous seriez probablement confronté à un maximum de 3 000 e-mails par mois, ce qui rentre largement dans le plan gratuit de Mailgun.

Cependant, étant donné que vous migrez avec de nombreux utilisateurs, je vous recommande de désactiver les e-mails de résumé pour tous ceux qui n’ont pas visité votre forum au cours du dernier mois ou deux (ils pourront toujours les réactiver eux-mêmes s’ils le souhaitent). Vous pouvez le faire avec une requête dans la console Rails, mais cela fait un an que je l’ai fait pour le mien, donc je ne me souviens pas du code exact, désolé.

Cela devrait en fait être quelque chose que le script d’importation pourrait faire pour vous, à mon avis, idéalement avec un paramètre pour le temps écoulé depuis la dernière visite afin d’activer les e-mails de résumé.

4 « J'aime »

Je ne suis pas d’accord. Ce n’est pas quelque chose qu’un script d’importation devrait faire, mais il existe un paramètre du site pour cela : suppress digest email after days.

4 « J'aime »

En effet :slight_smile: Après ma première importation phpBB sur mon forum actuel, j’ai dû réduire la valeur par défaut ; mon fournisseur de messagerie a automatiquement bloqué l’adresse utilisée à cause de tous les e-mails de résumé envoyés. Elle a été signalée comme spam.

1 « J'aime »

Ce n’est pas tout à fait la même chose. À mon avis, il y a une différence entre envoyer des résumés à quelqu’un depuis X mois après son dernier visite, alors qu’il s’y est inscrit – le fait qu’il ne visite pas le forum ne signifie pas qu’il ne lit pas les résumés – et envoyer des résumés à un utilisateur qui ne s’y est jamais inscrit, simplement parce qu’il s’est inscrit sur l’ancien forum, ce qui pourrait même être illégal dans certaines juridictions ! Vous pouvez tout simplement désactiver les résumés pour tous les utilisateurs migrés ; ils pourront les réactiver eux-mêmes, ou bien faire comme moi : les désactiver pour tout le monde, sauf pour ceux qui ont visité au cours du dernier mois et qui ont donc vu l’annonce « nous allons bientôt migrer le forum ». Je pense que c’est un juste milieu équitable.

C’est aussi pratique : notre forum phpBB avait accumulé des milliers de comptes spammeurs au cours de l’année dernière, et leur envoyer des résumés quatre fois par mois aurait épuisé notre quota gratuit de Mailgun, puis aurait entraîné des coûts importants. Réduire le paramètre « nettoyer les utilisateurs inactifs après X jours » a fini par les éliminer.

5 « J'aime »

Je ne suis pas sûr que cela appartienne ici ou dans un sujet séparé. Mais il s’agit de la migration depuis phpBB 3, donc me voici.

J’ai réussi à migrer vers Discourse avec une seule base de données. Cependant, j’ai trois communautés distinctes (trois langues différentes, trois installations phpBB différentes), que j’aimerais idéalement fusionner en un seul grand forum Discourse.

Ma question est la suivante : comment procéder ? Que dois-je modifier dans le script d’importation, la base de données phpBB 3 ou ailleurs ?
Il y a quelques utilisateurs qui ont des comptes sur les deux forums (quelques-uns peut-être même sur les trois), mais il n’y a pas de connexion unique, ils ont donc un compte différent sur chaque forum avec le même nom d’utilisateur. Ce sont toutes des installations différentes avec des bases de données différentes.

Ce serait génial si cela était réalisable !

Merci d’avance pour toute aide !

1 « J'aime »

Cela ne fonctionnera pas directement, car le script d’importation stocke les identifiants d’origine dans la base de données Discourse et n’importera pas de données d’un forum supplémentaire s’il trouve un enregistrement avec le même identifiant. Cependant, je peux imaginer deux solutions :

  1. Difficile : Vous devez modifier le script d’importation à plusieurs endroits et ajouter un préfixe pour chaque forum aux champs personnalisés import_id stockés pour les messages, les sujets, les catégories et les utilisateurs.

  2. Facile, mais vous perdrez la possibilité d’importations incrémentielles : Supprimez les champs personnalisés après chaque importation.

    TopicCustomField.where(name: 'import_id').delete_all
    PostCustomField.where(name: 'import_id').delete_all
    CategoryCustomField.where(name: 'import_id').delete_all
    UserCustomField.where(name: 'import_id').delete_all
    

La solution 2 n’a pas été testée, mais en théorie, elle devrait fonctionner. Créez une sauvegarde avant de l’essayer.

7 « J'aime »

Après les premiers tests avant les fêtes de fin d’année, nous reprenons le cours de notre projet de migration. L’un des problèmes les plus importants reste la réécriture échouée des liens, et je réfléchis à la meilleure façon de gérer cela.

@gerhard, mes connaissances en programmation sont très basiques et je n’ai aucune connaissance de Rails en général ni de la structure détaillée de Discourse. Veuillez donc m’excuser pour ma question : Y aurait-il une possibilité de gérer le cas où l’importateur ne trouve pas le message importé correspondant à l’ID donné dans le lien, et au lieu de le remplacer par un lien erroné, d’ajouter un texte informant l’utilisateur ou l’administrateur, rendant ainsi ces liens problématiques repérables après l’importation ?

Ma principale préoccupation quant au fonctionnement actuel est que ces liens semblent simplement avoir été remplacés avec succès, sans qu’il soit possible de les identifier et de les corriger manuellement après l’importation.

Merci pour toute aide que vous pourriez m’apporter, elle est vraiment appréciée.

1 « J'aime »

Une façon de procéder consiste à réécrire le script afin qu’il ne remplace ces liens qu’après l’importation de tous les posts. Si vous avez besoin d’aide et disposez d’un budget, vous pouvez me contacter ou poster dans Marketplace.

4 « J'aime »

Malheureusement, ce projet dispose d’un budget restreint et je suppose que ce problème n’est pas assez important pour justifier une dépense, mais il est tout de même rassurant de savoir que vous seriez disponible pour cela.

Une autre question : j’ai remarqué que le BBCode semble être traité différemment lors de l’importation. Par exemple, [size] est simplement laissé tel quel, tandis que [color] semble être complètement supprimé. Je souhaitais réutiliser la couleur et j’ai découvert qu’il existe un plugin Discourse pour cela, mais j’ai ensuite remarqué qu’il semble être supprimé à l’importation. Le message initial indique que les BBCodes peuvent être importés, mais je n’ai trouvé aucun paramètre permettant de contrôler lesquels sont importés ou non.

Si c’est possible, je préférerais supprimer les balises [size] et conserver [color]. Y a-t-il quelque chose que j’aurais manqué concernant la façon dont cela est géré et comment cela pourrait éventuellement être modifié ?

1 « J'aime »

Je viens de découvrir que les sujets ayant été purgés sur mon forum phpBB, et que je croyais disparus, ont en quelque sorte été transférés vers Discourse.

Comment est-ce possible ?

1 « J'aime »

J’essaie de faire cela, mais je suis perdu(e) face aux instructions : de quel fichier de paramètres parlez-vous ? Et quand dois-je le faire ? Avant ou après l’importation ?
Merci d’avance !

edit : donc je pense que vous parlez des fichiers de paramètres des émojis dans le panneau d’administration (CP) ? Y a-t-il un moyen de le faire en important un fichier texte ou autre ? J’ai environ 100 smileys personnalisés et je préférerais pouvoir copier ce mappage dans Discourse. Est-ce possible ? (Si je pouvais copier le fichier smily.pak de phpBB quelque part dans les paramètres de Discourse ?)

1 « J'aime »

Vous avez bien vu le fichier de paramètres de l’importateur, hein ? :wink:

3 « J'aime »

Je suppose que phpBB gère les sujets élagués différemment des sujets supprimés normalement. Dans ce cas, ce n’est pas pris en charge pour le moment. Vous devrez découvrir comment phpBB marque les sujets élagués comme supprimés et modifier le script d’importation.

3 « J'aime »

Ah oui, bien sûr ! Cela fait trop longtemps que je n’ai pas fait la première conversion. J’avais totalement oublié ça, merci !

Concernant les sujets élagués, oui, je pensais que c’était quelque chose comme ça. Ce n’est pas un gros problème pour mon forum, mais c’était surprenant et peut-être une information utile pour les autres que cela puisse arriver.

1 « J'aime »