diff --git a/script/import_scripts/lithium.rb b/script/import_scripts/lithium.rb index de12dd98f0d..9c76a730f2a 100644 --- a/script/import_scripts/lithium.rb +++ b/script/import_scripts/lithium.rb @@ -332,10 +332,20 @@ class ImportScripts::Lithium < ImportScripts::Base end + def staff_guardian + @_staff_guardian ||= Guardian.new(Discourse.system_user) + end + def import_topics puts "", "importing topics..." + SiteSetting.tagging_enabled = true + default_max_tags_per_topic = SiteSetting.max_tags_per_topic + default_max_tag_length = SiteSetting.max_tag_length + SiteSetting.max_tags_per_topic = 10 + SiteSetting.max_tag_length = 100 topic_count = mysql_query("SELECT COUNT(*) count FROM message2 where id = root_id").first["count"] + topic_tags = mysql_query("SELECT e.target_id, GROUP_CONCAT(l.tag_text SEPARATOR ',') tags FROM tag_events_label_message e LEFT JOIN tags_label l ON e.tag_id = l.tag_id GROUP BY e.target_id") batches(BATCH_SIZE) do |offset| topics = mysql_query <<-SQL @@ -369,18 +379,28 @@ class ImportScripts::Lithium < ImportScripts::Base deleted_at: deleted_at, views: topic["views"], custom_fields: { import_unique_id: topic["unique_id"] }, - import_mode: true + import_mode: true, + post_create_action: proc do |post| + result = topic_tags.select { |t| t["target_id"] == topic["unique_id"] } + if result.count > 0 + tag_names = result.first["tags"].split(",") + DiscourseTagging.tag_topic_by_names(post.topic, staff_guardian, tag_names) + end + end } else message = "Unknown" message = "Category '#{category_id}' not exist" if category_id.blank? message = "Topic 'body' is empty" if raw.blank? - PluginStoreRow.create(plugin_name: "topic_import_log", key: topic["unique_id"].to_s, value: message) + PluginStoreRow.find_or_create_by(plugin_name: "topic_import_log", key: topic["unique_id"].to_s, value: message, type_name: 'String') nil end end end + + SiteSetting.max_tags_per_topic = default_max_tags_per_topic + SiteSetting.max_tag_length = default_max_tag_length end def import_posts @@ -430,7 +450,7 @@ class ImportScripts::Lithium < ImportScripts::Base new_post else - PluginStoreRow.create(plugin_name: "post_import_log", key: post["unique_id"].to_s, value: "Post 'body' is empty") + PluginStoreRow.find_or_create_by(plugin_name: "post_import_log", key: post["unique_id"].to_s, value: "Post 'body' is empty", type_name: 'String') nil end end @@ -714,7 +734,7 @@ class ImportScripts::Lithium < ImportScripts::Base msg else - PluginStoreRow.create(plugin_name: "pm_import_log", key: topic["note_id"].to_s, value: "PM 'body' is empty") + PluginStoreRow.find_or_create_by(plugin_name: "pm_import_log", key: topic["note_id"].to_s, value: "PM 'body' is empty", type_name: 'String') nil end end