1 <?php 2 // This file is part of Moodle - http://moodle.org/ 3 // 4 // Moodle is free software: you can redistribute it and/or modify 5 // it under the terms of the GNU General Public License as published by 6 // the Free Software Foundation, either version 3 of the License, or 7 // (at your option) any later version. 8 // 9 // Moodle is distributed in the hope that it will be useful, 10 // but WITHOUT ANY WARRANTY; without even the implied warranty of 11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 // GNU General Public License for more details. 13 // 14 // You should have received a copy of the GNU General Public License 15 // along with Moodle. If not, see <http://www.gnu.org/licenses/>. 16 17 /** 18 * @package block_glossary_random 19 * @subpackage backup-moodle2 20 * @copyright 2003 onwards Eloy Lafuente (stronk7) {@link http://stronk7.com} 21 * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later 22 */ 23 24 /** 25 * Specialised restore task for the glossary_random block 26 * (using execute_after_tasks for recoding of glossaryid) 27 * 28 * TODO: Finish phpdocs 29 */ 30 class restore_glossary_random_block_task extends restore_block_task { 31 32 protected function define_my_settings() { 33 } 34 35 protected function define_my_steps() { 36 } 37 38 public function get_fileareas() { 39 return array(); // No associated fileareas 40 } 41 42 public function get_configdata_encoded_attributes() { 43 return array(); // No special handling of configdata 44 } 45 46 /** 47 * This function, executed after all the tasks in the plan 48 * have been executed, will perform the recode of the 49 * target glossary for the block. This must be done here 50 * and not in normal execution steps because the glossary 51 * may be restored after the block. 52 */ 53 public function after_restore() { 54 global $DB; 55 56 // Get the blockid 57 $blockid = $this->get_blockid(); 58 59 // Extract block configdata and update it to point to the new glossary 60 if ($configdata = $DB->get_field('block_instances', 'configdata', array('id' => $blockid))) { 61 $config = $this->decode_configdata($configdata); 62 if (!empty($config->glossary)) { 63 if ($glossarymap = restore_dbops::get_backup_ids_record($this->get_restoreid(), 'glossary', $config->glossary)) { 64 // Get glossary mapping and replace it in config 65 $config->glossary = $glossarymap->newitemid; 66 } else if ($this->is_samesite()) { 67 // We are restoring on the same site, check if glossary can be used in the block in this course. 68 $glossaryid = $DB->get_field_sql("SELECT id FROM {glossary} " . 69 "WHERE id = ? AND (course = ? OR globalglossary = 1)", 70 [$config->glossary, $this->get_courseid()]); 71 if (!$glossaryid) { 72 unset($config->glossary); 73 } 74 } else { 75 // The block refers to a glossary not present in the backup file. 76 unset($config->glossary); 77 } 78 // Unset config variables that are no longer used. 79 unset($config->globalglossary); 80 unset($config->courseid); 81 // Save updated config. 82 $configdata = base64_encode(serialize($config)); 83 $DB->set_field('block_instances', 'configdata', $configdata, array('id' => $blockid)); 84 } 85 } 86 } 87 88 static public function define_decode_contents() { 89 return array(); 90 } 91 92 static public function define_decode_rules() { 93 return array(); 94 } 95 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body