moodle2cc 0.2.12 → 0.2.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|