public function test_sort_qtype_array() { $config = new stdClass(); $config->multichoice_sortorder = '1'; $config->calculated_sortorder = '2'; $qtypes = array('frog' => 'toad', 'calculated' => 'newt', 'multichoice' => 'eft'); $this->assertEquals(question_bank::sort_qtype_array($qtypes, $config), array('multichoice' => 'eft', 'calculated' => 'newt', 'frog' => 'toad')); }
} $needed['missingtype'] = true; // The system needs the missing question type. foreach ($counts as $qtypename => $count) { if (!isset($qtypes[$qtypename])) { $counts['missingtype']->numquestions += $count->numquestions - $count->numhidden; $counts['missingtype']->numhidden += $count->numhidden; } } // Work of the correct sort order. $config = get_config('question'); $sortedqtypes = array(); foreach ($qtypes as $qtypename => $qtype) { $sortedqtypes[$qtypename] = $qtype->local_name(); } $sortedqtypes = question_bank::sort_qtype_array($sortedqtypes, $config); // Process actions ============================================================ // Disable. if (($disable = optional_param('disable', '', PARAM_PLUGIN)) && confirm_sesskey()) { if (!isset($qtypes[$disable])) { print_error('unknownquestiontype', 'question', $thispageurl, $disable); } set_config($disable . '_disabled', 1, 'question'); redirect($thispageurl); } // Enable. if (($enable = optional_param('enable', '', PARAM_PLUGIN)) && confirm_sesskey()) { if (!isset($qtypes[$enable])) { print_error('unknownquestiontype', 'question', $thispageurl, $enable); } if (!$qtypes[$enable]->menu_name()) {
/** * @global core_renderer $OUTPUT * @param string $name * @param string $visiblename * @param string $description * @param array $defaultsetting */ public function __construct($name, $visiblename, $description, $defaultsetting = null) { global $OUTPUT; $choices = array(); $icons = array(); $qtypes = question_bank::get_all_qtypes(); // some qtypes do not need workaround unset($qtypes['missingtype']); unset($qtypes['random']); // question_bank::sort_qtype_array() expects array(name => local_name) $qtypenames = array_map(function ($qtype) { return $qtype->local_name(); }, $qtypes); foreach (question_bank::sort_qtype_array($qtypenames) as $name => $label) { $choices[$name] = $label; $icons[$name] = ' ' . $OUTPUT->pix_icon('icon', '', $qtypes[$name]->plugin_name()) . ' '; } parent::__construct($name, $visiblename, $description, $defaultsetting, $choices, $icons); }