Exemple #1
0
function game_snakes_check_questions($id, $game, $attempt, $snakes, $context)
{
    global $QTYPES, $CFG, $DB;
    $responses = data_submitted();
    if ($responses->queryid != $snakes->queryid) {
        game_snakes_play($id, $game, $attempt, $snakes, $context);
        return;
    }
    $questionlist = $DB->get_field('game_queries', 'questionid', array('id' => $responses->queryid));
    $questions = game_sudoku_getquestions($questionlist);
    $correct = false;
    $query = '';
    foreach ($questions as $question) {
        $query = new stdClass();
        $query->id = $snakes->queryid;
        $grade = game_grade_responses($question, $responses, 100, $answertext);
        if ($grade < 50) {
            //wrong answer
            game_update_queries($game, $attempt, $query, 0, $answertext);
            continue;
        }
        //correct answer
        $correct = true;
        game_update_queries($game, $attempt, $query, 1, '');
    }
    //set the grade of the whole game
    game_snakes_position($id, $game, $attempt, $snakes, $correct, $query, $context);
}
function game_sudoku_check_questions($id, $game, $attempt, $sudoku, $finishattempt, $course)
{
    global $QTYPES, $DB;
    $responses = data_submitted();
    $offsetquestions = game_sudoku_compute_offsetquestions($game->sourcemodule, $attempt, $numbers, $correctquestions);
    $questionlist = game_sudoku_getquestionlist($offsetquestions);
    $questions = game_sudoku_getquestions($questionlist);
    foreach ($questions as $question) {
        $query = new stdClass();
        $select = "attemptid={$attempt->id}";
        $select .= " AND questionid={$question->id}";
        if (($query->id = $DB->get_field_select('game_queries', 'id', $select)) == 0) {
            die("problem game_sudoku_check_questions (select={$select})");
            continue;
        }
        $name = "resp{$question->id}_";
        if (!isset($responses->{$name})) {
            continue;
        }
        $grade = game_grade_responses($question, $responses, 100, $answertext);
        if ($grade < 50) {
            //wrong answer
            game_update_queries($game, $attempt, $query, $grade / 100, $answertext);
            continue;
        }
        //correct answer
        game_update_queries($game, $attempt, $query, 1, $answertext);
    }
    game_sudoku_check_last($id, $game, $attempt, $sudoku, $finishattempt, $course);
}
function game_bookquiz_check_questions($id, $game, $attempt, $bookquiz)
{
    global $QTYPES, $CFG, $USER, $DB;
    $responses = data_submitted();
    $questionlist = $responses->questionids;
    $questions = game_sudoku_getquestions($questionlist);
    $scorequestion = 0;
    $scoreattempt = 0;
    foreach ($questions as $question) {
        $grade = game_grade_responses($question, $responses, 100, $answertext);
        if ($grade < 50) {
            continue;
        }
        //found one correct answer
        $chapterid = $responses->chapterid;
        if (!$DB->get_field('game_bookquiz_chapters', 'id', array('attemptid' => $attempt->id, 'chapterid' => $chapterid))) {
            unset($newrec);
            $newrec->attemptid = $attempt->id;
            $newrec->chapterid = $chapterid;
            if (!$DB->insert_record('game_bookquiz_chapters', $newrec, false)) {
                print_object($newrec);
                print_error("Can't insert to table game_bookquiz_chapters");
            }
        }
        //Have to go to next page.
        $bookquiz->lastchapterid = $responses->nextchapterid;
        if (!$DB->set_field('game_bookquiz', 'lastchapterid', $bookquiz->lastchapterid, array('id' => $bookquiz->id))) {
            print_error("Can't compute next chapter");
        }
        $scorequestion = 1;
        $scoreattempt = $_POST['scoreattempt'];
        break;
    }
    $query->id = 0;
    $query->attemptid = $attempt->id;
    $query->gameid = $game->id;
    $query->userid = $USER->id;
    $query->sourcemodule = 'question';
    $query->questionid = $question->id;
    $query->glossaryentryid = 0;
    $query->questiontext = $question->questiontext;
    $query->timelastattempt = time();
    game_update_queries($game, $attempt, $query, $scorequestion, '');
    game_updateattempts($game, $attempt, $scoreattempt, 0);
    game_bookquiz_continue($id, $game, $attempt, $bookquiz);
}