Importation depuis phpBB

Bonjour, j’essaie d’importer un ancien forum phpBB2 dans le nouveau Discourse.

J’ai effectué l’importation préliminaire de phpBB2 vers phpBB3, comme indiqué dans votre documentation.

J’ai eu des problèmes avec l’importation des avatars (pas d’importation) et avec les mots de passe. Certes, Discourse utilise une méthode de cryptage différente de phpBB2, j’ai donc pensé à écrire du code qui, lors de la première connexion, vérifierait si les mots de passe sont cryptés à la manière de phpBB2, vérifierait si avec le cryptage phpBB2 (md5 ?) le mot de passe correspond au hash sauvegardé et le réécrirait ensuite avec le cryptage Discourse.

Habituellement, avec les « bons vieux » PHP et MySQL, c’est un travail d’une demi-heure, mais avec Discourse, je ne sais même pas par où commencer pour modifier le code source. Mon ancien phpBB2 était fortement modifié (pour cette raison, je ne l’ai jamais mis à jour vers phpBB3), mais je sais que ce n’est pas une bonne habitude et je ne veux pas perturber Discourse et perdre son automatisation de mise à jour, alors je demande comment je pourrais gérer mon besoin. Dois-je développer un plugin ? Y a-t-il une chance d’avoir cette fonctionnalité dans une nouvelle version « bêta » ?

Merci

Pour importer les mots de passe, vous avez besoin du plugin Migrated password hashes support. Cela pourrait résoudre votre problème de mot de passe.

Il est difficile de dire si votre problème d’avatar est dû à une incompatibilité de vos données ou si vous n’avez tout simplement pas configuré le script correctement.

1 « J'aime »

Merci pour votre indice, je vais l’essayer dès que possible. Concernant les avatars, j’ai revérifié chaque étape de votre guide, mais sans succès. Cependant, comme je vais devoir répéter l’importation, j’essaierai de surveiller chaque étape et de vous faire un rapport.

1 « J'aime »

Je ne suis pas le propriétaire de ce sujet, mais j’aimerais me connecter car je suis dans le même parcours en gros.

Actuellement, je joue avec l’importation import_phpbb3 et j’y rencontre déjà des défis lors de la création des utilisateurs. J’aimerais également migrer les avatars des utilisateurs, mais il semble que cela ne fonctionne pas pour tous les utilisateurs. Pour certains, j’obtiens le problème suivant :

Failed to upload avatar for user myuser: /shared/import/data/images/avatars/upload/phpbb_avatar_2.png
#<ActiveModel::Errors:0x00000055a4b3de78 @base=#<Upload id: nil, user_id: nil, original_filename: "avatar.png", filesize: 0, width: nil, height: nil, url: nil, created_at: nil, updated_at: nil, sha1: nil, origin: nil, retain_hours: nil, extension: nil, thumbnail_width: nil, thumbnail_height: nil, etag: nil, secure: false, access_control_post_id: nil, original_sha1: nil, animated: nil, verification_status: 1, security_last_changed_at: nil, security_last_changed_reason: nil>, @errors=[#<ActiveModel::Error attribute=base, type=Sorry, the image you are trying to upload is too large (maximum dimension is 80-megapixels), please resize it and try again., options={}>]>

Le problème semble être le format de fichier png. Y a-t-il un moyen d’importer des fichiers png également ou doivent-ils être gif/jpg ? oxipng est déjà installé.

root@DietPi4-import:/var/www/discourse# which oxipng
/usr/local/bin/oxipng
root@DietPi4-import:/var/www/discourse#

Concernant le plugin de mot de passe. Il l’a activé dans le cadre de la construction du conteneur d’importation. Ou doit-il être fait également sur le conteneur discourse ? Y a-t-il un moyen de voir si cela a fonctionné ou serait-ce quelque chose que l’utilisateur devrait essayer ?

Merci d’avance.

Le plugin migrate password ne doit être activé qu’après la migration du forum, sinon il peut causer des erreurs lors de l’importation des utilisateurs.

Pour voir s’il fonctionne, activez-le et essayez de vous connecter avec votre ancien mot de passe.

3 « J'aime »

Merci pour vos commentaires @Canapin
Dans ce cas, je reconstruirai le conteneur de production avant de le redémarrer, une fois l’importation terminée dans le conteneur d’importation.

Au fait : quelqu’un de l’équipe d’administration peut-il vérifier mon premier message ? Il semble que je l’ai trop modifié et qu’il a été marqué comme SPAM :smiley:

Personne n’a d’idée pourquoi l’importation de fichiers PNG ne fonctionne pas ?

Plus d’informations seraient utiles. Quelle version de phpBB ? Un message d’erreur ?
Pouvez-vous préciser « ne fonctionne pas » ?

1 « J'aime »

Déjà partagé ci-dessus. Il semble que le script d’importation ne puisse pas lire correctement les fichiers PNG car toutes les valeurs sont essentiellement nil.

Oh désolé, je n’avais pas vu que vous aviez déjà posté le problème. Je ne peux pas vous aider avec ça désolé, je n’ai pas les compétences nécessaires.

