/**
  * This test is executed by {@link test_reporting_queries()}.
  */
 protected function dotest_sum_usage_marks_subquery()
 {
     global $DB;
     $totals = $DB->get_records_sql_menu("SELECT qu.id, ({$this->dm->sum_usage_marks_subquery('qu.id')}) AS totalmark\n                  FROM {question_usages} qu\n                 WHERE qu.id IN ({$this->usageids[0]}, {$this->usageids[1]})");
     $this->assertNull($totals[$this->usageids[0]]);
     // Since a question requires grading.
     $this->assertNotNull($totals[$this->usageids[1]]);
     // Grrr! PHP null == 0 makes this hard.
     $this->assertEquals(0, $totals[$this->usageids[1]]);
 }
Example #2
0
function quiz_update_all_attempt_sumgrades($quiz)
{
    global $DB;
    $dm = new question_engine_data_mapper();
    $timenow = time();
    $sql = "UPDATE {quiz_attempts}\n            SET\n                timemodified = :timenow,\n                sumgrades = (\n                    {$dm->sum_usage_marks_subquery('uniqueid')}\n                )\n            WHERE quiz = :quizid AND timefinish <> 0";
    $DB->execute($sql, array('timenow' => $timenow, 'quizid' => $quiz->id));
}
Example #3
0
/**
 * Update the sumgrades field of the attempts at a quiz.
 *
 * @param object $quiz a quiz.
 */
function quiz_update_all_attempt_sumgrades($quiz) {
    global $DB;
    $dm = new question_engine_data_mapper();
    $timenow = time();

    $sql = "UPDATE {quiz_attempts}
            SET
                timemodified = :timenow,
                sumgrades = (
                    {$dm->sum_usage_marks_subquery('uniqueid')}
                )
            WHERE quiz = :quizid AND state = :finishedstate";
    $DB->execute($sql, array('timenow' => $timenow, 'quizid' => $quiz->id,
            'finishedstate' => quiz_attempt::FINISHED));
}
/**
 * Update the sumgrades field of the results in an offline quiz.
 *
 * @param object $offlinequiz The offlinequiz.
 */
function offlinequiz_update_all_attempt_sumgrades($offlinequiz)
{
    global $DB;
    $dm = new question_engine_data_mapper();
    $timenow = time();
    $sql = "UPDATE {offlinequiz_results}\n               SET timemodified = :timenow,\n                   sumgrades = (\n                                {$dm->sum_usage_marks_subquery('usageid')}\n                               )\n             WHERE offlinequizid = :offlinequizid\n               AND timefinish <> 0";
    $DB->execute($sql, array('timenow' => $timenow, 'offlinequizid' => $offlinequiz->id));
}