Importieren von phpBB

Hallo, ich versuche, ein altes phpBB2-Forum in das neue Discourse zu importieren.

Ich habe den vorläufigen Import von phpBB2 nach phpBB3 durchgeführt, wie in Ihren Dokumenten beschrieben.

Ich hatte Probleme mit dem Avatar-Import (kein Import) und mit Passwörtern. Sicherlich verwendet Discourse eine andere Verschlüsselungsmethode als phpBB2, daher dachte ich daran, etwas Code zu schreiben, der beim ersten Login prüft, ob Passwörter auf phpBB2-Art verschlüsselt sind, prüft, ob mit phpBB2-Verschlüsselung (md5?) das Passwort mit dem gespeicherten Hash übereinstimmt und es dann mit der Discourse-Verschlüsselung neu schreibt.

Normalerweise ist das mit den “alten guten Jungs” PHP und MySQL nur eine halbe Stunde Arbeit, aber mit Discourse weiß ich nicht einmal, wo ich mit der Änderung des Quellcodes anfangen soll. Mein altes phpBB2 wurde stark modifiziert (aus diesem Grund habe ich es nie auf phpBB3 aktualisiert), aber ich weiß, dass das keine gute Angewohnheit ist und ich möchte Discourse nicht durcheinander bringen und seinen Update-Automatismus verlieren, daher frage ich, wie ich meinen Bedarf bewältigen könnte. Sollte ich ein Plugin entwickeln? Gibt es eine Chance, diese Funktion in einer neuen “Beta”-Version zu haben?

Danke

Um Passwörter zu importieren, benötigen Sie das Plugin Migrated password hashes support. Dies könnte Ihr Passwortproblem lösen.

Es ist schwer zu sagen, ob Ihr Avatarproblem daran liegt, dass Ihre Daten nicht kompatibel sind, oder ob Sie das Skript einfach nicht richtig konfiguriert haben.

1 „Gefällt mir“

Danke für deinen Hinweis, ich werde es so schnell wie möglich ausprobieren. Bezüglich der Avatare habe ich jeden Schritt wie in deiner Anleitung beschrieben überprüft, aber ohne Erfolg. Da ich den Import jedoch wiederholen muss, werde ich versuchen, jeden Schritt zu beobachten und dir davon zu berichten.

1 „Gefällt mir“

Ich bin nicht der Besitzer dieses Themas, aber ich möchte mich anschließen, da ich im Grunde auf der gleichen Reise bin.

Derzeit spiele ich mit dem import_phpbb3 und stoße dort bereits auf einige Herausforderungen bei der Erstellung der Benutzer. Ich möchte auch Benutzer-Avatare migrieren, aber es scheint, dass dies nicht für alle Benutzer funktioniert. Bei einigen erhalte ich folgende Fehlermeldung:

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={}>]>

Das Problem scheint das PNG-Dateiformat zu sein. Gibt es eine Möglichkeit, PNG-Dateien zu importieren, oder müssen sie GIF/JPG sein? oxipng ist bereits installiert.

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

In Bezug auf das Passwort-Plugin. Es ist als Teil des Erstellungsprozesses des Import-Containers aktiviert. Oder muss es auch im Discourse-Container erfolgen? Gibt es eine Möglichkeit zu sehen, ob dies funktioniert hat, oder ist es etwas, das die Benutzer ausprobieren müssen?

Vielen Dank im Voraus.

Das Migrate Password Plugin sollte erst nach der Migration im Forum aktiviert werden, da es andernfalls Fehler während des Benutzerimports verursachen kann.

Um zu sehen, ob es funktioniert, aktivieren Sie es einfach und versuchen Sie, sich mit Ihrem alten Passwort anzumelden.

3 „Gefällt mir“

Danke für das Feedback @Canapin
In diesem Fall werde ich den Produktionscontainer neu erstellen, bevor ich ihn neu starte, nachdem der Import im Importcontainer abgeschlossen ist.

Übrigens: Kann jemand vom Admin-Team meinen ursprünglichen Beitrag überprüfen? Es scheint, dass ich ihn zu sehr angepasst habe und als SPAM markiert wurde :smiley:

Hat niemand eine Ahnung, warum der Import von PNG-Dateien nicht funktioniert?

Mehr Informationen wären hilfreich. Welche Version von phpBB? Gibt es eine Fehlermeldung?
Können Sie „funktioniert nicht“ näher erläutern?

1 „Gefällt mir“

Bereits oben geteilt. Es scheint, dass das Importskript PNG-Dateien nicht korrekt lesen kann, da im Grunde alle Werte nil sind.

Oh Entschuldigung, ich habe nicht gesehen, dass du das Problem bereits gepostet hast. Ich kann dir dabei leider nicht helfen, ich habe nicht die richtigen Fähigkeiten.

Edit: (Vielleicht, um meinen kleinen “Fehler” zu vermeiden, hättest du auf deine eigene Nachricht antworten können, damit ich deine erste Nachricht hätte sehen können)

Ich sehe dies gelegentlich während Migrationen, und die betroffenen Dateien können normalerweise nicht in einem Bildbetrachter geöffnet werden, da es sich um ein unbekanntes Dateiformat handelt. Ich gehe immer davon aus, dass diese Dateien im Laufe der Jahre beschädigt wurden.