edit : (peut-être pour éviter ma petite “erreur”, vous auriez pu répondre à votre propre message pour que je puisse voir votre premier message)

Je vois cela de temps en temps lors des migrations et les fichiers concernés ne peuvent généralement pas être ouverts dans une visionneuse d’images en raison d’un format de fichier inconnu. Je suppose toujours que ces fichiers ont été corrompus au fil des ans.

Êtes-vous certain que les PNG que vous essayez d’importer sont des fichiers image valides ? Si oui, pouvez-vous en partager un exemple. De plus, importez-vous dans le conteneur Docker ou dans un environnement de développement ?

3 « J'aime »

TL;DR ; Les images ont été corrompues lors de leur transfert vers la machine Linux.

@gerhard J’étais absolument certain que mes fichiers PNG étaient valides et corrects, car je pouvais les ouvrir sur mon ordinateur Windows. Cependant, votre indication m’a mis sur la bonne voie et j’ai vérifié l’apparence des fichiers PNG sur la machine Linux. Et vous aviez absolument raison, car tous les fichiers PNG étaient endommagés. La cause première était la manière dont je les avais transférés. J’ai utilisé SCP (WinSCP) et les fichiers PNG ont été transférés comme des fichiers texte, ce qui a entraîné la corruption. Lors de ma nouvelle tentative, j’ai transféré tout comme une archive 7z et je les ai simplement extraits directement sur la machine Linux. Cette fois, l’importation a fonctionné correctement.

J’apprécie beaucoup votre soutien, de m’avoir mis sur la bonne voie :+1:

Bien que mon importation fonctionne maintenant pour 99,9 % de tous les messages, j’ai encore une question. Existe-t-il un moyen de transférer également le statut des « sujets résolus » ? Sur le nouveau forum de production, j’ai l’intention d’utiliser discourse-solved. Comment transférer l’ancien statut dans le nouveau monde ?

Encore une fois : j’apprécie beaucoup votre soutien.

2 « J'aime »

Je ne connais pas de statut résolu dans phpBB. S’agit-il d’une extension/mod ? Je suppose que vous devrez personnaliser le script d’importation afin de l’importer.

J’ai regardé dans la base de données phpbb et je connais maintenant le champ qui stocke les informations sur un sujet/une publication résolu(e). Il me reste juste à savoir comment et où le stocker dans la base de données Discourse. :roll_eyes:

1 « J'aime »

Vous pouvez examiner d’autres scripts d’importation qui prennent en charge cela (recherchez « résolu », je pense). Vous devrez avoir le plugin installé dans votre instance d’importation.

1 « J'aime »

Merci pour votre réponse, mais cela semble dépasser mes compétences.

Dans la base de données phpBB source, l’ID du message résolvant un sujet est stocké dans :

  • phpbb_topics.topic_solved.

Dans Discourse, l’information est stockée dans 3 champs différents (si je ne me trompe pas) :

  • post_custom_fields.is_accepted_answer
  • topic_custom_fields.accepted_answer_post_id
  • topic_custom_fields.solved_auto_close_topic_timer_id

Autant que j’ai compris, il y a une sorte de mappage effectué lors de l’importation car les ID de topic + post vont changer.

Mais mes connaissances s’arrêtent là.

1 « J'aime »

Alors expliquer comment le modifier et le déboguer est probablement au-delà de ce qui peut être accompli ici. Si vous avez un budget, vous pouvez poster dans Marketplace ou me contacter.

C’est stocké dans un champ personnalisé appelé “import_id” et il existe des fonctions que vous pouvez utiliser pour effectuer des recherches, que vous pouvez voir dans le code. Quelque chose comme topic_id_from_import_id()

2 « J'aime »

Merci pour l’offre. Nous sommes un très petit projet open source sans budget réel. Au début, je n’étais pas conscient que la fonctionnalité « sujet résolu » est une extension non standard sur phpbb (j’ai rejoint le forum des années après sa création) et je pensais que ce serait facile à corriger. Mais j’ai compris que c’est une demande individuelle, qui prend du temps à examiner.

Encore merci à vous qui avez aidé à le faire fonctionner presque parfaitement.

Ah au fait les gars, phpbb a été migré d’une version 3.3.5. Cela fonctionnait bien, même si ce n’était pas pris en charge.

2 « J'aime »

Si vous parveniez à déterminer quelles tables sont impliquées dans le discours, vous pourriez bien être en mesure de copier quelques lignes de code d’un autre importateur.

1 « J'aime »

Je vois. Il fait correspondre les ID de publication/sujet phpbb avec les ID de publication/sujet Discourse.

Celui-ci semble être un bon exemple pour importer des réponses acceptées discourse/script/import_scripts/lithium.rb at 44f7a61c2c5b6f248a62ab7f987ebbd3091c71ef · discourse/discourse · GitHub

Mais si j’ai bien compris, comme première étape, je devrais stocker/importer la valeur phpbb_topics.topic_solved dans postgres. N’est-ce pas ?

1 « J'aime »