mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 17:36:38 +02:00
MDL-50310 glossary: Fix restore of random glossary entry block
When restoring the random glossary entry block, we need to check that the associated glossary has also been included in the backup and is being restored. If not, we must invalidate the block configuration. Before this patch, the block configuration was not invalidated. Additionally, as a result of MDL-20131, the block configuration also contains the course id of the associated glossary (which by the way does not seem to be a wise choice, but I may be missing something). So we need to remap this course id as well to avoid mismatch.
This commit is contained in:
parent
22fa1056d7
commit
18b2d9d2f9
1 changed files with 8 additions and 1 deletions
|
@ -62,9 +62,16 @@ class restore_glossary_random_block_task extends restore_block_task {
|
|||
if (!empty($config->glossary)) {
|
||||
// Get glossary mapping and replace it in config
|
||||
if ($glossarymap = restore_dbops::get_backup_ids_record($this->get_restoreid(), 'glossary', $config->glossary)) {
|
||||
$config->glossary = $glossarymap->newitemid;
|
||||
$mappedglossary = $DB->get_record('glossary', array('id' => $glossarymap->newitemid),
|
||||
'id,course,globalglossary', MUST_EXIST);
|
||||
$config->glossary = $mappedglossary->id;
|
||||
$config->courseid = $mappedglossary->course;
|
||||
$config->globalglossary = $mappedglossary->globalglossary;
|
||||
$configdata = base64_encode(serialize($config));
|
||||
$DB->set_field('block_instances', 'configdata', $configdata, array('id' => $blockid));
|
||||
} else {
|
||||
// The block refers to a glossary not present in the backup file.
|
||||
$DB->set_field('block_instances', 'configdata', '', array('id' => $blockid));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue