class Moodle2CC::Moodle2::Parsers::ForumParser
Constants
- FORUM_MODULE_NAME
- HSU_MODULE_NAME
Public Class Methods
new(backup_dir)
click to toggle source
# File lib/moodle2cc/moodle2/parsers/forum_parser.rb, line 8 def initialize(backup_dir) @backup_dir = backup_dir end
Public Instance Methods
parse()
click to toggle source
# File lib/moodle2cc/moodle2/parsers/forum_parser.rb, line 12 def parse activity_directories(@backup_dir, FORUM_MODULE_NAME).map { |dir| parse_forum(dir, FORUM_MODULE_NAME) } + activity_directories(@backup_dir, HSU_MODULE_NAME).map { |dir| parse_forum(dir, HSU_MODULE_NAME) } end
Private Instance Methods
parse_forum(forum_dir, module_name)
click to toggle source
# File lib/moodle2cc/moodle2/parsers/forum_parser.rb, line 19 def parse_forum(forum_dir, module_name) xml_file = "#{module_name}.xml" forum = Moodle2CC::Moodle2::Models::Forum.new activity_dir = File.join(@backup_dir, forum_dir) File.open(File.join(activity_dir, xml_file)) do |f| forum_xml = Nokogiri::XML(f) forum.id = forum_xml.at_xpath("/activity/#{module_name}/@id").value forum.module_id = forum_xml.at_xpath("/activity/@moduleid").value forum.name = parse_text(forum_xml, "/activity/#{module_name}/name") forum.type = parse_text(forum_xml, "/activity/#{module_name}/type") forum.intro = parse_text(forum_xml, "/activity/#{module_name}/intro") forum.intro_format = parse_text(forum_xml, "/activity/#{module_name}/introformat") forum.assessed = parse_text(forum_xml, "/activity/#{module_name}/assessed") forum.assess_time_start = parse_text(forum_xml, "/activity/#{module_name}/assesstimestart") forum.assess_time_finish = parse_text(forum_xml, "/activity/#{module_name}/assesstimefinish") forum.scale = parse_text(forum_xml, "/activity/#{module_name}/scale") forum.max_bytes = parse_text(forum_xml, "/activity/#{module_name}/maxbytes") forum.max_attachments = parse_text(forum_xml, "/activity/#{module_name}/maxattachments") forum.force_subscribe = parse_boolean(forum_xml, "/activity/#{module_name}/forcesubscribe") forum.tracking_type = parse_text(forum_xml, "/activity/#{module_name}/trackingtype") forum.rss_type = parse_text(forum_xml, "/activity/#{module_name}/rsstype") forum.rss_articles = parse_text(forum_xml, "/activity/#{module_name}/rssarticles") forum.time_modified = parse_text(forum_xml, "/activity/#{module_name}/timemodified") forum.warn_after = parse_text(forum_xml, "/activity/#{module_name}/warnafter") forum.block_after = parse_text(forum_xml, "/activity/#{module_name}/blockafter") forum.block_period = parse_text(forum_xml, "/activity/#{module_name}/blockperiod") forum.completion_discussions = parse_text(forum_xml, "/activity/#{module_name}/completiondiscussions") forum.completion_replies = parse_text(forum_xml, "/activity/#{module_name}/completionreplies") forum.completion_posts = parse_text(forum_xml, "/activity/#{module_name}/completionposts") end grade_file = File.join(activity_dir, "grades.xml") if File.exists?(grade_file) File.open(grade_file) do |f| grade_xml = Nokogiri::XML(f) if node = grade_xml.at_xpath("activity_gradebook/grade_items/grade_item/grademax") forum.points_possible = node.text end end end parse_module(activity_dir, forum) forum end