Project

General

Profile

Forum conversion » History » Version 26

Amber Herold, 07/12/2010 09:55 AM

1 1 Amber Herold
h1. Forum conversion
2
3
Notes on porting the Leginon BB to Redmine
4
5 14 Amber Herold
# Add Forums 
6
## create new colum for bb forum id
7
## insert the bb forums 
8
# Add column to redmine message db for bb post id
9
# Import all posts to current forums (map forum id's), saving bb post id to new column
10
# enter messages parent ids
11 10 Amber Herold
# edit posts to put into new forum
12
# delete unwanted forums
13 1 Amber Herold
14 10 Amber Herold
15 1 Amber Herold
h2. Redmine DB Tables
16
17
+Messages+
18
19
id   	  board_id   	  parent_id   	  subject   	  content   	  author_id   	  replies_count   	  last_reply_id   	  created_on   	  updated_on   	  locked   	  sticky
20
21
+Boards+
22
23
id   	  project_id   	  name   	  description   	  position   	  topics_count   	  messages_count   	  last_message_id
24
25
26
+Users+
27
28
id   	  login   	  hashed_password   	  firstname   	  lastname   	  mail   	  mail_notification   	  admin   	  status   	  last_login_on   	  language   	  auth_source_id   	  created_on   	  updated_on   	  type   	  identity_url
29
30
31
h2. BB DB Tables
32 2 Amber Herold
33
+Notre_forums+
34
35
forum_id   	  parent_id   	  left_id   	  right_id   	  forum_parents   	  forum_name   	  forum_desc   	  forum_desc_bitfield   	  forum_desc_options   	  forum_desc_uid   	  forum_link   	  forum_password   	  forum_style   	  forum_image   	  forum_rules   	  forum_rules_link   	  forum_rules_bitfield   	  forum_rules_options   	  forum_rules_uid   	  forum_topics_per_page   	  forum_type   	  forum_status   	  forum_posts   	  forum_topics   	  forum_topics_real   	  forum_last_post_id   	  forum_last_poster_id   	  forum_last_post_subject   	  forum_last_post_time   	  forum_last_poster_name   	  forum_last_poster_colour   	  forum_flags   	  display_subforum_list   	  display_on_index   	  enable_indexing   	  enable_icons   	  enable_prune   	  prune_next   	  prune_days   	  prune_viewed   	  prune_freq
36 3 Amber Herold
37 20 Amber Herold
+Notre_posts+
38 3 Amber Herold
39
post_id   	  topic_id   	  forum_id   	  poster_id   	  icon_id   	  poster_ip   	  post_time   	  post_approved   	  post_reported   	  enable_bbcode   	  enable_smilies   	  enable_magic_url   	  enable_sig   	  post_username   	  post_subject   	  post_text   	  post_checksum   	  post_attachment   	  bbcode_bitfield   	  bbcode_uid   	  post_postcount   	  post_edit_time   	  post_edit_reason   	  post_edit_user   	  post_edit_count   	  post_edit_locked
40
41 4 Amber Herold
42
43
+Notre_topics+
44
45
topic_id   	  forum_id   	  icon_id   	  topic_attachment   	  topic_approved   	  topic_reported   	  topic_title   	  topic_poster   	  topic_time   	  topic_time_limit   	  topic_views   	  topic_replies   	  topic_replies_real   	  topic_status   	  topic_type   	  topic_first_post_id   	  topic_first_poster_name   	  topic_first_poster_colour   	  topic_last_post_id   	  topic_last_poster_id   	  topic_last_poster_name   	  topic_last_poster_colour   	  topic_last_post_subject   	  topic_last_post_time   	  topic_last_view_time   	  topic_moved_id   	  topic_bumped   	  topic_bumper   	  poll_title   	  poll_start   	  poll_length   	  poll_max_options   	  poll_last_vote   	  poll_vote_change
46
47 3 Amber Herold
+Notre_users+
48
49
user_id   	  user_type   	  group_id   	  user_permissions   	  user_perm_from   	  user_ip   	  user_regdate   	  username   	  username_clean   	  user_password   	  user_passchg   	  user_pass_convert   	  user_email   	  user_email_hash   	  user_birthday   	  user_lastvisit   	  user_lastmark   	  user_lastpost_time   	  user_lastpage   	  user_last_confirm_key   	  user_last_search   	  user_warnings   	  user_last_warning   	  user_login_attempts   	  user_inactive_reason   	  user_inactive_time   	  user_posts   	  user_lang   	  user_timezone   	  user_dst   	  user_dateformat   	  user_style   	  user_rank   	  user_colour   	  user_new_privmsg   	  user_unread_privmsg   	  user_last_privmsg   	  user_message_rules   	  user_full_folder   	  user_emailtime   	  user_topic_show_days   	  user_topic_sortby_type   	  user_topic_sortby_dir   	  user_post_show_days   	  user_post_sortby_type   	  user_post_sortby_dir   	  user_notify   	  user_notify_pm   	  user_notify_type   	  user_allow_pm   	  user_allow_viewonline   	  user_allow_viewemail   	  user_allow_massemail   	  user_options   	  user_avatar   	  user_avatar_type   	  user_avatar_width   	  user_avatar_height   	  user_sig   	  user_sig_bbcode_uid   	  user_sig_bbcode_bitfield   	  user_from   	  user_icq   	  user_aim   	  user_yim   	  user_msnm   	  user_jabber   	  user_website   	  user_occ   	  user_interests   	  user_actkey   	  user_newpasswd   	  user_form_salt
50 5 Amber Herold
51
52 7 Amber Herold
h2. Conversion tables
53 1 Amber Herold
54 7 Amber Herold
55 1 Amber Herold
h3. Redmine Users
56
57 14 Amber Herold
Search for the user to have an existing entry, if not their posts will be assigned to anonymous.
58
59 1 Amber Herold
|_.Redmine Entry|_.BB Entry|
60 5 Amber Herold
|id||
61 7 Amber Herold
|login|notre_users->username|
62 1 Amber Herold
|hashed_password||
63 5 Amber Herold
|firstname||
64
|lastname||
65 19 Amber Herold
|mail|notre_users->user_email|
66 1 Amber Herold
|mail_notification||
67 5 Amber Herold
|admin||
68
|status||
69
|last_login_on||
70 19 Amber Herold
|language|notre_users->user_lang|
71 5 Amber Herold
|auth_source_id||
72
|created_on||
73
|updated_on||
74
|type||
75
|identity_url||
76 8 Amber Herold
77 1 Amber Herold
78 10 Amber Herold
h3. Redmine Boards
79
80 1 Amber Herold
We will create these from scratch - Development, Using Leginon, Using Appion, Tomography, Installation, Administration Tools
81
82
|_.Redmine Entry|_.BB Entry|
83 9 Amber Herold
|id||   	  
84 13 Amber Herold
|project_id|(the leginon id)|   	  
85 19 Amber Herold
|name|notre_forums->forum_name|   	  
86
|description|notre_forums->forum_desc|   	  
87 1 Amber Herold
|position||   	  
88 19 Amber Herold
|topics_count|notre_forums->forum_topics|   	  
89
|messages_count|notre_forums->forum_posts|   	  
90 20 Amber Herold
|last_message_id|After all messages are ported add: notre_forums->forum_last_post_id->Redmine Messages->bb_post_id->id|
91 19 Amber Herold
|bb_forum_id|notre_forums->forum_id|
92 9 Amber Herold
93 1 Amber Herold
94 9 Amber Herold
95 1 Amber Herold
h3. Redmine Messages
96 9 Amber Herold
97 1 Amber Herold
|_.Redmine Entry|_.BB Entry|
98
|id||   	  
99 19 Amber Herold
|board_id|notre_posts->forum_id->Redmine Boards->bb_forum_id->id|
100
|parent_id|Add these as second step after all posts moved over, notre_posts->topic_id->notre_topics->topic_first_post_id->Redmine Messages->bb_post_id->id|   	  
101
|subject|notre_posts->post_subject|   	  
102
|content|notre_posts->post_text (need to get BLOB)|   	  
103
|author_id|notre_posts->poster_id->notre_users->user_email->Users->mail->Users->id, if does not exist assign to anonymous|   	  
104 12 Amber Herold
|replies_count|Set all to 0 then check Notre_topics->topic_first_post_id and update that message with Notre_topics->topic_replies|   	  
105 19 Amber Herold
|last_reply_id|Set all to NULL then check notre_topics->topic_first_post_id->Redmine Messages->bb_post_id->id and update that message with notre_topics->topic_last_post_id->Redmine Messages->bb_post_id->id|   	  
106
|created_on|notre_posts->post_time (may need a conversion)|   	  
107 20 Amber Herold
|updated_on|notre_posts->post_edit_time (may need a conversion)|   	  
108
|locked|notre_posts->post_edit_locked|   	  
109
|sticky|0|
110 19 Amber Herold
|bb_post_id|notre_posts->post_id|
111 15 Amber Herold
112
113
114
h2. Commands
115
116
117
h3. Make backups
118
119
First backup the tables that we will be modifying:
120
121
bq. mysqldump -u amber -p --skip-lock-tables --extended-insert redmine boards > boards-preport.sql
122
123
bq. mysqldump -u amber -p --skip-lock-tables --extended-insert redmine messages > messages-preport.sql
124 16 Amber Herold
125
126
h3. Add temporary columns to the boards and messages tables
127
128
<pre>
129
ALTER TABLE boards
130
ADD bb_post_id int(11);
131
132
ALTER TABLE messages
133
ADD bb_forum_id int(11);
134 26 Amber Herold
135
ALTER TABLE messages
136
ADD bb_topic_id int(11);
137 16 Amber Herold
</pre>
138 1 Amber Herold
139 16 Amber Herold
140 1 Amber Herold
141 18 Amber Herold
h3. Add forums 
142 1 Amber Herold
143 18 Amber Herold
<pre>
144
INSERT INTO redmine.boards (project_id, name, description, topics_count, messages_count, bb_forum_id)
145 1 Amber Herold
SELECT redmine.projects.id, bb2.notre_forums.forum_name, bb2.notre_forums.forum_desc, bb2.notre_forums.forum_topics, bb2.notre_forums.forum_posts, bb2.notre_forums.forum_id
146
FROM redmine.projects, bb2.notre_forums
147
WHERE redmine.projects.identifier="leginon" 
148
</pre>
149
150 20 Amber Herold
Inserts 9 rows.
151
152
153
h3. Add Messages
154
155
156
157
<pre>
158
INSERT INTO redmine.messages (board_id, subject, content,  locked, sticky, bb_post_id)
159
SELECT redmine.boards.id, bb2.notre_posts.post_subject, bb2.notre_posts.post_text, bb2.notre_posts.post_edit_locked, 0, bb2.notre_posts.post_id
160
FROM bb2.notre_posts, redmine.boards
161
WHERE bb2.notre_posts.forum_id = redmine.boards.bb_forum_id;   
162
</pre>
163
164
inserted 603 rows.
165
166 26 Amber Herold
167
h3. Add bb_topic_id to messages
168
169
<pre>
170
UPDATE redmine.messages
171
SET redmine.messages.bb_topic_id=bb2.notre_posts.topic_id
172
WHERE redmine.messages.bb_post_id = bb2.notre_posts.post_id;
173
</pre>
174 21 Amber Herold
175
h3. Add parent_id to messages
176
177
<pre>
178
UPDATE redmine.messages
179
SET redmine.messages.parent_id=redmine.messages.id
180
WHERE redmine.messages.id IN
181
(
182
 SELECT redmine.messages.id 
183
 FROM redmine.messages 
184
 WHERE redmine.messages.bb_post_id IN
185
 (
186
  SELECT bb2.notre_topics.topic_first_post_id
187
  FROM bb2.notre_topics
188
  WHERE bb2.notre_topics.topic_id IN
189
  (
190
   SELECT bb2.notre_posts.topic_id
191
   FROM bb2.notre_posts, redmine.messages
192 23 Amber Herold
   WHERE redmine.messages.bb_post_id = bb2.notre_posts.post_id
193 21 Amber Herold
  )
194
 )
195
); 
196
</pre>
197
198 22 Amber Herold
To avoid a "bug with mySQL":http://emg.nysbc.org/projects/amigroup/wiki/Mysql_Nested_Subqueries_Problem , rewrite the above query:
199
200
<pre>
201
UPDATE redmine.messages
202 24 Amber Herold
SET redmine.messages.parent_id=
203 22 Amber Herold
(
204 24 Amber Herold
 SELECT r_messages.id 
205 23 Amber Herold
 FROM (SELECT * FROM redmine.messages) AS r_messages  
206 22 Amber Herold
 INNER JOIN 
207
    (
208
    SELECT bb2.notre_topics.topic_first_post_id AS TopicFirstPostId 
209
    FROM bb2.notre_topics 
210
    INNER JOIN 
211
        (         
212
        SELECT bb2.notre_posts.topic_id AS TopicId 
213 23 Amber Herold
        FROM bb2.notre_posts, redmine.messages 
214
        WHERE redmine.messages.bb_post_id=bb2.notre_posts.post_id 
215 22 Amber Herold
        ) AS TopicIds 
216 23 Amber Herold
    ON bb2.notre_topics.topic_id=TopicIds.TopicId 
217 22 Amber Herold
    ) AS TopicFirstPostIds 
218 23 Amber Herold
 ON r_messages.bb_post_id=TopicFirstPostIds.TopicFirstPostId
219 25 Amber Herold
 WHERE r_messages.bb_post_id = redmine.messages.bb_post_id
220
)
221
WHERE redmine.messages.bb_post_id IS NOT NULL;
222 22 Amber Herold
</pre>
223 21 Amber Herold
224 20 Amber Herold
h3. Convert Unix timestamps to ISO 8601 and add to messages
225
226
bb2.notre_posts.post_time, bb2.notre_posts.post_edit_time,
227
228
http://aruljohn.com/timestamp2date.html
229
230
h3. Add author_id to messages
231
232
h3. Add replies_count to messages
233
234
h3. Add last_reply_id to messages
235 16 Amber Herold
236
237
238
239
h3. Create a backup of the tables
240
241
bq. mysqldump -u amber -p --skip-lock-tables --extended-insert redmine boards > boards-postport.sql
242
243
bq. mysqldump -u amber -p --skip-lock-tables --extended-insert redmine messages > messages-postport.sql
244
245
246
h3. Remove the temporary columns
247
248
<pre>
249
ALTER TABLE boards
250
DROP COLUMN bb_post_id;
251
252
ALTER TABLE messages
253
DROP COLUMN bb_forum_id;
254
</pre>