mirror of
https://github.com/moodle/moodle.git
synced 2025-08-06 01:16:44 +02:00
MDL-52832 quiz: sql fixing couple of incorrect group by uses
This commit is contained in:
parent
7416d00ad2
commit
496e80e1f5
1 changed files with 10 additions and 6 deletions
|
@ -1222,8 +1222,7 @@ function quiz_get_user_timeclose($courseid) {
|
||||||
if (has_capability('moodle/course:update', context_course::instance($courseid))) {
|
if (has_capability('moodle/course:update', context_course::instance($courseid))) {
|
||||||
$sql = "SELECT quiz.id, quiz.timeclose AS usertimeclose, COALESCE(quiz.timelimit, 0) AS usertimelimit
|
$sql = "SELECT quiz.id, quiz.timeclose AS usertimeclose, COALESCE(quiz.timelimit, 0) AS usertimelimit
|
||||||
FROM {quiz} quiz
|
FROM {quiz} quiz
|
||||||
WHERE quiz.course = :courseid
|
WHERE quiz.course = :courseid";
|
||||||
GROUP BY quiz.id";
|
|
||||||
|
|
||||||
$results = $DB->get_records_sql($sql, array('courseid' => $courseid));
|
$results = $DB->get_records_sql($sql, array('courseid' => $courseid));
|
||||||
return $results;
|
return $results;
|
||||||
|
@ -1232,9 +1231,13 @@ function quiz_get_user_timeclose($courseid) {
|
||||||
// The multiple qgo JOINS are necessary because we want timeclose/timelimit = 0 (unlimited) to supercede
|
// The multiple qgo JOINS are necessary because we want timeclose/timelimit = 0 (unlimited) to supercede
|
||||||
// any other group override.
|
// any other group override.
|
||||||
|
|
||||||
$sql = "SELECT quiz.id,
|
$sql = "SELECT q.id,
|
||||||
COALESCE(MAX(quo.timeclose), MAX(qgo1.timeclose), MAX(qgo2.timeclose), quiz.timeclose, 0) AS usertimeclose,
|
COALESCE(v.oneclose, v.twoclose, v.threeclose, q.timeclose, 0) AS usertimeclose,
|
||||||
COALESCE(MAX(quo.timelimit), MAX(qgo3.timelimit), MAX(qgo4.timelimit), quiz.timelimit, 0) AS usertimelimit
|
COALESCE(v.onelimit, v.twolimit, v.threelimit, q.timelimit, 0) AS usertimelimit
|
||||||
|
FROM (
|
||||||
|
SELECT quiz.id AS quizid,
|
||||||
|
MAX(quo.timeclose) AS oneclose, MAX(qgo1.timeclose) AS twoclose, MAX(qgo2.timeclose) AS threeclose,
|
||||||
|
MAX(quo.timelimit) AS onelimit, MAX(qgo3.timelimit) AS twolimit, MAX(qgo4.timelimit) AS threelimit
|
||||||
FROM {quiz} quiz
|
FROM {quiz} quiz
|
||||||
LEFT JOIN {quiz_overrides} quo ON quo.quiz = quiz.id
|
LEFT JOIN {quiz_overrides} quo ON quo.quiz = quiz.id
|
||||||
LEFT JOIN {groups_members} gm ON gm.userid = quo.userid
|
LEFT JOIN {groups_members} gm ON gm.userid = quo.userid
|
||||||
|
@ -1248,7 +1251,8 @@ function quiz_get_user_timeclose($courseid) {
|
||||||
AND qgo4.groupid = gm.groupid
|
AND qgo4.groupid = gm.groupid
|
||||||
WHERE quiz.course = :courseid
|
WHERE quiz.course = :courseid
|
||||||
AND ((quo.userid = :userid) OR ((gm.userid IS NULL) AND (quo.userid IS NULL)))
|
AND ((quo.userid = :userid) OR ((gm.userid IS NULL) AND (quo.userid IS NULL)))
|
||||||
GROUP BY quiz.id";
|
GROUP BY quiz.id) v
|
||||||
|
JOIN {quiz} q ON q.id = v.quizid";
|
||||||
|
|
||||||
$results = $DB->get_records_sql($sql, array('courseid' => $courseid, 'userid' => $USER->id));
|
$results = $DB->get_records_sql($sql, array('courseid' => $courseid, 'userid' => $USER->id));
|
||||||
return $results;
|
return $results;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue