MyBB Community Forums

Full Version: Keeping threads rating mybb forums merging
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hi,

I want to merge two differents mybb forum. When i'm doing it, i'm losing the thread ratings of the forum I'm importing the datas : in the databse, the table mybb_threadratings does not contained it.


Is it possible to keep the rating of the different users ? Or should I do it after the merge by using personnal sql commands ?

Please, use the following on a backup database, you can't recover lost data !

Up to know, I have done the following in order to recover the thread ratings of the merged forum :

The merged forum has the prefix tempo_ and the new forum has the prefix mybb_ for the tables in database.

First copy the old table :

CREATE TABLE copie_threadratings
AS SELECT * FROM tempo_threadratings;

Add three columns to have the subject and the dateline from the merged forum and the new tid of the new forum :

ALTER TABLE `copie_threadratings` ADD `subject` varchar(120);
ALTER TABLE `copie_threadratings` ADD `new_tid` INT(10);
ALTER TABLE `copie_threadratings` ADD `username` varchar(120);
ALTER TABLE `copie_threadratings` ADD `new_uid` INT(10);
ALTER TABLE `copie_threadratings` ADD `dateline` bigint(30);

Fill the subject's column by matching theirs tid :

UPDATE copie_threadratings
   SET subject = (SELECT subject 
                 FROM tempo_threads t1
                 WHERE t1.tid = copie_threadratings.tid);

Fill the username column by matching with their old uid :
UPDATE copie_threadratings
   SET username = (SELECT username 
                 FROM tempo_users t2
				 WHERE t2.uid = copie_threadratings.uid);

Now it is possible to match to theirs new uid :
UPDATE copie_threadratings
   SET new_uid = (SELECT uid 
                 FROM mybb_users t3
				 WHERE t3.username = copie_threadratings.username);

Same for the dateline column :

UPDATE copie_threadratings
   SET dateline = (SELECT dateline 
                 FROM tempo_threads t4
                 WHERE t4.tid = copie_threadratings.tid);

Fill the new_tid column by matching the subject and dateline (using two values permits to avoid a multi-matching) :

UPDATE copie_threadratings
   SET new_tid = (SELECT tid 
                 FROM mybb_threads t5
                 WHERE t5.subject = copie_threadratings.subject
                 AND t5.dateline = copie_threadratings.dateline);

Now it is possible to add these ratings to the table of thread ratings for the new forum :

INSERT INTO mybb_threadratings (`rid`, `tid`, `uid`, `rating`, `ipaddress`)
SELECT `rid`, `new_tid`, `uid`, `rating`, `ipaddress`
FROM copie_threadratings;


Now it is possible to delete the first copy :
DROP TABLE copie_threadratings;

It seems to work for me, hope this will help somebody else.

If anybody sees something wrong, feel free to correct me ;-)