$systemcontext = context_system::instance(); require_capability('moodle/question:config', $systemcontext); admin_externalpage_setup('manageqbehaviours'); $thispageurl = new moodle_url('/admin/qbehaviours.php'); $behaviours = get_plugin_list('qbehaviour'); $pluginmanager = plugin_manager::instance(); // Get some data we will need - question counts and which types are needed. $counts = $DB->get_records_sql_menu("\n SELECT behaviour, COUNT(1)\n FROM {question_attempts} GROUP BY behaviour"); $needed = array(); $archetypal = array(); foreach ($behaviours as $behaviour => $notused) { if (!array_key_exists($behaviour, $counts)) { $counts[$behaviour] = 0; } $needed[$behaviour] = $counts[$behaviour] > 0 || $pluginmanager->other_plugins_that_require('qbehaviour_' . $behaviour); $archetypal[$behaviour] = question_engine::is_behaviour_archetypal($behaviour); } foreach ($counts as $behaviour => $count) { if (!array_key_exists($behaviour, $behaviours)) { $counts['missing'] += $count; } } $needed['missing'] = true; // Work of the correct sort order. $config = get_config('question'); $sortedbehaviours = array(); foreach ($behaviours as $behaviour => $notused) { $sortedbehaviours[$behaviour] = question_engine::get_behaviour_name($behaviour); } if (!empty($config->behavioursortorder)) { $sortedbehaviours = question_engine::sort_behaviours($sortedbehaviours, $config->behavioursortorder, '');
function action($state) { $behaviours = get_plugin_list('qbehaviour'); $pm = plugin_manager::instance(); $sql = "\n SELECT\n behaviour,\n COUNT(1)\n FROM \n {question_attempts}\n GROUP BY\n behaviour\n "; $counts = $DB->get_records_sql_menu($sql); $needed = array(); $archetypal = array(); foreach ($behaviours as $behaviour => $foobar) { if (!array_key_exists($behaviour, $counts)) { $counts[$behaviour] = 0; } $needed[$behaviour] = $counts[$behaviour] > 0 || $pm->other_plugins_that_require('qbehaviour_' . $behaviour); $archetypal[$behaviour] = question_engine::is_behaviour_archetypal($behaviour); } $config = get_config('question'); if (!empty($config->disabledbehaviours)) { $disabledbehaviours = explode(',', $config->disabledbehaviours); } else { $disabledbehaviours = array(); } if (!isset($behaviours[$this->plugin])) { return get_string('unknownbehaviour', 'question', $this->plugin); } switch ($action) { case 'enable': if (!$archetypal[$this->plugin]) { return get_string('cannotenablebehaviour', 'question', $this->plugin); } if (($key = array_search($this->plugin, $disabledbehaviours)) !== false) { unset($disabledbehaviours[$key]); set_config('disabledbehaviours', implode(',', $disabledbehaviours), 'question'); } break; case 'disable': if (array_search($disable, $disabledbehaviours) === false) { $disabledbehaviours[] = $disable; set_config('disabledbehaviours', implode(',', $disabledbehaviours), 'question'); } break; } return 0; }