3 // This file is part of Moodle - http://moodle.org/
5 // Moodle is free software: you can redistribute it and/or modify
6 // it under the terms of the GNU General Public License as published by
7 // the Free Software Foundation, either version 3 of the License, or
8 // (at your option) any later version.
10 // Moodle is distributed in the hope that it will be useful,
11 // but WITHOUT ANY WARRANTY; without even the implied warranty of
12 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 // GNU General Public License for more details.
15 // You should have received a copy of the GNU General Public License
16 // along with Moodle. If not, see <http://www.gnu.org/licenses/>.
20 * @subpackage backup-moodle2
21 * @copyright 2010 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
22 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
26 * Class implementing the subplugins support for moodle2 backups
28 * TODO: Finish phpdocs
30 abstract class backup_subplugin {
32 protected $subplugintype;
33 protected $subpluginname;
34 protected $connectionpoint;
36 public function __construct($subplugintype, $subpluginname) {
37 $this->subplugintype = $subplugintype;
38 $this->subpluginname = $subpluginname;
39 $this->connectionpoint = '';
42 public function define_subplugin_structure($connectionpoint) {
44 $this->connectionpoint = $connectionpoint;
46 $methodname = 'define_' . $connectionpoint . '_subplugin_structure';
48 if (method_exists($this, $methodname)) {
49 return $this->$methodname();
56 * Factory method that will return one backup_subplugin_element (backup_optigroup_element)
57 * with its name automatically calculated, based one the subplugin being handled (type, name)
59 protected function get_subplugin_element($final_elements = null, $conditionparam = null, $conditionvalue = null) {
60 // Something exclusive for this backup_subplugin_element (backup_optigroup_element)
61 // because it hasn't XML representation
62 $name = 'optigroup_' . $this->subplugintype . '_' . $this->subpluginname . '_' . $this->connectionpoint;
63 return new backup_subplugin_element($name, $final_elements, $conditionparam, $conditionvalue);
67 * Simple helper function that suggests one name for the main nested element in subplugins
68 * It's not mandatory to use it but recommended ;-)
70 protected function get_recommended_name() {
71 return 'subplugin_' . $this->subplugintype . '_' . $this->subpluginname . '_' . $this->connectionpoint;