Noticed when reviewing MDL-50047.
Upgrade code (mostly good):
blocks/quiz_results/db/upgrade.php
$records = get_records('block_instances');
|
foreach ($records as $record) {
|
if (!empty($record->configdata)) {
|
$config = unserialize(base64_decode($record->configdata));
|
|
// ...
|
|
}
|
|
$record->configdata = base64_encode(serialize($config));
|
$record->blockname = 'activity_results';
|
$DB->update_record('block_instances', $record);
|
}
|
Restore code (less good):
blocks/quiz_results/backup/moodle2/restore_quiz_results_block_task.class.php
$configdata = $DB->get_field('block_instances', 'configdata', array('id' => $blockid));
|
if (!empty($configdata)) {
|
$config = unserialize(base64_decode($record->configdata));
|
}
|
|
$DB->set_field('block_instances', 'configdata', $newconfigdata, array('id' => $blockid));
|
$DB->set_field('block_instances', 'blockname', 'activity_results', array('id' => $blockid));
|
So a few issues in the above:
- get_field + 2 x set_field; instead of get_record + update_record in Restore;
- Updating configdata on the record regardless of whether it's been changed.
As I say, these are both minor things so no rush, but would reduce DB queries on restore (always a good thing) and unnecessary serialize + base64_encode.
- Discovered while testing
-
MDL-50047 Notices or misconfiguration can happen when upgrading or restoring quiz_results block
-
- Closed
-