From cbdb09a9ef79bbfd798b8fb5f9b2f2f74fb13509 Mon Sep 17 00:00:00 2001 From: Tim Hunt Date: Wed, 8 May 2013 21:04:48 +0100 Subject: [PATCH] MDL-39412 disabling manual graded behaviour refinements 1. Change behaviour admin settings so you can only select enabled behaviours. 2. During the upgrade, change admin settings that might be currently set to manual graded, so that instead they are set to deferredfeedback (if that is available. If not, we just take the first alphabetically.) --- lib/adminlib.php | 2 +- .../behaviour/manualgraded/db/upgrade.php | 29 ++++++++++++++++++- question/behaviour/manualgraded/version.php | 2 +- 3 files changed, 30 insertions(+), 3 deletions(-) diff --git a/lib/adminlib.php b/lib/adminlib.php index 9a5dc77a34e..dbacd3f3b74 100644 --- a/lib/adminlib.php +++ b/lib/adminlib.php @@ -4142,7 +4142,7 @@ class admin_setting_question_behaviour extends admin_setting_configselect { public function load_choices() { global $CFG; require_once($CFG->dirroot . '/question/engine/lib.php'); - $this->choices = question_engine::get_archetypal_behaviours(); + $this->choices = question_engine::get_behaviour_options(); return true; } } diff --git a/question/behaviour/manualgraded/db/upgrade.php b/question/behaviour/manualgraded/db/upgrade.php index 9c22cfb4c8d..1f19058f2c3 100644 --- a/question/behaviour/manualgraded/db/upgrade.php +++ b/question/behaviour/manualgraded/db/upgrade.php @@ -30,7 +30,7 @@ defined('MOODLE_INTERNAL') || die(); * Manual graded question behaviour upgrade code. */ function xmldb_qbehaviour_manualgraded_upgrade($oldversion) { - global $DB; + global $CFG, $DB; $dbman = $DB->get_manager(); @@ -59,6 +59,33 @@ function xmldb_qbehaviour_manualgraded_upgrade($oldversion) { upgrade_plugin_savepoint(true, 2013050200, 'qbehaviour', 'manualgraded'); } + if ($oldversion < 2013050800) { + // Also, fix any other admin settings that currently select manualgraded behaviour. + + // Work out a sensible default alternative to manualgraded. + require_once($CFG->libdir . '/questionlib.php'); + $behaviours = question_engine::get_behaviour_options(); + if (array_key_exists('deferredfeedback', $behaviours)) { + $defaultbehaviour = 'deferredfeedback'; + } else { + reset($behaviours); + $defaultbehaviour = key($behaviours); + } + + // Fix the question preview default. + if (get_config('question_preview', 'behaviour') == 'manualgraded') { + set_config('behaviour', $defaultbehaviour, 'question_preview'); + } + + // Fix the quiz settings default. + if (get_config('quiz', 'preferredbehaviour') == 'manualgraded') { + set_config('preferredbehaviour', $defaultbehaviour, 'quiz'); + } + + // Manual graded question behaviour savepoint reached. + upgrade_plugin_savepoint(true, 2013050800, 'qbehaviour', 'manualgraded'); + } + return true; } diff --git a/question/behaviour/manualgraded/version.php b/question/behaviour/manualgraded/version.php index c90df4be51d..68336c48cf3 100644 --- a/question/behaviour/manualgraded/version.php +++ b/question/behaviour/manualgraded/version.php @@ -26,7 +26,7 @@ defined('MOODLE_INTERNAL') || die(); $plugin->component = 'qbehaviour_manualgraded'; -$plugin->version = 2013050200; +$plugin->version = 2013050800; $plugin->requires = 2013050100;