<div data-theme-toc="true"> </div>
J’ai effectué plusieurs étapes pour nettoyer et préparer les données avant de migrer mon forum phpBB 3.x vers Discourse. Ceci décrit ce que je fais pour aider les autres à se préparer à une migration. De nombreuses suggestions supprimeront des données, alors effectuez toujours une sauvegarde de la base de données avant de suivre l’une des suggestions ci-dessous.
Épurer les anciens sujets et messages.
Examinez vos catégories et déterminez si tous les sujets doivent être migrés. Avez-vous besoin de toutes les données, ou les quelques dernières années de sujets suffiront-elles ? phpBB épure automatiquement les sujets en fonction de leur âge. Vous pouvez configurer/ajuster les dates d’épuration pour vos forums dans le panneau d’administration de phpBB (ACP). Allez dans Forums et sélectionnez l’icône d’engrenage pour le forum que vous souhaitez modifier.
Épurer les anciens noms d’utilisateur.
L’importateur Discourse ne migre pas les utilisateurs qui n’ont pas posté. Sachant cela, vous pouvez supprimer les anciens utilisateurs qui n’ont jamais posté. Allez dans l’ACP de phpBB et sélectionnez Utilisateurs et groupes. Il existe une option pour Épurer les utilisateurs. Vous pouvez définir le nombre de messages à 0 et la date de dernière activité. Cela vous permettra de supprimer tous les utilisateurs qui n’ont jamais posté et qui n’ont pas été actifs sur vos forums depuis un certain temps.
Déterminer le nombre de messages d’utilisateurs anonymes.
La migration Discourse migrera les utilisateurs anonymes en tant qu’utilisateurs suspendus ou tous vers un utilisateur système. Examinez le nombre de sujets/messages attribués à un utilisateur anonyme.
MySQL déterminera l’user_id de l’utilisateur anonyme. Pour la plupart des installations, il s’agit de user_id = 1.
SELECT `user_id`, `username` FROM `phpbb_users` where `username_clean` = "anonymous"
Pour vérifier les sujets et les messages. Mettez à jour la requête avec l’user_id de votre système anonyme.
SELECT * FROM `phpbb_posts` where `poster_id` = "1"
SELECT * FROM `phpbb_topics` where `topic_poster` = "1"
Sur la base de ces résultats, vous devez déterminer comment vous souhaitez configurer le système pour gérer les messages et les sujets des utilisateurs anonymes. Je n’en avais que quelques-uns, et je les ai supprimés.
Examiner les messages masqués ou supprimés en douceur.
C’était une fonctionnalité implémentée dans phpBB 3.1. Vérifiez si vous avez des messages masqués ou supprimés en douceur. Discourse ignore ce champ et importera les messages. Les messages ont été supprimés par l’utilisateur/les modérateurs pour une raison.
SELECT * FROM `phpbb_posts` where `poster_visibility` = "2"
Supprimez tous les messages qui sont listés.
Valider les e-mails propres.
Veuillez exécuter le script MySQL suivant pour valider vos e-mails afin qu’ils n’aient pas d’espaces de fin et supprimez tous les problèmes d’e-mail identifiés.
SELECT `user_email` FROM `phpbb_users` where CHAR_LENGTH(`user_email`) != CHAR_LENGTH(TRIM(`user_email`)) ORDER BY `user_id` ASC
Valider les titres en double.
Le paramètre Discourse a un indicateur autorisant les titres en double. La requête suivante vous aidera à comprendre si vous avez de nombreux titres en double. Mon forum avait plus de 1 000 sujets avec des titres en double, j’ai donc mis à jour l’indicateur pour autoriser les titres de sujets en double.
SELECT `topic_title`, COUNT(*) as count FROM `phpbb_topics` GROUP BY `topic_title` HAVING COUNT(*) > 1 ORDER BY `count` DESC
Trouver les sujets orphelins.
Chaque sujet devrait avoir un message, mais parfois les choses se cassent. Ceci listera tous les sujets sans messages.
SELECT * FROM `phpbb_topics` WHERE `topic_id` NOT IN (Select topic_id from phpbb_posts) ORDER BY `topic_approved` DESC
Nettoyez tous les sujets orphelins.
Trouver les messages orphelins.
Chaque message devrait appartenir à un sujet. Ceci listera les messages qui n’ont pas de topic_id valide.
SELECT * FROM `phpbb_posts` WHERE `topic_id` NOT IN (Select topic_id from phpbb_topics) ORDER BY `post_id` DESC
Nettoyez tous les messages orphelins.
Valider que le premier message du sujet est un message valide.
Le premier message d’un sujet peut être supprimé, ce qui entraîne un sujet avec un topic_first_post_id incorrect. Ceci valide que le topic_first_post_id est valide.
SELECT * FROM `phpbb_topics` WHERE `topic_first_post_id` NOT IN (Select post_id from phpbb_posts) ORDER BY `topic_approved` DESC
Nettoyez le topic_first_post_id.
J’ajouterai des éléments supplémentaires au fur et à mesure que je les trouverai en me préparant pour une migration à venir. Si vous avez des vérifications recommandées, veuillez les ajouter ci-dessous.