Merge branch 'MDL-32738' of git://github.com/timhunt/moodle

This commit is contained in:
Dan Poltawski 2012-05-04 01:09:53 +08:00
commit e50de8764b

View file

@ -87,60 +87,44 @@ class mod_quiz_overdue_attempt_updater {
// This query should have all the quiz_attempts columns. // This query should have all the quiz_attempts columns.
return $DB->get_recordset_sql(" return $DB->get_recordset_sql("
SELECT quiza.id, SELECT quiza.*,
quiza.quiz, group_by_results.usertimeclose,
quiza.userid, group_by_results.usertimelimit
quiza.attempt,
quiza.uniqueid, FROM (
quiza.layout,
quiza.currentpage, SELECT iquiza.id AS attemptid,
quiza.preview, quiz.course,
quiza.state, quiz.graceperiod,
quiza.timestart,
quiza.timefinish,
quiza.timemodified,
quiza.sumgrades,
COALESCE(quo.timeclose, MAX(qgo.timeclose), quiz.timeclose) AS usertimeclose, COALESCE(quo.timeclose, MAX(qgo.timeclose), quiz.timeclose) AS usertimeclose,
COALESCE(quo.timelimit, MAX(qgo.timelimit), quiz.timelimit) AS usertimelimit COALESCE(quo.timelimit, MAX(qgo.timelimit), quiz.timelimit) AS usertimelimit
FROM {quiz_attempts} quiza FROM {quiz_attempts} iquiza
JOIN {quiz} quiz ON quiz.id = quiza.quiz JOIN {quiz} quiz ON quiz.id = iquiza.quiz
LEFT JOIN {quiz_overrides} quo ON quo.quiz = quiz.id AND quo.userid = quiza.userid LEFT JOIN {quiz_overrides} quo ON quo.quiz = quiz.id AND quo.userid = iquiza.userid
LEFT JOIN {quiz_overrides} qgo ON qgo.quiz = quiz.id LEFT JOIN {quiz_overrides} qgo ON qgo.quiz = quiz.id
LEFT JOIN {groups_members} gm ON gm.userid = quiza.userid AND gm.groupid = qgo.groupid LEFT JOIN {groups_members} gm ON gm.userid = iquiza.userid AND gm.groupid = qgo.groupid
WHERE quiza.state IN ('inprogress', 'overdue') WHERE iquiza.state IN ('inprogress', 'overdue')
AND quiza.timemodified >= :processfrom AND iquiza.timemodified >= :processfrom
AND quiza.timemodified < :processto AND iquiza.timemodified < :processto
GROUP BY quiza.id, GROUP BY iquiza.id,
quiza.quiz,
quiza.userid,
quiza.attempt,
quiza.uniqueid,
quiza.layout,
quiza.currentpage,
quiza.preview,
quiza.state,
quiza.timestart,
quiza.timefinish,
quiza.timemodified,
quiza.sumgrades,
quiz.course, quiz.course,
quiz.timeclose, quiz.timeclose,
quiz.timelimit, quiz.timelimit,
quiz.graceperiod, quiz.graceperiod,
quo.timeclose, quo.timeclose,
quo.timelimit quo.timelimit
) group_by_results
JOIN {quiz_attempts} quiza ON quiza.id = group_by_results.attemptid
HAVING (quiza.state = 'inprogress' AND ( WHERE (state = 'inprogress' AND (:timenow1 > usertimeclose OR
:timenow1 > COALESCE(quo.timeclose, MAX(qgo.timeclose), quiz.timeclose) :timenow2 > quiza.timestart + usertimelimit))
OR :timenow2 > timestart + COALESCE(quo.timelimit, MAX(qgo.timelimit), quiz.timelimit))) OR (state = 'overdue' AND (:timenow3 > graceperiod + usertimeclose OR
OR (quiza.state = 'overdue' AND ( :timenow4 > graceperiod + quiza.timestart + usertimelimit))
:timenow3 > graceperiod + COALESCE(quo.timeclose, MAX(qgo.timeclose), quiz.timeclose)
OR :timenow4 > timestart + graceperiod + COALESCE(quo.timelimit, MAX(qgo.timelimit), quiz.timelimit)))
ORDER BY quiz.course, quiza.quiz", ORDER BY course, quiz",
array('processfrom' => $processfrom, 'processto' => $processto, array('processfrom' => $processfrom, 'processto' => $processto,
'timenow1' => $processto, 'timenow2' => $processto, 'timenow1' => $processto, 'timenow2' => $processto,