Open Italia Network
Open Italia Network

Home page

Il_Barone_Rosso
baronerosso@baronerosso.net
http://www.baronerosso.net
 

Premessa
Il sistema per l'importazione dei messaggi dal forum phpBB a PNphpBB2.1.1 può avvenire regolarmente solo se il phpBB installato è una versione 2.0.1 o 2.0.4 Stand Alone (eventualmente fate un upgrade) oppure se sono installati i seguenti MOD:
hpBB2pnmod-F
phpBB2pnmod-203
phpBB2pnmod-203-Attachments
PNphpBB2 .1.0b/.1.0c
PNphpBB2 1.0
Altre indicazioni le trovate sul sito www.pnphpbb.com

L'intera procedura è stata testata più volte su 2 database differenti, uno ha subito addirittura 3 processi d'importazione partendo da VBulletin 1.0 -> VBulletin 2.0 -> phpBB2.4 -> PNphpBB ed incredibilmente funziona :-) !!divisione!!


Caso 1 - Installazione pulita di Envolution

Step 1
Installare Envolution con la normale procedura, NON aggiungete nuovi utenti al sistema.

Step 2
Tramite PhpMyAdmin (od altro tool simile) accedete al database di Envolution ed importate al suo interno tutte le tabelle del vostro forum phpBB (nel caso il file fosse troppo grosso dividetelo in file più piccoli).
Le tabelle non vanno assolutamente rinominate.

Step 3
Copiate su Envolution il modulo PNphpBB2_11a, quindi andate in Amministrazione->Moduli->Rigenera e cliccate su Processa del modulo PNphpBB2.
Ora il modulo convertirà utenti e tabelle del vecchio phpBB e le adatteranno al nuovo PNphpBB. Durante la conversione del db, sullo schermo possono comparire degli errori di sql, dovuti alla mancanza di alcune tabelle, ciò non dovrebbe causare problemi in quanto quegli errori possono essere motivati dalla mancanza del Mod Attachments o di altri Mod che non erano installati sul phpBB (quindi mancano le tabelle relative). La procedura deve in ogni caso arrivare fino alla fine, quando in fondo alla pagina comparirà il messaggio "Aggiornamento PNphpBB2 completato", ora tornate in Amministrazione Moduli e cliccate su attiva.
E' consigliabile fare un copia/incolla dei messaggi a video perché possono sempre essere utili in caso di problemi.

Durante la procedura vengono aggiunti alla lista utenti di Envolution (tabella envo_user) i dati degli utenti del Forum (tabella phpbb_users), ad eccezione dell'amministratore di Envolution (nella tabella envo_user ha il pn_uid=2) che invece viene a sua volta copiato nella tabella del forum sovrascrivendo il vecchio utente con ID=2.
Ora l'utente con ID=2 è di solito l'amministratore del forum phpBB, quindi se all'origine i 2 utenti coincidono non ci sono problemi ma nel caso non fosse così risulta che l'amministratore di Envolution è il nuovo autore dei vecchi messaggi postati dal vecchio utente con ID=2.
Eventualmente se volete lasciare assegnati al vecchio user id=2 del forum i suoi messaggi, semplicemente aggiungete alla lista utenti di Envolution il vecchio utente, quindi modificate l'id dei vecchi messaggi con quello nuovo (procedura qui sotto).

Ricordate anche che i vecchi permessi del forum phpBB risultano ancora validi, ma solo all'interno del forum (pannello di controllo escluso).
!!divisione!!


Caso 2 - Installazione su Envolution con lista utenti piena

