MDL-27438 backup - on course backups add course gropus and groupings
authorEloy Lafuente (stronk7) <stronk7@moodle.org>
Sat, 9 Jul 2011 17:27:23 +0000 (19:27 +0200)
committerEloy Lafuente (stronk7) <stronk7@moodle.org>
Sat, 9 Jul 2011 17:27:23 +0000 (19:27 +0200)
backup/moodle2/backup_course_task.class.php
backup/moodle2/backup_stepslib.php

index 2492925..6be90a7 100644 (file)
@@ -75,8 +75,15 @@ class backup_course_task extends backup_task {
         // Generate the enrolment file
         $this->add_step(new backup_enrolments_structure_step('course_enrolments', 'enrolments.xml'));
 
-        // Annotate the groups used in already annotated groupings
-        $this->add_step(new backup_annotate_groups_from_groupings('annotate_groups'));
+        // Annotate all the groups and groupings belonging to the course
+        $this->add_step(new backup_annotate_course_groups_and_groupings('annotate_course_groups'));
+
+        // Annotate the groups used in already annotated groupings (note this may be
+        // unnecessary now that we are annotating all the course groups and groupings in the
+        // step above. But we keep it working in case we decide, someday, to introduce one
+        // setting to transform the step above into an optional one. This is here to support
+        // course->defaultgroupingid
+        $this->add_step(new backup_annotate_groups_from_groupings('annotate_groups_from_groupings'));
 
         // Annotate the question_categories belonging to the course context
         $this->add_step(new backup_calculate_question_categories('course_question_categories'));
index a0acb19..ffc310e 100644 (file)
@@ -1562,6 +1562,32 @@ class backup_activity_grade_items_to_ids extends backup_execution_step {
     }
 }
 
+/**
+ * This step will annotate all the groups and groupings belonging to the course
+ */
+class backup_annotate_course_groups_and_groupings extends backup_execution_step {
+
+    protected function define_execution() {
+        global $DB;
+
+        // Get all the course groups
+        if ($groups = $DB->get_records('groups', array(
+                'courseid' => $this->task->get_courseid()))) {
+            foreach ($groups as $group) {
+                backup_structure_dbops::insert_backup_ids_record($this->get_backupid(), 'group', $group->id);
+            }
+        }
+
+        // Get all the course groupings
+        if ($groupings = $DB->get_records('groupings', array(
+                'courseid' => $this->task->get_courseid()))) {
+            foreach ($groupings as $grouping) {
+                backup_structure_dbops::insert_backup_ids_record($this->get_backupid(), 'grouping', $grouping->id);
+            }
+        }
+    }
+}
+
 /**
  * This step will annotate all the groups belonging to already annotated groupings
  */