Sind Sie sicher, dass die PNGs, die Sie zu importieren versuchen, gültige Bilddateien sind? Wenn ja, können Sie ein Beispiel teilen. Importieren Sie auch innerhalb des Docker-Containers oder in einer Entwicklungsumgebung?

3 „Gefällt mir“

TL;DR; Bilder wurden beim Übertragen auf die Linux-Box beschädigt.

@gerhard Ich war mir 100% sicher, dass meine PNG-Dateien gültig und korrekt waren, da ich sie auf meinem Windows-Computer öffnen konnte. Dein Hinweis hat mich jedoch in die richtige Richtung gebracht und ich habe die PNG-Dateien überprüft, wie sie auf der Linux-Box aussehen. Und du hattest absolut Recht, da alle PNG-Dateien beschädigt waren. Die Grundursache war die Art und Weise, wie ich sie übertragen habe. Ich habe SCP (WinSCP) verwendet und PNG-Dateien wurden als Textdateien übertragen, was zu Beschädigungen führte. Bei meinem neuen Versuch habe ich alles als 7z-Archiv übertragen und entpacke sie direkt auf der Linux-Box. Dieses Mal hat der Import einwandfrei funktioniert.

Ich schätze deine Unterstützung sehr, dass du mich in die richtige Richtung gewiesen hast :+1:

Während mein Import jetzt für 99,9% aller Beiträge funktioniert, habe ich noch eine Frage. Gibt es eine Möglichkeit, auch den Status für gelöste Themen zu übertragen? Im neuen Prod-Forum plane ich die Verwendung von discourse-solved. Frage, wie man den alten Status in die neue Welt überträgt?

Nochmal: Ich schätze deine Unterstützung sehr.

2 „Gefällt mir“

Mir ist kein gelöster Status in phpBB bekannt. Ist das eine Erweiterung/ein Mod? Ich vermute, Sie müssen das Importskript anpassen, um es zu importieren.

Ich habe mir die phpbb-Datenbank angesehen und weiß jetzt, welches Feld Informationen darüber speichert, ob ein Thema/Beitrag gelöst wurde. Ich muss nur noch herausfinden, wie und wo ich es in der Discourse-Datenbank speichern kann. :roll_eyes:

1 „Gefällt mir“

Sie können sich andere Import-Skripte ansehen, die das unterstützen (suchen Sie nach „gelöst“, glaube ich). Sie müssen das Plugin in Ihrer Import-Instanz installiert haben.

1 „Gefällt mir“

Vielen Dank für Ihre Antwort, aber das scheint meine Fähigkeiten zu übersteigen.

In der ursprünglichen phpBB-Datenbank wird die ID des Beitrags, der ein Thema löst, gespeichert unter:

  • phpbb_topics.topic_solved.

In Discourse werden die Informationen in 3 verschiedenen Feldern gespeichert (wenn ich mich nicht irre):

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

Soweit ich das verstanden habe, gibt es während des Imports eine Art Mapping, da sich die IDs für topic und post ändern werden.

Aber hier endet mein Wissen.

1 „Gefällt mir“

Dann ist die Erklärung, wie man es modifiziert und debuggt, wahrscheinlich nicht mehr das, was hier geleistet werden kann. Wenn du ein Budget hast, kannst du im Marketplace posten oder mich kontaktieren.

Es wird in einem benutzerdefinierten Feld namens „import_id“ gespeichert und es gibt Funktionen, die du für Lookups verwenden kannst, die du im Code sehen kannst. So etwas wie topic_id_from_import_id()

2 „Gefällt mir“

Danke für das Angebot. Wir sind ein sehr kleines Open-Source-Projekt ohne wirkliches Budget. Anfangs war mir nicht bewusst, dass die Funktion „Thema gelöst“ eine nicht standardmäßige Erweiterung von phpBB ist (ich bin dem Forum Jahre nach seiner Erstellung beigetreten) und dachte, es wäre vielleicht einfach zu beheben. Aber ich verstehe, dass es eine individuelle Anfrage ist, die Zeit zum Bearbeiten erfordert.

Nochmals vielen Dank an euch, die geholfen haben, es fast perfekt zum Laufen zu bringen.

Ach ja, übrigens, Leute, phpBB wurde von einer Version 3.3.5 migriert. Es hat gut funktioniert, auch wenn es nicht unterstützt wurde.

2 „Gefällt mir“

Wenn Sie herausfinden könnten, welche Tabellen an der Diskussion beteiligt sind, könnten Sie möglicherweise ein paar Codezeilen von einem anderen Importeur kopieren.

1 „Gefällt mir“

Ich verstehe. Es werden phpbb Post-/Topic-IDs mit Discourse Post-/Topic-IDs zugeordnet.

Dieses hier scheint ein gutes Beispiel für den Import von accepted answers zu sein: discourse/script/import_scripts/lithium.rb at 44f7a61c2c5b6f248a62ab7f987ebbd3091c71ef · discourse/discourse · GitHub

Aber wenn ich es richtig verstanden habe, müsste ich als ersten Schritt den Wert von phpbb_topics.topic_solved in postgres speichern/importieren, richtig?

1 „Gefällt mir“