MDL-13189 - replace the $QTYPE_MENU global with a function call, so that we can set up the language strings later, after $COURSE is initialised. This ensures that the quesion names appear in the right language.

This commit is contained in:
tjhunt
2008-02-28 12:53:05 +00:00
parent 0ce6c76982
commit 7f761c27eb
3 changed files with 33 additions and 12 deletions
+29 -8
View File
@@ -98,14 +98,6 @@ global $QTYPES, $QTYPE_MENU, $QTYPE_MANUAL, $QTYPE_EXCLUDE_FROM_RANDOM;
* Array holding question type objects
*/
$QTYPES = array();
/**
* Array of question types names translated to the user's language
*
* The $QTYPE_MENU array holds the names of all the question types that the user should
* be able to create directly. Some internal question types like random questions are excluded.
* The complete list of question types can be found in {@link $QTYPES}.
*/
$QTYPE_MENU = array();
/**
* String in the format "'type1','type2'" that can be used in SQL clauses like
* "WHERE q.type IN ($QTYPE_MANUAL)".
@@ -127,6 +119,7 @@ function question_register_questiontype($qtype) {
$name = $qtype->name();
$QTYPES[$name] = $qtype;
// The $QTYPE_MENU global is not deprecated, but still build it to avoid breaking 3rd-party code that needs it.
$menuname = $qtype->menu_name();
if ($menuname) {
$QTYPE_MENU[$name] = $menuname;
@@ -161,6 +154,34 @@ foreach($qtypenames as $qtypename) {
}
}
/**
* An array of question type names translated to the user's language, suitable for use when
* creating a drop-down menu of options.
*
* Long-time Moodle programmers will realise that this replaces the old $QTYPE_MENU array.
* The array returned will only hold the names of all the question types that the user should
* be able to create directly. Some internal question types like random questions are excluded.
*
* @return array an array of question type names translated to the user's language.
*/
function question_type_menu() {
global $QTYPES, $QTYPE_MENU;
static $menu_options = null;
if (is_null($menu_options)) {
$menu_options = array();
foreach ($QTYPES as $name => $qtype) {
$menuname = $qtype->menu_name();
if ($menuname) {
$menu_options[$name] = $menuname;
}
}
// For now, keep a copy in the old global,
// to try to avoid breaking third party code that relies on it.
$QTYPE_MENU = $menu_options;
}
return $menu_options;
}
/// OTHER CLASSES /////////////////////////////////////////////////////////
/**