class Moodle2CC::Moodle2::Parsers::ResourceParser

Constants

RESOURCE_MODULE_NAME
RESOURCE_XML

Public Class Methods

new(backup_dir) click to toggle source
# File lib/moodle2cc/moodle2/parsers/resource_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/resource_parser.rb, line 12
def parse
  activity_dirs = activity_directories(@backup_dir, RESOURCE_MODULE_NAME)
  activity_dirs.map { |dir| parse_resource(dir) }
end

Private Instance Methods

parse_files(dir) click to toggle source
# File lib/moodle2cc/moodle2/parsers/resource_parser.rb, line 42
def parse_files(dir)
  files = []
  File.open(File.join(@backup_dir, dir, FILES_XML)) do |f|
    xml = Nokogiri::XML(f)
    xml.search('/inforef/fileref/file').each do |node|
      files << parse_text(node, 'id')
    end
  end
  files
end
parse_resource(dir) click to toggle source
# File lib/moodle2cc/moodle2/parsers/resource_parser.rb, line 19
def parse_resource(dir)
  resource = Moodle2CC::Moodle2::Models::Resource.new
  activity_dir = File.join(@backup_dir, dir)
  File.open(File.join(activity_dir, RESOURCE_XML)) do |f|
    xml = Nokogiri::XML(f).at_xpath('/activity/resource')
    resource.id = xml.at_xpath('@id').value
    resource.module_id = xml.at_xpath('/activity/@moduleid').value
    resource.name = parse_text(xml, 'name')
    resource.intro = parse_text(xml, 'intro')
    resource.intro_format = parse_text(xml, 'introformat')
    resource.to_be_migrated = parse_text(xml, 'tobemigrated')
    resource.legacy_files = parse_text(xml, 'legacyfiles')
    resource.legacy_files_last = parse_text(xml, 'legacyfileslast')
    resource.display = parse_text(xml, 'display')
    resource.display_options = parse_text(xml, 'displayoptions')
    resource.filter_files = parse_text(xml, 'filterfiles')
  end
  parse_module(activity_dir, resource)
  resource.file_ids += parse_files(dir)
  resource
end