function game_use_events() { $version = game_get_moodle_version(); return $version >= '02.07'; }
function game_millionaire_selectquestion(&$aanswer, $game, $attempt, &$millionaire, &$query, $context) { global $DB, $USER; if ($game->sourcemodule != 'quiz' and $game->sourcemodule != 'question') { print_error(get_string('millionaire_sourcemodule_must_quiz_question', 'game', get_string('modulename', 'quiz')) . ' ' . get_string('modulename', $attempt->sourcemodule)); } if ($millionaire->queryid != 0) { game_millionaire_loadquestions($game, $millionaire, $query, $aanswer, $context); return; } if ($game->sourcemodule == 'quiz') { if ($game->quizid == 0) { print_error(get_string('must_select_quiz', 'game')); } if (game_get_moodle_version() < '02.07') { $select = "qtype='multichoice' AND quiz='{$game->quizid}' AND qmo.questionid=q.id" . " AND qqi.question=q.id"; $table = "{quiz_question_instances} qqi,{question} q, {qtype_multichoice_options} qmo"; $order = ''; } else { $select = "qtype='multichoice' AND qs.quizid='{$game->quizid}' AND qmo.questionid=q.id" . " AND qs.questionid=q.id"; $table = "{quiz_slots} qs,{question} q, {qtype_multichoice_options} qmo"; $order = 'qs.page,qs.slot'; } } else { if ($game->questioncategoryid == 0) { print_error(get_string('must_select_questioncategory', 'game')); } // Include subcategories. $select = 'category=' . $game->questioncategoryid; if ($game->subcategories) { $cats = question_categorylist($game->questioncategoryid); if (count($cats)) { $select = 'q.category in (' . implode(',', $cats) . ')'; } } $select .= " AND qtype='multichoice' AND qmo.single=1 AND qmo.questionid=q.id"; $table = '{question} q, {qtype_multichoice_options} qmo'; } $select .= ' AND hidden=0'; if ($game->shuffle or $game->quizid == 0) { $questionid = game_question_selectrandom($game, $table, $select, 'q.id as id', true); } else { $questionid = game_millionaire_select_serial_question($game, $table, $select, 'q.id as id', $millionaire->level, $order); } if ($questionid == 0) { print_error(get_string('no_questions', 'game')); } $q = $DB->get_record('question', array('id' => $questionid), 'id,questiontext'); $recs = $DB->get_records('question_answers', array('question' => $questionid)); if ($recs === false) { print_error(get_string('no_questions', 'game')); } $correct = 0; $ids = array(); foreach ($recs as $rec) { $aanswer[] = game_filterquestion_answer(str_replace('\\"', '"', $rec->answer), $rec->id, $context->id, $game->course); $ids[] = $rec->id; if ($rec->fraction == 1) { $correct = $rec->id; } } $count = count($aanswer); for ($i = 1; $i <= $count; $i++) { $sel = mt_rand(0, $count - 1); $temp = array_splice($aanswer, $sel, 1); $aanswer[] = $temp[0]; $temp = array_splice($ids, $sel, 1); $ids[] = $temp[0]; } $query = new StdClass(); $query->attemptid = $attempt->id; $query->gamekind = $game->gamekind; $query->gameid = $game->id; $query->userid = $USER->id; $query->sourcemodule = $game->sourcemodule; $query->glossaryentryid = 0; $query->questionid = $questionid; $query->questiontext = addslashes($q->questiontext); $query->answertext = implode(',', $ids); $query->correct = array_search($correct, $ids) + 1; if (!($query->id = $DB->insert_record('game_queries', $query))) { print_error('error inserting to game_queries'); } $updrec = new StdClass(); $updrec->id = $millionaire->id; $updrec->queryid = $query->id; if (!($newid = $DB->update_record('game_millionaire', $updrec))) { print_error('error updating in game_millionaire'); } $score = $millionaire->level / 15; game_updateattempts($game, $attempt, $score, 0); game_update_queries($game, $attempt, $query, $score, ''); }
function game_showanswers_quiz($game, $context) { global $CFG; if (game_get_moodle_version() < '02.07') { $select = "quiz='{$game->quizid}' " . ' AND qqi.question=q.id' . ' AND q.hidden=0' . game_showanswers_appendselect($game); $table = '{question} q,{quiz_question_instances} qqi'; } else { $select = "qs.quizid='{$game->quizid}' " . " AND qs.questionid=q.id " . game_showanswers_appendselect($game); $table = "{question} q,{quiz_slots} qs"; } game_showanswers_question_select($game, $table, $select, 'q.*', 'category,questiontext', false, $game->course, $context); }