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 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