if ($requesttype == 'postanswer' || $requesttype == 'getresults' || $requesttype == 'teacherrejoin') { realtimequiz_send_results($quizid); } else { if ($requesttype == 'nextquestion') { $clientquestionnum = required_param('currentquestion', PARAM_INT); $questionid = $DB->get_field('realtimequiz', 'currentquestion', array('id' => $quizid)); $questionnum = $DB->get_field('realtimequiz_question', 'questionnum', array('id' => $questionid)); if ($clientquestionnum != $questionnum) { realtimequiz_send_results($quizid); } else { $questionnum++; realtimequiz_goto_question($context, $quizid, $questionnum); } } else { realtimequiz_send_error(get_string('unknownrequest', 'realtimequiz') . $requesttype . '\''); } } } break; case REALTIMEQUIZ_STATUS_FINALRESULTS: // Showing the final totals, etc realtimequiz_send_final_results($quizid); break; default: realtimequiz_send_error(get_string('incorrectstatus', 'realtimequiz') . $status . '\''); break; } } } } realtimequiz_end_response();
function realtimequiz_goto_question($context, $quizid, $questionnum) { global $DB; if (has_capability('mod/realtimequiz:control', $context)) { $quiz = $DB->get_record('realtimequiz', array('id' => $quizid)); // Update the question statistics: $quiz->classresult += $quiz->questionresult; $quiz->questionresult = 0; $questionid = $DB->get_field('realtimequiz_question', 'id', array('quizid' => $quizid, 'questionnum' => $questionnum)); if ($questionid) { $quiz->currentquestion = $questionid; $quiz->status = REALTIMEQUIZ_STATUS_PREVIEWQUESTION; $quiz->nextendtime = time() + 2; // Give everyone a chance to get the question before starting $DB->update_record('realtimequiz', $quiz); // FIXME - not update all fields? realtimequiz_send_question($quizid, $context, true); } else { // Assume we have run out of questions $quiz->status = REALTIMEQUIZ_STATUS_FINALRESULTS; $DB->update_record('realtimequiz', $quiz); // FIXME - not update all fields? realtimequiz_send_final_results($quizid); } } else { realtimequiz_send_error(get_string('notauthorised', 'realtimequiz')); } }