Importazione da phpBB

Ciao, sto cercando di importare un vecchio forum phpBB2 nel nuovo Discourse.

Ho effettuato l’importazione preliminare da phpBB2 a phpBB3, come indicato nella documentazione.

Ho avuto problemi con l’importazione degli avatar (nessuna importazione) e con le password. Sicuramente Discourse utilizza un metodo di crittografia diverso da phpBB2, quindi stavo pensando di scrivere del codice che al primo accesso verifichi se le password sono crittografate nel modo phpBB2, verifichi se con la crittografia phpBB2 (md5?) la password corrisponde all’hash salvato e poi la riscriva con la crittografia Discourse.

Di solito, con i “vecchi buoni” PHP e MySQL, è solo un lavoro di mezz’ora, ma con Discourse non so nemmeno da dove iniziare a modificare il codice sorgente. Il mio vecchio phpBB2 era pesantemente modificato (per questo motivo non l’ho mai aggiornato a phpBB3), ma so che non è una buona abitudine e non voglio pasticciare con Discourse e perdere il suo automatismo di aggiornamento, quindi chiedo come potrei gestire la mia esigenza. Dovrei sviluppare un plugin? C’è qualche possibilità di avere questa funzionalità in una nuova versione “beta”?

Grazie

Per importare le password è necessario il plugin Migrated password hashes support. Questo potrebbe risolvere il tuo problema con le password.

È difficile dire se il tuo problema con l’avatar sia dovuto al fatto che i tuoi dati non sono compatibili o se semplicemente non hai configurato correttamente lo script.

1 Mi Piace

Grazie per il tuo suggerimento, ci proverò al più presto. Per quanto riguarda gli avatar, ho ricontrollato ogni passaggio come dalla tua guida, ma senza successo. Tuttavia, poiché dovrò ripetere l’importazione, cercherò di osservare ogni passaggio e ti riferirò.

1 Mi Piace

Non sono il proprietario di questo argomento, ma mi piacerebbe connettermi perché sono fondamentalmente nello stesso percorso.

Attualmente sto giocando con import_phpbb3 e lì sto già affrontando alcune sfide durante la creazione degli utenti. Mi piacerebbe migrare anche l’avatar dell’utente, ma sembra che non funzioni per tutti gli utenti. Per alcuni ricevo il seguente problema

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

Il problema sembra essere il formato del file png. C’è un modo per importare anche i file png o devono essere gif/jpg? oxipng è già installato.

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

Per quanto riguarda il plugin password. L’ho attivato come parte della creazione del container di importazione. O deve essere fatto anche nel container discourse? C’è un modo per vedere se ha funzionato o sarebbe qualcosa che l’utente dovrebbe provare?

Molte grazie in anticipo.

Il plugin migrate password deve essere attivato solo sul forum dopo che la migrazione è stata completata, altrimenti può causare errori durante le importazioni degli utenti.

Per vedere se funziona, attivalo e prova ad accedere con la tua vecchia password.

3 Mi Piace

Grazie per il feedback @Canapin
In questo caso ricostruirò il container di produzione prima di riavviarlo, dopo che l’importazione sarà terminata nel container di importazione.

A proposito: qualcuno del team di amministrazione può controllare il mio post iniziale? Sembra che l’abbia modificato troppo e sia stato contrassegnato come SPAM :smiley:

Qualcuno ha un’idea del perché l’importazione di file PNG non funzioni?

Sarebbero utili maggiori informazioni. Quale versione di phpBB? Messaggi di errore?
Puoi spiegare meglio “non funziona”?

1 Mi Piace

Già condiviso sopra. Sembra che lo script di importazione non sia in grado di leggere correttamente i file PNG poiché fondamentalmente tutti i valori sono nil

Oh scusa, non avevo visto che avevi già pubblicato il problema. Non posso aiutarti con questo, mi dispiace, non ho le competenze adeguate.

edit: (forse per evitare il mio piccolo “errore”, avresti potuto rispondere al tuo stesso messaggio così avrei potuto vedere il tuo primo messaggio)

Di tanto in tanto mi capita durante le migrazioni e i file interessati di solito non possono essere aperti in un visualizzatore di immagini a causa di un formato file sconosciuto. Suppongo sempre che questi file si siano corrotti nel corso degli anni.

