mirror of
https://github.com/moodle/moodle.git
synced 2025-05-13 19:56:25 +02:00
MDL-46481 backup: implemented quick backup process (one click)
This commit is contained in:
parent
6597413d41
commit
f3973676e8
@ -55,11 +55,24 @@ abstract class backup_moodleform extends base_moodleform {
|
||||
}
|
||||
/**
|
||||
* Initial backup user interface stage moodleform.
|
||||
*
|
||||
* Nothing to override we only need it defined so that moodleform doesn't get confused
|
||||
* between stages.
|
||||
*/
|
||||
class backup_initial_form extends backup_moodleform {}
|
||||
class backup_initial_form extends backup_moodleform {
|
||||
|
||||
/**
|
||||
* We override the initial form to offer a one click backup option.
|
||||
*/
|
||||
public function definition() {
|
||||
$mform = $this->_form;
|
||||
|
||||
$mform->addElement('header', 'backupheading', get_string('backup'));
|
||||
$mform->addElement('html', html_writer::tag('p', get_string('performoneclickbackup_desc', 'backup')));
|
||||
$mform->addElement('submit', 'oneclickbackup', get_string('performoneclickbackup', 'backup'));
|
||||
|
||||
parent::definition();
|
||||
|
||||
$mform->setDisableShortforms(false);
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Schema backup user interface stage moodleform.
|
||||
*
|
||||
|
@ -62,6 +62,12 @@ abstract class backup_ui_stage extends base_ui_stage {
|
||||
*/
|
||||
class backup_ui_stage_initial extends backup_ui_stage {
|
||||
|
||||
/**
|
||||
* When set to true we skip all stages and jump to immediately processing the backup.
|
||||
* @var bool
|
||||
*/
|
||||
protected $oneclickbackup = false;
|
||||
|
||||
/**
|
||||
* Initial backup stage constructor
|
||||
* @param backup_ui $ui
|
||||
@ -86,6 +92,9 @@ class backup_ui_stage_initial extends backup_ui_stage {
|
||||
|
||||
$data = $form->get_data();
|
||||
if ($data && confirm_sesskey()) {
|
||||
if (isset($data->oneclickbackup)) {
|
||||
$this->oneclickbackup = true;
|
||||
}
|
||||
$tasks = $this->ui->get_tasks();
|
||||
$changes = 0;
|
||||
foreach ($tasks as &$task) {
|
||||
@ -112,6 +121,42 @@ class backup_ui_stage_initial extends backup_ui_stage {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the next stage for the backup.
|
||||
*
|
||||
* We override this function to implement the one click backup.
|
||||
* When the user performs a one click backup we jump straight to the final stage.
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public function get_next_stage() {
|
||||
if ($this->oneclickbackup) {
|
||||
// Its a one click backup.
|
||||
// The default filename is backup.mbz, this normally gets set to something useful in the confirmation stage.
|
||||
// because we skipped that stage we must manually set this to a useful value.
|
||||
$tasks = $this->ui->get_tasks();
|
||||
foreach ($tasks as $task) {
|
||||
if ($task instanceof backup_root_task) {
|
||||
// Find the filename setting.
|
||||
$setting = $task->get_setting('filename');
|
||||
if ($setting) {
|
||||
// Use the helper objects to get a useful name.
|
||||
$filename = backup_plan_dbops::get_default_backup_filename(
|
||||
$this->ui->get_format(),
|
||||
$this->ui->get_type(),
|
||||
$this->ui->get_controller_id(),
|
||||
$this->ui->get_setting_value('users'),
|
||||
$this->ui->get_setting_value('anonymize')
|
||||
);
|
||||
$setting->set_value($filename);
|
||||
}
|
||||
}
|
||||
}
|
||||
return backup_ui::STAGE_FINAL;
|
||||
}
|
||||
return parent::get_next_stage();
|
||||
}
|
||||
|
||||
/**
|
||||
* Initialises the backup_moodleform instance for this stage
|
||||
*
|
||||
@ -130,6 +175,7 @@ class backup_ui_stage_initial extends backup_ui_stage {
|
||||
// For the initial stage we are only interested in the root settings
|
||||
if ($task instanceof backup_root_task) {
|
||||
$form->add_heading('rootsettings', get_string('rootsettings', 'backup'));
|
||||
$form->collapse_heading('rootsettings');
|
||||
$settings = $task->get_settings();
|
||||
// First add all settings except the filename setting
|
||||
foreach ($settings as &$setting) {
|
||||
|
@ -369,4 +369,13 @@ abstract class base_moodleform extends moodleform {
|
||||
$this->definition_after_data();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Can be used to collapse a heading from outside of this form.
|
||||
*
|
||||
* @param string $heading
|
||||
*/
|
||||
public function collapse_heading($heading) {
|
||||
$this->_form->setExpanded($heading, false);
|
||||
}
|
||||
}
|
||||
|
@ -84,7 +84,7 @@ abstract class base_ui_stage {
|
||||
* The next stage
|
||||
* @return int
|
||||
*/
|
||||
final public function get_next_stage() {
|
||||
public function get_next_stage() {
|
||||
return floor($this->stage*2);
|
||||
}
|
||||
/**
|
||||
|
@ -177,6 +177,8 @@ $string['moreresults'] = 'There are too many results, enter a more specific sear
|
||||
$string['nomatchingcourses'] = 'There are no courses to display';
|
||||
$string['norestoreoptions'] = 'There are no categories or existing courses you can restore to.';
|
||||
$string['originalwwwroot'] = 'URL of backup';
|
||||
$string['performoneclickbackup'] = 'Perform quick backup';
|
||||
$string['performoneclickbackup_desc'] = 'Clicking this will create a backup using the current settings. If you wish to proceed through each stage of the backup individually use the controls at the bottom of the form.';
|
||||
$string['previousstage'] = 'Previous';
|
||||
$string['preparingui'] = 'Preparing to display page';
|
||||
$string['preparingdata'] = 'Preparing data';
|
||||
|
Loading…
x
Reference in New Issue
Block a user