}
/**
* 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.
*
*/
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
$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) {
}
}
+ /**
+ * 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
*
// 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) {
$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';