MDL-12403 backup: prevent unset config from being applied
authorDan Poltawski <dan@moodle.com>
Wed, 25 Sep 2013 03:57:22 +0000 (11:57 +0800)
committerDan Poltawski <dan@moodle.com>
Thu, 26 Sep 2013 01:55:13 +0000 (09:55 +0800)
backup/util/dbops/backup_controller_dbops.class.php
backup/util/helper/backup_cron_helper.class.php

index e2aed86..9fd95ac 100644 (file)
@@ -550,6 +550,12 @@ abstract class backup_controller_dbops extends backup_dbops {
         $plan = $controller->get_plan();
         foreach ($settings as $config=>$settingname) {
             $value = get_config('backup', $config);
+            if ($value === false) {
+                // Ignore this because the config has not been set. get_config
+                // returns false if a setting doesn't exist, '0' is returned when
+                // the configuration is set to false.
+                continue;
+            }
             $locked = (get_config('backup', $config.'_locked') == true);
             if ($plan->setting_exists($settingname)) {
                 $setting = $plan->get_setting($settingname);
index 20d9509..97d3334 100644 (file)
@@ -391,7 +391,9 @@ abstract class backup_cron_automated_helper {
             );
             foreach ($settings as $setting => $configsetting) {
                 if ($bc->get_plan()->setting_exists($setting)) {
-                    $bc->get_plan()->get_setting($setting)->set_value($config->{$configsetting});
+                    if (isset($config->{$configsetting})) {
+                        $bc->get_plan()->get_setting($setting)->set_value($config->{$configsetting});
+                    }
                 }
             }