Merge branch 'MDL-77933-402' of https://github.com/snake/moodle into MOODLE_402_STABLE
[moodle.git] / backup / moodle2 / backup_theme_plugin.class.php
blob7978c527fbec3fc5785e368f6d8a72f73cc27f0c
1 <?php
3 // This file is part of Moodle - http://moodle.org/
4 //
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.
9 //
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/>.
18 /**
19 * Defines backup_theme_plugin class
21 * @package core_backup
22 * @subpackage moodle2
23 * @category backup
24 * @copyright 2011 onwards The Open University
25 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
28 defined('MOODLE_INTERNAL') || die();
30 /**
31 * Base class for theme backup plugins.
33 * NOTE: When you back up a course, it runs backup for ALL themes - not just
34 * the currently selected one.
36 * That means that if, for example, a course was once in theme A, and theme A
37 * had some data settings, but it is then changed to theme B, the data settings
38 * will still be included in the backup and restore. With the restored course,
39 * if you ever change it back to theme A, the settings will be ready.
41 * It also means that other themes which are not the one set up for the course,
42 * but might be seen by some users (eg user themes, session themes, mnet themes)
43 * can store data.
45 * If this behaviour is not desired for a particular theme's data, the subclass
46 * can call is_current_theme('myname') to check.
48 abstract class backup_theme_plugin extends backup_plugin {
50 /**
51 * @var string Current theme for course (may not be the same as plugin).
53 protected $coursetheme;
55 /**
56 * @param string $plugintype Plugin type (always 'theme')
57 * @param string $pluginname Plugin name (name of theme)
58 * @param backup_optigroup $optigroup Group that will contain this data
59 * @param backup_course_structure_step $step Backup step that this is part of
61 public function __construct($plugintype, $pluginname, $optigroup, $step) {
63 parent::__construct($plugintype, $pluginname, $optigroup, $step);
65 $this->coursetheme = backup_plan_dbops::get_theme_from_courseid(
66 $this->task->get_courseid());
70 /**
71 * Return condition for whether this theme should be backed up (= if it
72 * is the same theme as the one used in this course). This condition has
73 * the theme used in the course. It will be compared against the name
74 * of the theme, by use of third parameter in get_plugin_element; in
75 * subclass, you should do:
76 * $plugin = $this->get_plugin_element(null, $this->get_theme_condition(), 'mytheme');
78 protected function get_theme_condition() {
79 return array('sqlparam' => $this->coursetheme);