Skip to content

Commit

Permalink
MDL-50310 glossary: Fix restore of random glossary entry block
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
mudrd8mz committed Feb 4, 2016
1 parent 9d5d9c6 commit 32fc1a6
Showing 1 changed file with 8 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -62,9 +62,16 @@ public function after_restore() {
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));
}
}
}
Expand Down

0 comments on commit 32fc1a6

Please sign in to comment.