/** * This processes the current stage of the restore * @throws restore_ui_exception if the progress is wrong. * @return bool */ public function process() { if ($this->progress >= self::PROGRESS_PROCESSED) { throw new restore_ui_exception('restoreuialreadyprocessed'); } $this->progress = self::PROGRESS_PROCESSED; if (optional_param('previous', false, PARAM_BOOL) && $this->stage->get_stage() > self::STAGE_CONFIRM) { $this->stage = $this->initialise_stage($this->stage->get_prev_stage(), $this->stage->get_params()); return false; } // Process the stage. $processoutcome = $this->stage->process(); if ($processoutcome !== false && !($this->get_stage() == self::STAGE_PROCESS && optional_param('substage', false, PARAM_BOOL))) { $this->stage = $this->initialise_stage($this->stage->get_next_stage(), $this->stage->get_params()); } // Process UI event after to check changes are valid. $this->controller->process_ui_event(); return $processoutcome; }