MDL-23478 backup - Implement glossary_random & quiz_results after_restore() methods
[moodle.git] / blocks / quiz_results / backup / moodle2 / restore_quiz_results_block_task.class.php
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.
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/>.
18 /**
19  * @package moodlecore
20  * @subpackage backup-moodle2
21  * @copyright 2003 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com}
22  * @license   http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
23  */
25 /**
26  * Specialised restore task for the quiz_results block
27  * (using execute_after_tasks for recoding of target quiz)
28  *
29  * TODO: Finish phpdocs
30  */
31 class restore_quiz_results_block_task extends restore_block_task {
33     protected function define_my_settings() {
34     }
36     protected function define_my_steps() {
37     }
39     public function get_fileareas() {
40         return array(); // No associated fileareas
41     }
43     public function get_configdata_encoded_attributes() {
44         return array(); // No special handling of configdata
45     }
47     /**
48      * This function, executed after all the tasks in the plan
49      * have been executed, will perform the recode of the
50      * target quiz for the block. This must be done here
51      * and not in normal execution steps because the quiz
52      * can be restored after the block.
53      */
54     public function after_restore() {
55         global $DB;
57         // Get the blockid
58         $blockid = $this->get_blockid();
60         // Extract block configdata and update it to point to the new quiz
61         if ($configdata = $DB->get_field('block_instances', 'configdata', array('id' => $blockid))) {
62             $config = unserialize(base64_decode($configdata));
63             if (!empty($config->quizid)) {
64                 // Get quiz mapping and replace it in config
65                 if ($quizmap = restore_dbops::get_backup_ids_record($this->get_restoreid(), 'quiz', $config->quizid)) {
66                     $config->quizid = $quizmap->newitemid;
67                     $configdata = base64_encode(serialize($config));
68                     $DB->set_field('block_instances', 'configdata', $configdata, array('id' => $blockid));
69                 }
70             }
71         }
72     }
74     static public function define_decode_contents() {
75         return array();
76     }
78     static public function define_decode_rules() {
79         return array();
80     }
81 }