From: julmis Date: Tue, 22 Jun 2004 20:44:59 +0000 (+0000) Subject: Updates to quiztimer X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=684d865a4918b38e52cf03faf096e4e77df869a3;p=moodle.git Updates to quiztimer - mark question result to zero if time limit is exceeded --- diff --git a/mod/quiz/attempt.php b/mod/quiz/attempt.php index 2051fb0809..0df9ae7cec 100644 --- a/mod/quiz/attempt.php +++ b/mod/quiz/attempt.php @@ -12,11 +12,11 @@ if (! $cm = get_record("course_modules", "id", $id)) { error("Course Module ID was incorrect"); } - + if (! $course = get_record("course", "id", $cm->course)) { error("Course is misconfigured"); } - + if (! $quiz = get_record("quiz", "id", $cm->instance)) { error("Course module is incorrect"); } @@ -62,8 +62,8 @@ $strquiz = get_string("modulename", "quiz"); print_header("$course->shortname: $quiz->name", "$course->fullname", - "$navigation id>$strquizzes -> - id\">$quiz->name -> $strattemptnum", + "$navigation id>$strquizzes -> + id\">$quiz->name -> $strattemptnum", "", "", true); echo ''; // for overlib @@ -108,7 +108,7 @@ print_heading(get_string("noanswers", "quiz")); print_continue("attempt.php?q=$quiz->id"); exit; - } + } if (!$questions = get_records_list("quiz_questions", "id", $quiz->questions)) { error("No questions found!"); @@ -127,30 +127,30 @@ } else if (ereg('^q([0-9]+)r([0-9]+)$', $key, $keyregs)) { // Random-style answers $questions[$keyregs[1]]->answer[] = "$keyregs[2]-$value"; - + } else if (ereg('^q([0-9]+)ma([0-9]+)$', $key, $keyregs)) { // Multi-answer questions $questions[$keyregs[1]]->answer[] = "$keyregs[2]-$value"; } else if ('shuffleorder' == $key) { $shuffleorder = explode(",", $value); // Actual order questions were given in - + } else { // Useful for debugging new question types. Must be last. error("Answer received for non-existent question ($key -> $value)"); } } - if (!$result = quiz_grade_attempt_results($quiz, $questions)) { - error("Could not grade your quiz attempt!"); - } - if($timelimit > 0) { if(($timelimit + 60) <= $timesincestart) { - $result->sumgrades = 0; + $quiz->timesincestart = $timesincestart; } } + if (!$result = quiz_grade_attempt_results($quiz, $questions)) { + error("Could not grade your quiz attempt!"); + } + if ($attempt = quiz_save_attempt($quiz, $questions, $result, $attemptnumber)) { - add_to_log($course->id, "quiz", "submit", + add_to_log($course->id, "quiz", "submit", "review.php?id=$cm->id&attempt=$attempt->id", "$quiz->id", $cm->id); } else { notice(get_string("alreadysubmitted", "quiz"), "view.php?id=$cm->id"); @@ -193,10 +193,10 @@ } /// Actually seeing the questions marks the start of an attempt - + if (!$unfinished = quiz_get_user_attempt_unfinished($quiz->id, $USER->id)) { if ($newattemptid = quiz_start_attempt($quiz->id, $USER->id, $attemptnumber)) { - add_to_log($course->id, "quiz", "attempt", + add_to_log($course->id, "quiz", "attempt", "review.php?id=$cm->id&attempt=$newattemptid", "$quiz->id", $cm->id); } else { error("Sorry! Could not start the quiz (could not save starting time)"); @@ -261,7 +261,7 @@ $result->feedback = array(); // Not to be printed $result->attemptbuildsonthelast = true; } - + } else { // No latest attempt, or latest attempt was empty - Reset to defaults $questions = NULL; diff --git a/mod/quiz/lib.php b/mod/quiz/lib.php index 22248f4f16..91421cdac7 100644 --- a/mod/quiz/lib.php +++ b/mod/quiz/lib.php @@ -1365,7 +1365,7 @@ function quiz_category_select_menu($courseid,$published=false,$only_editable=fal function quiz_get_category_coursename($category) { /// if the category is published, adds on the course -/// name +/// name $cname=$category->name; if ($category->publish) { if ($catcourse=get_record("course","id",$category->id)) { @@ -1593,7 +1593,7 @@ function quiz_print_cat_question_list($categoryid, $quizselected=true) { echo ''; helpbutton("questiontypes", $strcreatenewquestion, "quiz"); echo ''; - + echo ''; echo '
'; echo "id\" />"; @@ -2162,6 +2162,12 @@ function quiz_grade_attempt_results($quiz, $questions) { $questionresult = quiz_grade_attempt_question_result($question, $answers); + // if time limit is enabled and exceeded, return zero grades + if($quiz->timelimit > 0) { + if(($quiz->timelimit + 60) <= $quiz->timesincestart) { + $questionresult->grade = 0; + } + } $result->grades[$question->id] = round($questionresult->grade, 2); $result->sumgrades += $questionresult->grade; @@ -2954,7 +2960,7 @@ function get_questions_category( $category ) { // get the list of questions for the category $questions = get_records("quiz_questions","category",$category->id); - // iterate through questions, getting stuff we need + // iterate through questions, getting stuff we need foreach($questions as $question) { $new_question = get_question_data( $question ); $qresults[] = $new_question; @@ -2964,30 +2970,30 @@ function get_questions_category( $category ) { } // function to read single question, parameter is object view of -// quiz_categories record, results is a combined object +// quiz_categories record, results is a combined object // defined as follows... -// ->id quiz_questions id -// ->category category -// ->name q name +// ->id quiz_questions id +// ->category category +// ->name q name // ->questiontext // ->image -// ->qtype see defines at the top of this file -// ->stamp not too sure -// ->version not sure +// ->qtype see defines at the top of this file +// ->stamp not too sure +// ->version not sure // ----SHORTANSWER // ->usecase -// ->answers array of answers +// ->answers array of answers // ----TRUEFALSE -// ->trueanswer truefalse answer +// ->trueanswer truefalse answer // ->falseanswer truefalse answer // ----MULTICHOICE // ->layout -// ->single many or just one correct answer -// ->answers array of answer objects +// ->single many or just one correct answer +// ->answers array of answer objects function get_question_data( $question ) { // what to do next depends of question type (qtype) switch ($question->qtype) { - case SHORTANSWER: + case SHORTANSWER: $shortanswer = get_record("quiz_shortanswer","question",$question->id); $question->usecase = $shortanswer->usecase; $question->answers = array(); @@ -3001,7 +3007,7 @@ function get_question_data( $question ) { break; case MULTICHOICE: if (!$multichoice = get_record("quiz_multichoice","question",$question->id)) { - error( "quiz_multichoice $question->id not found" ); + error( "quiz_multichoice $question->id not found" ); } $question->layout = $multichoice->layout; $question->single = $multichoice->single; @@ -3014,8 +3020,8 @@ function get_question_data( $question ) { } // function to return single answer -// ->id answer id -// ->question question number +// ->id answer id +// ->question question number // ->answer // ->fraction // ->feedback