AutorÃa | Ultima modificación | Ver Log |
<?php
// This file is part of Moodle - http://moodle.org/
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
/**
* Backup user interface stages
*
* This file contains the classes required to manage the stages that make up the
* backup user interface.
* These will be primarily operated a {@link base_ui} instance.
*
* @package core_backup
* @copyright 2010 Sam Hemelryk
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
/**
* Abstract stage class
*
* This class should be extended by all backup stages (a requirement of many backup ui functions).
* Each stage must then define two abstract methods
* - process : To process the stage
* - initialise_stage_form : To get a backup_moodleform instance for the stage
*
* @package core_backup
* @copyright 2010 Sam Hemelryk
* @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
*/
abstract class base_ui_stage {
/**
* The current stage
* @var int
*/
protected $stage = 1;
/**
* The backuck UI object
* @var base_ui
*/
protected $ui;
/**
* The moodleform for this stage
* @var base_moodleform
*/
protected $stageform = null;
/**
* Custom form params that will be added as hidden inputs
* @var array
*/
protected $params = null;
/**
* Constructor
*
* @param base_ui $ui
* @param array $params
*/
public function __construct(base_ui $ui, array $params = null) {
$this->ui = $ui;
$this->params = $params;
}
/**
* Returns the custom params for this stage
* @return array|null
*/
final public function get_params() {
return $this->params;
}
/**
* The current stage
* @return int
*/
final public function get_stage() {
return $this->stage;
}
/**
* The next stage
* @return int
*/
public function get_next_stage() {
return floor($this->stage * 2);
}
/**
* The previous stage
* @return int
*/
final public function get_prev_stage() {
return floor($this->stage / 2);
}
/**
* The name of this stage
* @return string
*/
public function get_name() {
return get_string('currentstage' . $this->stage, 'backup');
}
/**
* The backup id from the backup controller
* @return string
*/
final public function get_uniqueid() {
return $this->ui->get_uniqueid();
}
/**
* Displays the stage.
*
* By default this involves instantiating the form for the stage and the calling
* it to display.
*
* @param core_backup_renderer $renderer
* @return string HTML code to echo
*/
public function display(core_backup_renderer $renderer) {
$form = $this->initialise_stage_form();
// A nasty hack follows to work around the sad fact that moodle quickforms
// do not allow to actually return the HTML content, just to echo it.
flush();
ob_start();
$form->display();
$output = ob_get_contents();
ob_end_clean();
return $output;
}
/**
* Processes the stage.
*
* This must be overridden by every stage as it will be different for every stage
*
* @abstract
* @param base_moodleform $form
*/
abstract public function process(base_moodleform $form = null);
/**
* Creates an instance of the correct moodleform properly populated and all
* dependencies instantiated
*
* @abstract
* @return backup_moodleform
*/
abstract protected function initialise_stage_form();
/**
* Returns the base UI class
* @return base_ui
*/
final public function get_ui() {
return $this->ui;
}
/**
* Returns true if this stage is the first stage.
* @return bool
*/
public function is_first_stage() {
return $this->stage == 1;
}
}