MDL-44725 Availability: Replace groupmembersonly - backup (3)
authorsam marshall <s.marshall@open.ac.uk>
Fri, 1 Aug 2014 16:05:56 +0000 (17:05 +0100)
committersam marshall <s.marshall@open.ac.uk>
Tue, 2 Sep 2014 12:03:11 +0000 (13:03 +0100)
Change backup and restore to not include the field, and to cope
correctly with 2.6 (and before) and 2.7 backups.

backup/moodle2/backup_stepslib.php
backup/moodle2/restore_stepslib.php

index f767133..a6e3ac6 100644 (file)
@@ -319,7 +319,7 @@ class backup_module_structure_step extends backup_structure_step {
         $module = new backup_nested_element('module', array('id', 'version'), array(
             'modulename', 'sectionid', 'sectionnumber', 'idnumber',
             'added', 'score', 'indent', 'visible',
-            'visibleold', 'groupmode', 'groupingid', 'groupmembersonly',
+            'visibleold', 'groupmode', 'groupingid',
             'completion', 'completiongradeitemnumber', 'completionview', 'completionexpected',
             'availability', 'showdescription'));
 
index 94255c2..5d82e3a 100644 (file)
@@ -3154,13 +3154,16 @@ class restore_module_structure_step extends restore_structure_step {
         }
         $data->instance = 0; // Set to 0 for now, going to create it soon (next step)
 
-        // If there are legacy availablility data fields (and no new format data),
-        // convert the old fields.
         if (empty($data->availability)) {
-            // If groupmembersonly is disabled on this system, convert the
-            // groupmembersonly option into the new API. Otherwise don't.
+            // If there are legacy availablility data fields (and no new format data),
+            // convert the old fields.
             $data->availability = \core_availability\info::convert_legacy_fields(
-                    $data, false, !$CFG->enablegroupmembersonly);
+                    $data, false);
+        } else if (!empty($data->groupmembersonly)) {
+            // There is current availability data, but it still has groupmembersonly
+            // as well (2.7 backups), convert just that part.
+            require_once($CFG->dirroot . '/lib/db/upgradelib.php');
+            $data->availability = upgrade_group_members_only($data->groupingid, $data->availability);
         }
 
         // course_module record ready, insert it