Proyectos de Subversion Moodle

Rev

| Ultima modificación | Ver Log |

Rev Autor Línea Nro. Línea
1 efrain 1
<?php
2
 
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.
14
//
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/>.
17
 
18
/**
19
 * Defines backup_theme_plugin class
20
 *
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
26
 */
27
 
28
defined('MOODLE_INTERNAL') || die();
29
 
30
/**
31
 * Base class for theme backup plugins.
32
 *
33
 * NOTE: When you back up a course, it runs backup for ALL themes - not just
34
 * the currently selected one.
35
 *
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.
40
 *
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.
44
 *
45
 * If this behaviour is not desired for a particular theme's data, the subclass
46
 * can call is_current_theme('myname') to check.
47
 */
48
abstract class backup_theme_plugin extends backup_plugin {
49
 
50
    /**
51
     * @var string Current theme for course (may not be the same as plugin).
52
     */
53
    protected $coursetheme;
54
 
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
60
     */
61
    public function __construct($plugintype, $pluginname, $optigroup, $step) {
62
 
63
        parent::__construct($plugintype, $pluginname, $optigroup, $step);
64
 
65
        $this->coursetheme = backup_plan_dbops::get_theme_from_courseid(
66
                    $this->task->get_courseid());
67
 
68
    }
69
 
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');
77
     */
78
    protected function get_theme_condition() {
79
        return array('sqlparam' => $this->coursetheme);
80
    }
81
}