From 073be367e249bcd6c8d8e79b5776d769bf0987de Mon Sep 17 00:00:00 2001 From: Frederic Massart Date: Fri, 20 Jun 2014 15:37:32 +0800 Subject: [PATCH] MDL-40228 backup: Settings were ignored during automated backups --- .../dbops/backup_controller_dbops.class.php | 43 ++++++++++++++++++- .../util/helper/backup_cron_helper.class.php | 21 --------- 2 files changed, 42 insertions(+), 22 deletions(-) diff --git a/backup/util/dbops/backup_controller_dbops.class.php b/backup/util/dbops/backup_controller_dbops.class.php index a6cfb558d89..41ff9d394bd 100644 --- a/backup/util/dbops/backup_controller_dbops.class.php +++ b/backup/util/dbops/backup_controller_dbops.class.php @@ -547,7 +547,8 @@ abstract class backup_controller_dbops extends backup_dbops { self::apply_general_config_defaults($controller); break; case backup::MODE_AUTOMATED: - // TODO: Move the loading from automatic stuff to here + // Load the automated defaults. + self::apply_auto_config_defaults($controller); break; default: // Nothing to do for other modes (IMPORT/HUB...). Some day we @@ -555,6 +556,43 @@ abstract class backup_controller_dbops extends backup_dbops { } } + /** + * Sets the controller settings default values from the automated backup config. + * + * @param backup_controller $controller + */ + private static function apply_auto_config_defaults(backup_controller $controller) { + $settings = array( + // Config name => Setting name. + 'backup_auto_users' => 'users', + 'backup_auto_role_assignments' => 'role_assignments', + 'backup_auto_activities' => 'activities', + 'backup_auto_blocks' => 'blocks', + 'backup_auto_filters' => 'filters', + 'backup_auto_comments' => 'comments', + 'backup_auto_badges' => 'badges', + 'backup_auto_userscompletion' => 'userscompletion', + 'backup_auto_logs' => 'logs', + 'backup_auto_histories' => 'grade_histories', + 'backup_auto_questionbank' => 'questionbank' + ); + $plan = $controller->get_plan(); + foreach ($settings as $config => $settingname) { + $value = get_config('backup', $config); + if ($value === false) { + // The setting is not set. + $controller->log('Could not find a value for the config ' . $config, BACKUP::LOG_DEBUG); + continue; + } + if ($plan->setting_exists($settingname)) { + $setting = $plan->get_setting($settingname); + $setting->set_value($value); + } else { + $controller->log('Unknown setting: ' . $settingname, BACKUP::LOG_DEBUG); + } + } + } + /** * Sets the controller settings default values from the backup config. * @@ -583,6 +621,7 @@ abstract class backup_controller_dbops extends backup_dbops { // 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. + $controller->log('Could not find a value for the config ' . $config, BACKUP::LOG_DEBUG); continue; } $locked = (get_config('backup', $config.'_locked') == true); @@ -594,6 +633,8 @@ abstract class backup_controller_dbops extends backup_dbops { $setting->set_status(base_setting::LOCKED_BY_CONFIG); } } + } else { + $controller->log('Unknown setting: ' . $setting, BACKUP::LOG_DEBUG); } } } diff --git a/backup/util/helper/backup_cron_helper.class.php b/backup/util/helper/backup_cron_helper.class.php index b964b67f015..434059b8291 100644 --- a/backup/util/helper/backup_cron_helper.class.php +++ b/backup/util/helper/backup_cron_helper.class.php @@ -381,27 +381,6 @@ abstract class backup_cron_automated_helper { try { - $settings = array( - 'users' => 'backup_auto_users', - 'role_assignments' => 'backup_auto_role_assignments', - 'activities' => 'backup_auto_activities', - 'blocks' => 'backup_auto_blocks', - 'filters' => 'backup_auto_filters', - 'comments' => 'backup_auto_comments', - 'badges' => 'backup_auto_badges', - 'completion_information' => 'backup_auto_userscompletion', - 'logs' => 'backup_auto_logs', - 'histories' => 'backup_auto_histories', - 'questionbank' => 'backup_auto_questionbank' - ); - foreach ($settings as $setting => $configsetting) { - if ($bc->get_plan()->setting_exists($setting)) { - if (isset($config->{$configsetting})) { - $bc->get_plan()->get_setting($setting)->set_value($config->{$configsetting}); - } - } - } - // Set the default filename. $format = $bc->get_format(); $type = $bc->get_type();