Sei sicuro che le PNG che stai cercando di importare siano file immagine validi? Se sì, puoi condividerne un esempio. Inoltre, stai importando all’interno del container Docker o in un ambiente di sviluppo?

3 Mi Piace

TL;DR; Le immagini sono state corrotte durante il trasferimento su una macchina Linux.

@gerhard Ero sicuro al 100% che i miei file PNG fossero validi e corretti, poiché potevo aprirli sul mio computer Windows. Tuttavia, il tuo suggerimento mi ha indirizzato nella giusta direzione e ho verificato come apparivano i file PNG sulla macchina Linux. E avevi assolutamente ragione, poiché tutti i file PNG erano danneggiati. La causa principale è stata il modo in cui li ho trasferiti. Ho usato SCP (WinSCP) e i file PNG sono stati trasferiti come file di testo, portando alla corruzione. Nel mio nuovo tentativo, ho trasferito tutto come archivio 7z ed estratto direttamente sulla macchina Linux. Questa volta l’importazione ha funzionato correttamente.

Apprezzo molto il tuo supporto, indirizzandomi nella giusta direzione :+1:

Mentre la mia importazione ora funziona per il 99,9% di tutti i post, ho un’altra domanda. C’è un modo per trasferire anche lo stato dei topic risolti? Sul nuovo forum di produzione ho intenzione di utilizzare discourse-solved. Domanda: come trasferire lo stato precedente nel nuovo mondo?

Ancora: Apprezzo molto il tuo supporto.

2 Mi Piace

Non sono a conoscenza di uno stato risolto in phpBB. Si tratta di un’estensione/mod? Presumo che dovrai personalizzare lo script di importazione per poterlo importare.

Ho dato un’occhiata al database di phpbb e ora conosco il campo che memorizza le informazioni su un argomento/post risolto. Devo solo scoprire come e dove memorizzarlo nel database di Discourse. :roll_eyes:

1 Mi Piace

Puoi guardare altri script di importazione che lo supportano (cerca “solved” credo) Dovrai avere il plugin installato nella tua istanza di importazione.

1 Mi Piace

Grazie per la tua risposta, ma sembra andare oltre le mie capacità.

Nel database phpbb di origine, l’ID del post che risolve un argomento è memorizzato su

  • phpbb_topics.topic_solved.

In Discourse, le informazioni sono memorizzate su 3 campi diversi (se non mi sbaglio)

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

Per quanto ho capito, viene eseguita una sorta di mappatura durante l’importazione poiché gli ID per topic + post cambieranno.

Ma la mia conoscenza finisce qui.

1 Mi Piace

Quindi spiegare come modificarlo e debuggarlo è probabilmente oltre ciò che si può realizzare qui. Se hai un budget, puoi pubblicare in Marketplace o contattarmi.

È memorizzato in un campo personalizzato chiamato “import_id” e ci sono funzioni che puoi usare per fare ricerche che puoi vedere nel codice. Qualcosa come topic_id_from_import_id()

2 Mi Piace

Grazie per l’offerta. Siamo un progetto open source molto piccolo senza un vero budget. All’inizio non ero consapevole che la funzione “argomento risolto” fosse un’estensione non standard su phpbb (mi sono unito al forum anni dopo la sua creazione) e pensavo che potesse essere facile da correggere. Ma ho capito che si tratta di una richiesta individuale, che richiede tempo per essere esaminata.

Ancora grazie a voi che avete aiutato a farlo funzionare quasi perfettamente.

Ah, a proposito ragazzi, phpbb è stato migrato da una versione 3.3.5. Ha funzionato bene, anche se non supportato.

2 Mi Piace

Se fossi in grado di capire quali tabelle sono coinvolte nel discorso, potresti benissimo copiare alcune righe di codice da un altro importatore.

1 Mi Piace

Capisco. Sta mappando gli ID dei post/argomenti di phpbb con gli ID dei post/argomenti di Discourse

Questo sembra un buon esempio per importare le risposte accettate discourse/script/import_scripts/lithium.rb at 44f7a61c2c5b6f248a62ab7f987ebbd3091c71ef · discourse/discourse · GitHub

Ma se ho capito bene, come primo passo dovrei archiviare/importare il valore di phpbb_topics.topic_solved in postgres?

1 Mi Piace