class Moodle2CC::Moodle2::Parsers::FileParser

Constants

FILES_DIR
FILES_XML
NULL_XML_VALUE

Public Class Methods

new(work_dir) click to toggle source
# File lib/moodle2cc/moodle2/parsers/file_parser.rb, line 9
def initialize(work_dir)
  @work_dir = work_dir
end

Public Instance Methods

parse() click to toggle source
# File lib/moodle2cc/moodle2/parsers/file_parser.rb, line 13
def parse
  xml = Nokogiri::XML(File.read(File.join(@work_dir, FILES_XML)))
  file_nodes = xml./('files/file')
  files = []
  missing_files = []
  file_nodes.each do |node|
    file = Moodle2CC::Moodle2::Models::Moodle2File.new
    file.id = node.at_xpath('@id').value
    file.content_hash = parse_text(node, 'contenthash')
    file.context_id = parse_text(node, 'contextid')
    file.component = parse_text(node, 'component')
    file.file_area = parse_text(node, 'filearea')
    file.item_id = parse_text(node, 'itemid')
    file.file_path = parse_text(node, 'filepath')
    file.file_name = parse_text(node, 'filename')
    file.user_id = parse_text(node, 'userid')
    file.file_size = parse_text(node, 'filesize')
    file.mime_type = parse_text(node, 'mimetype')
    file.status = parse_text(node, 'status')
    file.time_created = parse_text(node, 'timecreated')
    file.time_modified = parse_text(node, 'timemodified')
    file.source = parse_text(node, 'source')
    file.author = parse_text(node, 'author')
    file.license = parse_text(node, 'license')
    file.sort_order = parse_text(node, 'sortorder')
    file.repository_type = parse_text(node, 'repositorytype')
    file.repository_id = parse_text(node, 'repositoryid')
    file.reference = parse_text(node, 'reference')
    file.file_location = File.join(@work_dir, FILES_DIR, file.content_hash[0..1], file.content_hash)
    if file.file_size > 0 && File.exists?(file.file_location)
      files << file
    else
      missing_files << file
    end
  end
  [files, missing_files]
end