class Moodle2CC::Migrator

Constants

MOODLE_1_9
MOODLE_2

Attributes

last_error[RW]

Public Class Methods

new(source, destination, options={}) click to toggle source
# File lib/moodle2cc/migrator.rb, line 11
def initialize(source, destination, options={})
  @source = source
  @destination = destination
  @format = options['format'] || 'cc'
  Moodle2CC::Logger.logger = options['logger'] || ::Logger.new(STDOUT)
  raise(Moodle2CC::Error, "'#{@source}' does not exist") unless File.exists?(@source)
  raise(Moodle2CC::Error, "'#{@destination}' is not a directory") unless File.directory?(@destination)
  raise(Moodle2CC::Error, "'#{@format}' is not a valid format. Please use 'cc' or 'canvas'.") unless ['cc', 'canvas'].include?(@format)
  @converter_class = @format == 'cc' ? Moodle2CC::CC::Converter : Moodle2CC::Canvas::Converter
end

Public Instance Methods

imscc_path() click to toggle source
# File lib/moodle2cc/migrator.rb, line 35
def imscc_path
  @converter.imscc_path
end
migrate() click to toggle source
# File lib/moodle2cc/migrator.rb, line 22
def migrate
  @last_error = nil
  case moodle_version
    when MOODLE_1_9
      migrate_moodle_1_9
    when MOODLE_2
      migrate_moodle_2
  end
rescue StandardError => error
  @last_error = error
  Moodle2CC::Logger.add_warning 'error migrating content', error
end
migrate_moodle_1_9() click to toggle source
# File lib/moodle2cc/migrator.rb, line 39
def migrate_moodle_1_9
  backup = Moodle2CC::Moodle::Backup.read @source
  @converter = @converter_class.new backup, @destination
  @converter.convert
end
migrate_moodle_2() click to toggle source
# File lib/moodle2cc/migrator.rb, line 45
def migrate_moodle_2
  @converter = Moodle2CC::Moodle2Converter::Migrator.new(@source, @destination)
  @converter.migrate
end

Private Instance Methods

moodle_version() click to toggle source
# File lib/moodle2cc/migrator.rb, line 52
def moodle_version
  if File.directory?(@source)
    if File.exists?(File.join(@source, 'moodle_backup.xml'))
      MOODLE_2
    elsif File.exists?(File.join(@source, 'moodle.xml'))
      MOODLE_1_9
    end
  else
    Zip::File.open(@source) do |zipfile|
      if zipfile.find_entry('moodle_backup.xml')
        MOODLE_2
      elsif zipfile.find_entry('moodle.xml')
        MOODLE_1_9
      end
    end
  end
end