/** * 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]]); }
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)); }
/** * 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)); }