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
|