From d7444d442fdcad8c4443b67d5d558d4dfb36902a Mon Sep 17 00:00:00 2001 From: tjhunt Date: Tue, 18 Jul 2006 15:34:24 +0000 Subject: [PATCH] Bug #6033 - missing string for unknown questiontype. Also tidied up some messy code. Merged from MOODLE_16_STABLE. --- lang/en_utf8/quiz.php | 2 +- lib/questionlib.php | 62 +++++++++++----------- question/type/missingtype/editquestion.php | 8 +-- question/type/missingtype/questiontype.php | 1 + 4 files changed, 38 insertions(+), 35 deletions(-) diff --git a/lang/en_utf8/quiz.php b/lang/en_utf8/quiz.php index 9c1998cc25..a429bc25b8 100644 --- a/lang/en_utf8/quiz.php +++ b/lang/en_utf8/quiz.php @@ -495,7 +495,7 @@ $string['usedcategorymoved'] = 'This category has been preserved and moved to th $string['validate'] = 'Validate'; $string['viewallanswers'] = 'View $a quiz attempts'; $string['viewallreports'] = 'View reports for $a attempts'; -$string['warningmissingtype'] = '

This question is of a type that has not been installed on your Moodle yet.
Please alert your Moodle administrator.

'; +$string['warningmissingtype'] = 'This question is of a type that has not been installed on your Moodle yet.
Please alert your Moodle administrator.
'; $string['warningsdetected'] = '$a warning(s) detected'; $string['wheregrade'] = 'Where\'s my grade?'; $string['webct'] = 'WebCT format'; diff --git a/lib/questionlib.php b/lib/questionlib.php index b7e645a433..f49315e84d 100644 --- a/lib/questionlib.php +++ b/lib/questionlib.php @@ -430,6 +430,7 @@ function question_delete_course($course, $feedback=true) { //It's being used. Cannot delete it, so: //Create a container category in SITEID course if it doesn't exist if (!$concatid) { + $concat = new stdClass; $concat->course = SITEID; if (!isset($course->shortname)) { $course->shortname = 'id=' . $course->id; @@ -489,6 +490,7 @@ function question_delete_course($course, $feedback=true) { } //Inform about changes performed if feedback is enabled if ($feedback) { + $table = new stdClass; $table->head = array(get_string('category','quiz'), get_string('action')); $table->data = $feedbackdata; print_table($table); @@ -497,44 +499,43 @@ function question_delete_course($course, $feedback=true) { return true; } - /** -* Updates the question objects with question type specific -* information by calling {@link get_question_options()} -* -* Can be called either with an array of question objects or with a single -* question object. -* @return bool Indicates success or failure. -* @param mixed $questions Either an array of question objects to be updated -* or just a single question object -*/ -function get_question_options(&$questions) { + * Private function to factor common code out of get_question_options(). + * + * @param object $question the question to tidy. + * @return boolean true if successful, else false. + */ +function _tidy_question(&$question) { global $QTYPES; + if (!array_key_exists($question->qtype, $QTYPES)) { + $question->qtype = 'missingtype'; + $question->questiontext = '

' . get_string('warningmissingtype', 'quiz') . '

' . $question->questiontext; + } + $question->name_prefix = question_make_name_prefix($question->id); + return $QTYPES[$question->qtype]->get_question_options($question); +} +/** + * Updates the question objects with question type specific + * information by calling {@link get_question_options()} + * + * Can be called either with an array of question objects or with a single + * question object. + * + * @param mixed $questions Either an array of question objects to be updated + * or just a single question object + * @return bool Indicates success or failure. + */ +function get_question_options(&$questions) { if (is_array($questions)) { // deal with an array of questions - // get the keys of the input array - $keys = array_keys($questions); - // update each question object - foreach ($keys as $i) { - if (!array_key_exists($questions[$i]->qtype, $QTYPES)) { - $questions[$i]->qtype = 'missingtype'; - $questions[$i]->questiontext = get_string('warningmissingtype', 'quiz').$questions[$i]->questiontext; - } - - // set name prefix - $questions[$i]->name_prefix = question_make_name_prefix($i); - - if (!$QTYPES[$questions[$i]->qtype]->get_question_options($questions[$i])) + foreach ($questions as $i => $notused) { + if (!_tidy_question($questions[$i])) { return false; + } } return true; } else { // deal with single question - if (!array_key_exists($questions->qtype, $QTYPES)) { - $questions->qtype = 'missingtype'; - $questions[$i]->questiontext = get_string('warningmissingtype', 'quiz').$questions[$i]->questiontext; - } - $questions->name_prefix = question_make_name_prefix($questions->id); - return $QTYPES[$questions->qtype]->get_question_options($questions); + return _tidy_question($questions); } } @@ -1210,6 +1211,7 @@ function question_get_id_from_name_prefix($name) { */ function question_new_attempt_uniqueid($modulename='quiz') { global $CFG; + $attempt = new stdClass; $attempt->modulename = $modulename; if (!$id = insert_record('question_attempts', $attempt)) { error('Could not create new entry in question_attempts table'); diff --git a/question/type/missingtype/editquestion.php b/question/type/missingtype/editquestion.php index 28710898c7..5f69b9c7ba 100644 --- a/question/type/missingtype/editquestion.php +++ b/question/type/missingtype/editquestion.php @@ -1,7 +1,7 @@ answers)) { - $answersraw = get_records_list("question_answers", "id", $options->answers); + $answersraw = get_records_list('question_answers', 'id', $options->answers); } @@ -13,10 +13,10 @@ } $yesnooptions = array(); - $yesnooptions[0] = get_string("no"); - $yesnooptions[1] = get_string("yes"); + $yesnooptions[0] = get_string('no'); + $yesnooptions[1] = get_string('yes'); - print_heading_with_help(get_string("editingmissingtype", "quiz"), "multichoice", "quiz"); + print_heading(get_string('warningmissingtype', 'quiz')); require("$CFG->dirroot/question/type/missingtype/editquestion.html"); ?> diff --git a/question/type/missingtype/questiontype.php b/question/type/missingtype/questiontype.php index 45764e2d7e..6493f3bd9b 100644 --- a/question/type/missingtype/questiontype.php +++ b/question/type/missingtype/questiontype.php @@ -38,6 +38,7 @@ class question_missingtype_qtype extends default_questiontype { $anss = array(); if ($answers) { foreach ($answers as $answer) { + $a = new stdClass; $a->text = format_text("$answer->answer", FORMAT_MOODLE, $formatoptions, $cmoptions->course); $anss[] = clone($a); -- 2.39.5