Skip to content

Commit

Permalink
MDL-48266 backup: Validate backup_auto_storage config
Browse files Browse the repository at this point in the history
  • Loading branch information
Frederic Massart committed Jan 22, 2015
1 parent da0ef2e commit 9fdf16a
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 2 deletions.
2 changes: 1 addition & 1 deletion admin/settings/courses.php
Expand Up @@ -221,7 +221,7 @@
2 => new lang_string('storagecourseandexternal', 'backup')
);
$temp->add(new admin_setting_configselect('backup/backup_auto_storage', new lang_string('automatedstorage', 'backup'), new lang_string('automatedstoragehelp', 'backup'), 0, $storageoptions));
$temp->add(new admin_setting_configdirectory('backup/backup_auto_destination', new lang_string('saveto'), new lang_string('backupsavetohelp'), ''));
$temp->add(new admin_setting_special_backup_auto_destination());
$keepoptoins = array(
0 => new lang_string('all'), 1 => '1',
2 => '2',
Expand Down
3 changes: 2 additions & 1 deletion lang/en/moodle.php
Expand Up @@ -177,6 +177,7 @@
$string['backupdateold'] = '{$a->TAG} was {$a->weekday}, {$a->mday} {$a->month} {$a->year}';
$string['backupdaterecordtype'] = '<br />{$a->recordtype} - {$a->recordname}<br />';
$string['backupdetails'] = 'Backup details';
$string['backuperrorinvaliddestination'] = 'The backup destination folder does not exist or is not writable.';
$string['backupexecuteathelp'] = 'Choose what time automated backups should run at.';
$string['backupfailed'] = 'Some of your courses weren\'t saved!!';
$string['backupfilename'] = 'backup';
Expand All @@ -194,7 +195,7 @@
$string['backupnotyetrun'] = 'Automated backup pending';
$string['backuporiginalname'] = 'Backup name';
$string['backuproleassignments'] = 'Backup role assignments for these roles';
$string['backupsavetohelp'] = 'Full path to the directory where you want to save the backup files<br />(leave blank to save in its course default dir)';
$string['backupsavetohelp'] = 'Full path to the directory where you want to save the backup files';
$string['backupsitefileshelp'] = 'If enabled then site files used in courses will be included in automated backups';
$string['backuptakealook'] = 'Please take a look at your backup logs in:
{$a}';
Expand Down
38 changes: 38 additions & 0 deletions lib/adminlib.php
Expand Up @@ -4390,6 +4390,44 @@ public function load_choices() {
}
}

/**
* Special setting for backup auto destination.
*
* @package core
* @subpackage admin
* @copyright 2014 Frédéric Massart - FMCorz.net
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
class admin_setting_special_backup_auto_destination extends admin_setting_configdirectory {

/**
* Calls parent::__construct with specific arguments.
*/
public function __construct() {
parent::__construct('backup/backup_auto_destination', new lang_string('saveto'), new lang_string('backupsavetohelp'), '');
}

/**
* Check if the directory must be set, depending on backup/backup_auto_storage.
*
* Note: backup/backup_auto_storage must be specified BEFORE this setting otherwise
* there will be conflicts if this validation happens before the other one.
*
* @param string $data Form data.
* @return string Empty when no errors.
*/
public function write_setting($data) {
$storage = (int) get_config('backup', 'backup_auto_storage');
if ($storage !== 0) {
if (empty($data) || !file_exists($data) || !is_dir($data) || !is_writable($data) ) {
// The directory must exist and be writable.
return get_string('backuperrorinvaliddestination');
}
}
return parent::write_setting($data);
}
}


/**
* Special debug setting
Expand Down

0 comments on commit 9fdf16a

Please sign in to comment.