mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
update bbcode dialect and fix vBulletin importer
This commit is contained in:
@@ -243,6 +243,9 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
||||
def import_groups
|
||||
puts "", "Importing groups..."
|
||||
|
||||
# sort the groups
|
||||
@groups.sort_by! { |group| group[:usergroupid].to_i }
|
||||
|
||||
create_groups(@groups) do |group|
|
||||
{
|
||||
id: group[:usergroupid],
|
||||
@@ -255,10 +258,13 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
||||
def import_users
|
||||
puts "", "Importing users..."
|
||||
|
||||
# sort the users
|
||||
@users.sort_by! { |user| user[:userid].to_i }
|
||||
|
||||
@old_username_to_new_usernames = {}
|
||||
|
||||
create_users(@users) do |user|
|
||||
@old_username_to_new_usernames[user[:username]] = UserNameSuggester.suggest(user[:username])
|
||||
@old_username_to_new_usernames[user[:username]] = UserNameSuggester.fix_username(user[:username])
|
||||
|
||||
{
|
||||
id: user[:userid],
|
||||
@@ -267,6 +273,7 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
||||
website: user[:homepage],
|
||||
title: user[:usertitle],
|
||||
primary_group_id: group_id_from_imported_group_id(user[:usergroupid]),
|
||||
merge: true,
|
||||
}
|
||||
end
|
||||
|
||||
@@ -300,6 +307,9 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
||||
def import_categories
|
||||
puts "", "Importing categories..."
|
||||
|
||||
# sort categories
|
||||
@categories.sort_by! { |category| category[:forumid].to_i }
|
||||
|
||||
create_categories(@categories) do |category|
|
||||
{
|
||||
id: category[:forumid],
|
||||
@@ -343,22 +353,18 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
||||
raw = raw.gsub(/\[mention\](.+?)\[\/mention\]/i) do
|
||||
old_username = $1
|
||||
if @old_username_to_new_usernames.has_key?(old_username)
|
||||
username = @old_username_to_new_usernames[old_username]
|
||||
"@#{username}"
|
||||
else
|
||||
$&
|
||||
old_username = @old_username_to_new_usernames[old_username]
|
||||
end
|
||||
"@#{old_username}"
|
||||
end
|
||||
|
||||
# [MENTION=<user_id>]...[/MENTION]
|
||||
raw = raw.gsub(/\[mention=(\d+)\].+?\[\/mention\]/i) do
|
||||
user_id = $1
|
||||
# [MENTION=<user_id>]<username>[/MENTION]
|
||||
raw = raw.gsub(/\[mention=(\d+)\](.+?)\[\/mention\]/i) do
|
||||
user_id, old_username = $1, $2
|
||||
if user = @users.select { |u| u[:userid] == user_id }.first
|
||||
username = @old_username_to_new_usernames[user[:username]] || user[:username]
|
||||
"@#{username}"
|
||||
else
|
||||
$&
|
||||
old_username = @old_username_to_new_usernames[user[:username]] || user[:username]
|
||||
end
|
||||
"@#{old_username}"
|
||||
end
|
||||
|
||||
# [QUOTE]...[/QUOTE]
|
||||
@@ -368,11 +374,9 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
||||
raw = raw.gsub(/\[quote=([^;\]]+)\](.+?)\[\/quote\]/im) do
|
||||
old_username, quote = $1, $2
|
||||
if @old_username_to_new_usernames.has_key?(old_username)
|
||||
username = @old_username_to_new_usernames[old_username]
|
||||
"\n[quote=\"#{username}\"]\n#{quote}\n[/quote]\n"
|
||||
else
|
||||
$&
|
||||
old_username = @old_username_to_new_usernames[old_username]
|
||||
end
|
||||
"\n[quote=\"#{old_username}\"]\n#{quote}\n[/quote]\n"
|
||||
end
|
||||
|
||||
# [HTML]...[/HTML]
|
||||
@@ -399,12 +403,24 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
||||
# [MP3]<url>[/MP3]
|
||||
raw = raw.gsub(/\[MP3\](.+?)\[\/MP3\]/i) { "\n#{$1}\n" }
|
||||
|
||||
# replace all chevrons with HTML entities
|
||||
raw = raw.gsub(/`([^`]+)`/im) { "`" + $1.gsub("<", "\u2603") + "`" }
|
||||
.gsub("<", "<")
|
||||
.gsub("\u2603", "<")
|
||||
|
||||
raw = raw.gsub(/`([^`]+)`/im) { "`" + $1.gsub(">", "\u2603") + "`" }
|
||||
.gsub(">", ">")
|
||||
.gsub("\u2603", ">")
|
||||
|
||||
raw
|
||||
end
|
||||
|
||||
def import_topics
|
||||
puts "", "Importing topics..."
|
||||
|
||||
# sort the topics
|
||||
@topics.sort_by! { |topic| topic[:threadid].to_i }
|
||||
|
||||
create_posts(@topics) do |topic|
|
||||
next unless post = @posts.select { |p| p[:postid] == topic[:firstpostid] }.first
|
||||
|
||||
@@ -441,8 +457,11 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
||||
first_post_ids = Set.new(@topics.map { |t| t[:firstpostid] })
|
||||
@posts.reject! { |post| first_post_ids.include?(post[:postid]) }
|
||||
|
||||
# sort the posts
|
||||
@posts.sort_by! { |post| post[:postid].to_i }
|
||||
|
||||
create_posts(@posts) do |post|
|
||||
t = topic_lookup_from_imported_post_id("thread#" + post[:threadid])
|
||||
next unless t = topic_lookup_from_imported_post_id("thread#" + post[:threadid])
|
||||
|
||||
p = {
|
||||
id: post[:postid],
|
||||
@@ -487,13 +506,17 @@ class ImportScripts::VBulletin < ImportScripts::Base
|
||||
# [QUOTE=<username>;<post_id>]...[/QUOTE]
|
||||
raw = raw.gsub(/\[quote=([^;]+);(\d+)\](.+?)\[\/quote\]/im) do
|
||||
old_username, post_id, quote = $1, $2, $3
|
||||
if @old_username_to_new_usernames.has_key?(old_username) && topic_lookup = topic_lookup_from_imported_post_id(post_id)
|
||||
|
||||
if @old_username_to_new_usernames.has_key?(old_username)
|
||||
old_username = @old_username_to_new_usernames[old_username]
|
||||
end
|
||||
|
||||
if topic_lookup = topic_lookup_from_imported_post_id(post_id)
|
||||
post_number = topic_lookup[:post_number]
|
||||
topic_id = topic_lookup[:topic_id]
|
||||
username = @old_username_to_new_usernames[old_username]
|
||||
"\n[quote=\"#{username},post:#{post_number},topic:#{topic_id}\"]\n#{quote}\n[/quote]\n"
|
||||
"\n[quote=\"#{old_username},post:#{post_number},topic:#{topic_id}\"]\n#{quote}\n[/quote]\n"
|
||||
else
|
||||
$&
|
||||
"\n[quote=\"#{old_username}\"]\n#{quote}\n[/quote]\n"
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user