more improvements to vBulletin import script
This commit is contained in:
parent
951ef0d949
commit
59523aef9d
|
@ -31,6 +31,7 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
|||
def execute
|
||||
import_groups
|
||||
import_users
|
||||
create_groups_membership
|
||||
import_categories
|
||||
import_topics
|
||||
import_posts
|
||||
|
@ -40,7 +41,7 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
|||
close_topics
|
||||
post_process_posts
|
||||
|
||||
create_permalinks
|
||||
create_permalink_file
|
||||
suspend_users
|
||||
end
|
||||
|
||||
|
@ -89,7 +90,7 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
|||
email: user["email"].presence || fake_email,
|
||||
website: user["homepage"].strip,
|
||||
title: @htmlentities.decode(user["usertitle"]).strip,
|
||||
primary_group_id: group_id_from_imported_group_id(user["usergroupid"]),
|
||||
primary_group_id: group_id_from_imported_group_id(user["usergroupid"].to_i),
|
||||
created_at: parse_timestamp(user["joindate"]),
|
||||
last_seen_at: parse_timestamp(user["lastvisit"]),
|
||||
post_create_action: proc do |u|
|
||||
|
@ -102,6 +103,32 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
|||
end
|
||||
end
|
||||
|
||||
def create_groups_membership
|
||||
puts "", "Creating groups membership..."
|
||||
|
||||
Group.find_each do |group|
|
||||
begin
|
||||
next if group.automatic
|
||||
puts "\t#{group.name}"
|
||||
next if GroupUser.where(group_id: group.id).count > 0
|
||||
user_ids_in_group = User.where(primary_group_id: group.id).pluck(:id).to_a
|
||||
next if user_ids_in_group.size == 0
|
||||
values = user_ids_in_group.map { |user_id| "(#{group.id}, #{user_id}, CURRENT_TIMESTAMP, CURRENT_TIMESTAMP)" }.join(",")
|
||||
|
||||
User.exec_sql <<-SQL
|
||||
BEGIN;
|
||||
INSERT INTO group_users (group_id, user_id, created_at, updated_at) VALUES #{values};
|
||||
COMMIT;
|
||||
SQL
|
||||
|
||||
Group.reset_counters(group.id, :group_users)
|
||||
rescue Exception => e
|
||||
puts e.message
|
||||
puts e.backtrace.join("\n")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
def import_profile_picture(old_user, imported_user)
|
||||
query = mysql_query <<-SQL
|
||||
SELECT filedata, filename
|
||||
|
@ -163,9 +190,9 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
|||
|
||||
categories = mysql_query("SELECT forumid, title, description, displayorder, parentid FROM #{TABLE_PREFIX}forum ORDER BY forumid").to_a
|
||||
|
||||
# top_level_categories = categories.select { |c| c["parentid"] == -1 }
|
||||
top_level_categories = categories.select { |c| c["parentid"] == -1 }
|
||||
|
||||
create_categories(categories) do |category|
|
||||
create_categories(top_level_categories) do |category|
|
||||
{
|
||||
id: category["forumid"],
|
||||
name: @htmlentities.decode(category["title"]).strip,
|
||||
|
@ -174,27 +201,27 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
|||
}
|
||||
end
|
||||
|
||||
# puts "", "importing children categories..."
|
||||
#
|
||||
# children_categories = categories.select { |c| c["parentid"] != -1 }
|
||||
# top_level_category_ids = Set.new(top_level_categories.map { |c| c["forumid"] })
|
||||
#
|
||||
# # cut down the tree to only 2 levels of categories
|
||||
# children_categories.each do |cc|
|
||||
# while !top_level_category_ids.include?(cc["parentid"])
|
||||
# cc["parentid"] = categories.detect { |c| c["forumid"] == cc["parentid"] }["parentid"]
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# create_categories(children_categories) do |category|
|
||||
# {
|
||||
# id: category["forumid"],
|
||||
# name: @htmlentities.decode(category["title"]).strip,
|
||||
# position: category["displayorder"],
|
||||
# description: @htmlentities.decode(category["description"]).strip,
|
||||
# parent_category_id: category_id_from_imported_category_id(category["parentid"])
|
||||
# }
|
||||
# end
|
||||
puts "", "importing children categories..."
|
||||
|
||||
children_categories = categories.select { |c| c["parentid"] != -1 }
|
||||
top_level_category_ids = Set.new(top_level_categories.map { |c| c["forumid"] })
|
||||
|
||||
# cut down the tree to only 2 levels of categories
|
||||
children_categories.each do |cc|
|
||||
while !top_level_category_ids.include?(cc["parentid"])
|
||||
cc["parentid"] = categories.detect { |c| c["forumid"] == cc["parentid"] }["parentid"]
|
||||
end
|
||||
end
|
||||
|
||||
create_categories(children_categories) do |category|
|
||||
{
|
||||
id: category["forumid"],
|
||||
name: @htmlentities.decode(category["title"]).strip,
|
||||
position: category["displayorder"],
|
||||
description: @htmlentities.decode(category["description"]).strip,
|
||||
parent_category_id: category_id_from_imported_category_id(category["parentid"])
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
def import_topics
|
||||
|
@ -237,6 +264,18 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
|||
t[:pinned_at] = t[:created_at] if topic["sticky"].to_i == 1
|
||||
t
|
||||
end
|
||||
|
||||
# uncomment below lines to create permalink
|
||||
# topics.each do |thread|
|
||||
# topic_id = "thread-#{thread["threadid"]}"
|
||||
# topic = topic_lookup_from_imported_post_id(topic_id)
|
||||
# if topic.present?
|
||||
# title_slugified = thread["title"].gsub(" ","-").gsub(".","-") if thread["title"].present?
|
||||
# url_slug = "threads/#{thread["threadid"]}-#{title_slugified}" if thread["title"].present?
|
||||
# Permalink.create(url: url_slug, topic_id: topic[:topic_id].to_i) if url_slug.present? && topic[:topic_id].present?
|
||||
# end
|
||||
# end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
|
@ -567,6 +606,24 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
|||
"@#{old_username}"
|
||||
end
|
||||
|
||||
# [FONT=blah] and [COLOR=blah]
|
||||
raw.gsub! /\[FONT=.*?\](.*?)\[\/FONT\]/im, '\1'
|
||||
raw.gsub! /\[COLOR=.*?\](.*?)\[\/COLOR\]/im, '\1'
|
||||
raw.gsub! /\[COLOR=#.*?\](.*?)\[\/COLOR\]/im, '\1'
|
||||
|
||||
raw.gsub! /\[SIZE=.*?\](.*?)\[\/SIZE\]/im, '\1'
|
||||
raw.gsub! /\[h=.*?\](.*?)\[\/h\]/im, '\1'
|
||||
|
||||
# [CENTER]...[/CENTER]
|
||||
raw.gsub! /\[CENTER\](.*?)\[\/CENTER\]/im, '\1'
|
||||
|
||||
# [INDENT]...[/INDENT]
|
||||
raw.gsub! /\[INDENT\](.*?)\[\/INDENT\]/im, '\1'
|
||||
raw.gsub! /\[TABLE\](.*?)\[\/TABLE\]/im, '\1'
|
||||
raw.gsub! /\[TR\](.*?)\[\/TR\]/im, '\1'
|
||||
raw.gsub! /\[TD\](.*?)\[\/TD\]/im, '\1'
|
||||
raw.gsub! /\[TD="?.*?"?\](.*?)\[\/TD\]/im, '\1'
|
||||
|
||||
# [QUOTE]...[/QUOTE]
|
||||
raw.gsub!(/\[quote\](.+?)\[\/quote\]/im) { |quote|
|
||||
quote.gsub!(/\[quote\](.+?)\[\/quote\]/im) { "\n#{$1}\n" }
|
||||
|
@ -607,7 +664,7 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
|||
raw.gsub!(/\[\*\]\n/, '')
|
||||
raw.gsub!(/\[\*\](.*?)\[\/\*:m\]/, '[li]\1[/li]')
|
||||
raw.gsub!(/\[\*\](.*?)\n/, '[li]\1[/li]')
|
||||
|
||||
raw.gsub!(/\[\*=1\]/, '')
|
||||
|
||||
raw
|
||||
end
|
||||
|
@ -683,8 +740,8 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
|||
end
|
||||
|
||||
|
||||
def create_permalinks
|
||||
puts '', 'Creating Permalinks...', ''
|
||||
def create_permalink_file
|
||||
puts '', 'Creating Permalink File...', ''
|
||||
|
||||
id_mapping = []
|
||||
|
||||
|
@ -723,7 +780,7 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
|||
system_user = Discourse.system_user
|
||||
|
||||
mysql_query("SELECT userid, bandate FROM #{TABLE_PREFIX}userban").each do |b|
|
||||
user = User.find_by_id(b['userid'])
|
||||
user = User.find_by_id(user_id_from_imported_user_id(b['userid']))
|
||||
if user
|
||||
user.suspended_at = parse_timestamp(user["bandate"])
|
||||
user.suspended_till = 200.years.from_now
|
||||
|
|
Loading…
Reference in New Issue