Nel caso la lista utenti di Envolution risultasse già piena non è ovviamente possibile importare direttamente gli utenti del forum in quanto la procedura d’installazione svuota la tabella envo_user e la riempie con gli utenti del forum (presi dalla tabella phpbb_users), quindi oltre a perdere i dati degli utenti, tutti gli articoli, i commenti e qualunque altro contributo sul sito vengono riassegnati ai nuovi utenti. L'unico sistema per importare i nuovi utenti ed i loro messaggi correttamente è di creare una nuova tabella phpbb_users che conterrà sia gli utenti del forum che quelli di Envolution, ovviamente dato che non è possibile che 2 utenti abbiano lo stesso ID occorrerà modificare tutti gli ID degli utenti del forum.
Qui le cose si fanno un po' complicate, in quanto la mole di lavoro è direttamente proporzionale al numero di utenti/messaggi del forum, infatti l'ID è riportato oltre che nella tabella phpbb_users, anche in altre 4 tabelle e duplicato più volte all'interno delle stesse (quindi se dovete modificare più utenti le cose si complicano non poco).
Facendo riferimento alla versione phpBB2.0.4 Stand Alone (ovvero con nessun mod installato) le tabelle da modificare sono:

phpbb_users, campo user_id (sono tutti i dati degli user, un unico utente)
phpbb_topics, campo topic_poster (possono essere più di uno)
phpbb_posts, campo poster_id (possono essere più di uno)
phpbb_groups, campo group_id (unico, gestisce i permessi)
Se avete qualche mod installato è probabile che ci siano altre tabelle da sistemare

Per chi mastica poco l'SQL ecco le query da eseguire:
UPDATE phpbb_users SET user_idd="NUOVOID" WHERE user_id="VECCHIOID";
UPDATE phpbb_topics SET topic_poster="NUOVOID" WHERE topic_poster="VECCHIOID";
UPDATE phpbb_posts SET poster_id="NUOVOID" WHERE poster_id="VECCHIOID";
UPDATE phpbb_groups SET group_id="NUOVOID" WHERE group_id="VECCHIOID";
Queste query vanno eseguite per ogni utente che dovete modificare, ovviamente dovete sostituire VECCHIOID con il numero del vecchio ID e NUOVOID con il nuovo ID che volete assegnarli.
Anche in presenza di più messaggi le query vanno eseguite una sola volta per utente.

Vista l'alta possibilità di commettere errori è consigliabile procedere in maniera più ordinata possibile.
Per prima cosa eliminate l'utente con ID 1 dalla tabella phpbb_users è l'utente "Anonymous", già presente nella lista di Envolution, poi stampatevi su carta (o altro sistema) la tabella phpbb_users, più precisamente i campi user_id (id utente) e username (nome utente), quindi controllate se nell'elenco degli utenti di Envolution esistono alcuni utenti identici, se ci sono, segnatevi sull'elenco stampato il loro ID (lo ricavate dalla tabella envo_users, campo pn_uid), fatto ciò segnatevi anche l'ID dell'ultimo utente di Envolution, quindi siete pronti a fare la modifica.
Ora proseguite modificando prima gli utenti in comune con Envolution (e tutti i loro messaggi) e poi tutti gli altri ricordando che il primo dei nuovi utenti deve avere l'ID superiore di una unità a quello dell'ultimo utente di Envolution (segnatevi sullo stampato i nuovi ID).
Fatte tutte le modifiche importate dalla tabella envo_users gli utenti di Envolution tramite la query:

INSERT INTO phpbb_users (user_id, username, user_email, user_website, user_regdate, user_password, user_icq, user_aim, user_yim, user_msnm, user_sig) SELECT pn_uid, pn_uname, pn_email, pn_url, pn_user_regdate, pn_pass, pn_user_icq, pn_user_aim, pn_user_yim, pn_user_msnm, pn_user_sig FROM envo_users;

Quindi effettuate una copia della tabella envo_user e proseguite come da installazione pulita di Envolution.
Una volta che la procedura è completata, occorre fare un update dei vecchi utenti per riassegnarli alcuni valori che gli sono stati cancellati con l'update, ad esempio i campi pn_uorder, pn_ublockon ecc. ecc. che sono contenuti nella copia della tabella effettuata prima.


2003 ©  Open Italia Network
http://www.openitalia.net/CMpro-v-p-131.html