moodle2cc 0.2.12 → 0.2.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/Changelog +4 -0
- data/lib/moodle2cc/canvas_cc/discussion_writer.rb +1 -0
- data/lib/moodle2cc/migrator.rb +11 -3
- data/lib/moodle2cc/moodle/backup.rb +30 -11
- data/lib/moodle2cc/moodle2/extractor.rb +46 -30
- data/lib/moodle2cc/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
M2Y3OTY0ZjhjMzNjMzJlZjkwNTFmYTk1OGYyMjg4MjZhODg5ZjQyNQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
YjAwZWRlNzc4ZTdhMWJmYTVjNTlkZGMwMTY0OGFjOTRhN2UxODM5MA==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
NDUzZGI4MTk4ZTlmM2JiMWVlNjZlODdmYTZmODY2M2ZhNWRkNDJjY2ViOGY4
|
10
|
+
MjU3ZjJiOTIxMmUyMThkYmY5NGQwODZmYzU4ZjcxYjM4NGZkMTU0YmJkNzUz
|
11
|
+
MDliMjkzNDJkNDFlNmRhOGJiNzM5YzI5MzUxNzJjODU2YWUxOTY=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
Y2I0N2FkMzg5OWI3OTBmNzkyYzIxYTYxNTQzZTVmZmY3YjIyYWY0MTAzNGQ1
|
14
|
+
NjQxMjc1NGNhODliNzQzNDdkMWZjYzc5NTU5NGUzOWEzM2MxMzg4NTM2ZWVj
|
15
|
+
YTI0MDBlNzU2NzZiZmY4Y2RmNWUzYTY2MDNmYzc5ZDdjNDRjYjY=
|
data/Changelog
CHANGED
@@ -43,6 +43,7 @@ module Moodle2CC::CanvasCC
|
|
43
43
|
xml.type 'topic'
|
44
44
|
xml.discussion_type discussion.discussion_type
|
45
45
|
xml.require_initial_post discussion.require_initial_post
|
46
|
+
xml.workflow_state discussion.workflow_state
|
46
47
|
}
|
47
48
|
end.to_xml
|
48
49
|
File.open(File.join(@work_dir, meta_resource.href), 'w') { |f| f.write(xml) }
|
data/lib/moodle2cc/migrator.rb
CHANGED
@@ -50,12 +50,20 @@ module Moodle2CC
|
|
50
50
|
private
|
51
51
|
|
52
52
|
def moodle_version
|
53
|
-
|
54
|
-
if
|
53
|
+
if File.directory?(@source)
|
54
|
+
if File.exists?(File.join(@source, 'moodle_backup.xml'))
|
55
55
|
MOODLE_2
|
56
|
-
elsif
|
56
|
+
elsif File.exists?(File.join(@source, 'moodle.xml'))
|
57
57
|
MOODLE_1_9
|
58
58
|
end
|
59
|
+
else
|
60
|
+
Zip::File.open(@source) do |zipfile|
|
61
|
+
if zipfile.find_entry('moodle_backup.xml')
|
62
|
+
MOODLE_2
|
63
|
+
elsif zipfile.find_entry('moodle.xml')
|
64
|
+
MOODLE_1_9
|
65
|
+
end
|
66
|
+
end
|
59
67
|
end
|
60
68
|
end
|
61
69
|
|
@@ -4,30 +4,49 @@ module Moodle2CC::Moodle
|
|
4
4
|
class Backup
|
5
5
|
include HappyMapper
|
6
6
|
|
7
|
-
attr_accessor :
|
7
|
+
attr_accessor :backup_path, :files
|
8
8
|
|
9
9
|
tag 'MOODLE_BACKUP'
|
10
10
|
has_one :info, Info
|
11
11
|
has_one :course, Course
|
12
12
|
|
13
|
-
def self.read(
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
13
|
+
def self.read(backup_path)
|
14
|
+
xml = nil
|
15
|
+
files = nil
|
16
|
+
if File.directory?(backup_path)
|
17
|
+
xml = File.read(File.join(backup_path, "moodle.xml"))
|
18
|
+
files = Dir["#{backup_path}/**/*"].select { |e| e =~ /^course_files/ && !File.directory?(e) }.
|
19
|
+
map { |e| e.sub('course_files/', '') }.sort
|
20
|
+
else
|
21
|
+
Zip::File.open(backup_path) do |zipfile|
|
22
|
+
xml = zipfile.read("moodle.xml")
|
23
|
+
files = zipfile.entries.select { |e| e.name =~ /^course_files/ && !e.directory? }.
|
24
|
+
map { |e| e.name.sub('course_files/', '') }.sort
|
25
|
+
end
|
21
26
|
end
|
27
|
+
backup = parse(xml)
|
28
|
+
backup.backup_path = backup_path
|
29
|
+
backup.files = files
|
30
|
+
backup
|
22
31
|
end
|
23
32
|
|
24
33
|
def copy_files_to(dir)
|
25
|
-
|
34
|
+
if File.directory?(@backup_path)
|
26
35
|
@files.each do |file|
|
27
36
|
destination_file = File.join(dir, file)
|
28
37
|
FileUtils.mkdir_p(File.dirname(destination_file))
|
29
38
|
File.open(destination_file, 'wb') do |f|
|
30
|
-
f.write
|
39
|
+
f.write File.read(File.join(@backup_path, "course_files/#{file}"))
|
40
|
+
end
|
41
|
+
end
|
42
|
+
else
|
43
|
+
Zip::File.open(@backup_path) do |zipfile|
|
44
|
+
@files.each do |file|
|
45
|
+
destination_file = File.join(dir, file)
|
46
|
+
FileUtils.mkdir_p(File.dirname(destination_file))
|
47
|
+
File.open(destination_file, 'wb') do |f|
|
48
|
+
f.write zipfile.read("course_files/#{file}")
|
49
|
+
end
|
31
50
|
end
|
32
51
|
end
|
33
52
|
end
|
@@ -5,47 +5,63 @@ module Moodle2CC::Moodle2
|
|
5
5
|
|
6
6
|
MOODLE_BACKUP_XML = 'moodle_backup.xml'
|
7
7
|
|
8
|
-
def initialize(
|
9
|
-
@
|
8
|
+
def initialize(backup_path)
|
9
|
+
@backup_path = backup_path
|
10
10
|
end
|
11
11
|
|
12
12
|
def extract
|
13
|
-
|
14
|
-
|
15
|
-
course = Moodle2CC::Moodle2::Parsers::CourseParser.new(work_dir).parse
|
16
|
-
parse_sections(work_dir, course)
|
17
|
-
parse_files(work_dir, course)
|
18
|
-
parse_pages(work_dir, course)
|
19
|
-
parse_forums(work_dir, course)
|
20
|
-
parse_assignments(work_dir, course)
|
21
|
-
parse_books(work_dir, course)
|
22
|
-
parse_folders(work_dir, course)
|
23
|
-
parse_wikis(work_dir, course)
|
24
|
-
parse_question_categories(work_dir, course)
|
25
|
-
|
26
|
-
parse_quizzes(work_dir, course)
|
27
|
-
parse_choices(work_dir, course)
|
28
|
-
parse_feedbacks(work_dir, course)
|
29
|
-
parse_questionnaires(work_dir, course)
|
30
|
-
|
31
|
-
parse_glossaries(work_dir, course)
|
32
|
-
parse_labels(work_dir, course)
|
33
|
-
parse_external_urls(work_dir, course)
|
34
|
-
parse_resources(work_dir, course)
|
35
|
-
collect_files_for_resources(course)
|
36
|
-
collect_activities_for_sections(course.sections, course.activities)
|
13
|
+
if File.directory?(@backup_path) # it's already extracted
|
14
|
+
course = extract_course(@backup_path)
|
37
15
|
yield course
|
16
|
+
else
|
17
|
+
Dir.mktmpdir do |work_dir|
|
18
|
+
extract_zip(work_dir)
|
19
|
+
course = extract_course(work_dir)
|
20
|
+
yield course
|
21
|
+
end
|
38
22
|
end
|
39
23
|
end
|
40
24
|
|
41
25
|
private
|
42
26
|
|
27
|
+
def extract_course(work_dir)
|
28
|
+
course = Moodle2CC::Moodle2::Parsers::CourseParser.new(work_dir).parse
|
29
|
+
parse_sections(work_dir, course)
|
30
|
+
parse_files(work_dir, course)
|
31
|
+
parse_pages(work_dir, course)
|
32
|
+
parse_forums(work_dir, course)
|
33
|
+
parse_assignments(work_dir, course)
|
34
|
+
parse_books(work_dir, course)
|
35
|
+
parse_folders(work_dir, course)
|
36
|
+
parse_wikis(work_dir, course)
|
37
|
+
parse_question_categories(work_dir, course)
|
38
|
+
|
39
|
+
parse_quizzes(work_dir, course)
|
40
|
+
parse_choices(work_dir, course)
|
41
|
+
parse_feedbacks(work_dir, course)
|
42
|
+
parse_questionnaires(work_dir, course)
|
43
|
+
|
44
|
+
parse_glossaries(work_dir, course)
|
45
|
+
parse_labels(work_dir, course)
|
46
|
+
parse_external_urls(work_dir, course)
|
47
|
+
parse_resources(work_dir, course)
|
48
|
+
collect_files_for_resources(course)
|
49
|
+
collect_activities_for_sections(course.sections, course.activities)
|
50
|
+
course
|
51
|
+
end
|
52
|
+
|
43
53
|
def extract_zip(work_dir)
|
44
|
-
|
45
|
-
|
54
|
+
if File.directory?(@backup_path)
|
55
|
+
Dir["#{@backup_path}/**/*"].each do |f_path|
|
46
56
|
f_path=File.join(work_dir, f.name)
|
47
|
-
|
48
|
-
|
57
|
+
end
|
58
|
+
else
|
59
|
+
Zip::File.open(@backup_path) do |zip_file|
|
60
|
+
zip_file.each do |f|
|
61
|
+
f_path=File.join(work_dir, f.name)
|
62
|
+
FileUtils.mkdir_p(File.dirname(f_path))
|
63
|
+
zip_file.extract(f, f_path) unless File.exist?(f_path)
|
64
|
+
end
|
49
65
|
end
|
50
66
|
end
|
51
67
|
end
|
data/lib/moodle2cc/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: moodle2cc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.14
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christopher Durtschi
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-07-
|
13
|
+
date: 2014-07-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rubyzip
|