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 CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Yjc0NjgzNjkxN2FjNjQ2OGRhMjEwMjk2YTY2MmZjMzQ3MGVmZWFhOA==
4
+ M2Y3OTY0ZjhjMzNjMzJlZjkwNTFmYTk1OGYyMjg4MjZhODg5ZjQyNQ==
5
5
  data.tar.gz: !binary |-
6
- ZDc0ZDYyZWIzMzQ1YjJhZTA0NzRhOTI1MjU3YzkzZjZlYzM2OGUzZg==
6
+ YjAwZWRlNzc4ZTdhMWJmYTVjNTlkZGMwMTY0OGFjOTRhN2UxODM5MA==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NTgwNWQxMGQwY2NlNTE1YjBiMDM1YTM0MGE5ZjQ1YjMyOTU2Nzg1NTAxNmZl
10
- MGFkNWZjYWVkYWUzYjJkN2Y3MjI3NTJjMWE3NzQxY2IyYWUyMDQyMmVmMDRm
11
- OTdmMzczYTg5M2U4NWIxNTI0NjRlMjM5YjM5NWE2ZTIyM2NjNjk=
9
+ NDUzZGI4MTk4ZTlmM2JiMWVlNjZlODdmYTZmODY2M2ZhNWRkNDJjY2ViOGY4
10
+ MjU3ZjJiOTIxMmUyMThkYmY5NGQwODZmYzU4ZjcxYjM4NGZkMTU0YmJkNzUz
11
+ MDliMjkzNDJkNDFlNmRhOGJiNzM5YzI5MzUxNzJjODU2YWUxOTY=
12
12
  data.tar.gz: !binary |-
13
- ZmIxOTkxMDAyNWNhMTk3YmU1MDk1Y2UzNzQ1OTg0MWQ4NzVjOWYwMjJhYzI0
14
- NWM1ZWYzZDgyNjM2ODIwZjNjYmM5ZmU5ODg5Njc4MTdiM2M2ZDg5MWVkYzM1
15
- NjI0NmUyOTJhYTEwNzMyNTgwZmM3OTM2NjM5MDYzMjk2YzU4YTU=
13
+ Y2I0N2FkMzg5OWI3OTBmNzkyYzIxYTYxNTQzZTVmZmY3YjIyYWY0MTAzNGQ1
14
+ NjQxMjc1NGNhODliNzQzNDdkMWZjYzc5NTU5NGUzOWEzM2MxMzg4NTM2ZWVj
15
+ YTI0MDBlNzU2NzZiZmY4Y2RmNWUzYTY2MDNmYzc5ZDdjNDRjYjY=
data/Changelog CHANGED
@@ -1,3 +1,7 @@
1
+ 2014-07-21 Version 0.2.14
2
+ * Internal refactor to import from folders instead of zip files
3
+ * Minor fix for exporting discussion topics in Moodle 2
4
+
1
5
  2014-07-15 Version 0.2.12
2
6
  * Minor encoding fix for Moodle 1.9
3
7
 
@@ -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) }
@@ -50,12 +50,20 @@ module Moodle2CC
50
50
  private
51
51
 
52
52
  def moodle_version
53
- Zip::File.open(@source) do |zipfile|
54
- if zipfile.find_entry('moodle_backup.xml')
53
+ if File.directory?(@source)
54
+ if File.exists?(File.join(@source, 'moodle_backup.xml'))
55
55
  MOODLE_2
56
- elsif zipfile.find_entry('moodle.xml')
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 :backup_file, :files
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(backup_file)
14
- Zip::File.open(backup_file) do |zipfile|
15
- xml = zipfile.read("moodle.xml")
16
- backup = parse xml
17
- backup.backup_file = backup_file
18
- backup.files = zipfile.entries.select { |e| e.name =~ /^course_files/ && !e.directory? }.
19
- map { |e| e.name.sub('course_files/', '') }.sort
20
- backup
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
- Zip::File.open(@backup_file) do |zipfile|
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 zipfile.read("course_files/#{file}")
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(zip_path)
9
- @zip_path = zip_path
8
+ def initialize(backup_path)
9
+ @backup_path = backup_path
10
10
  end
11
11
 
12
12
  def extract
13
- Dir.mktmpdir do |work_dir|
14
- extract_zip(work_dir)
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
- Zip::File.open(@zip_path) do |zip_file|
45
- zip_file.each do |f|
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
- FileUtils.mkdir_p(File.dirname(f_path))
48
- zip_file.extract(f, f_path) unless File.exist?(f_path)
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
@@ -1,3 +1,3 @@
1
1
  module Moodle2CC
2
- VERSION = "0.2.12"
2
+ VERSION = "0.2.14"
3
3
  end
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.12
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-15 00:00:00.000000000 Z
13
+ date: 2014-07-21 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rubyzip