From: jamiesensei Date: Fri, 2 May 2008 15:11:59 +0000 (+0000) Subject: MDL-14666 "overview report is very inefficient when view detailed marks is selected... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=92c5499a847f446803eecedf68b9e7a4c381751a;p=moodle.git MDL-14666 "overview report is very inefficient when view detailed marks is selected. There are several sql queries per row." Made a new query outside the loop for adding rows. --- diff --git a/mod/quiz/report/overview/report.php b/mod/quiz/report/overview/report.php index 358e385ce5..c3dbd9cac6 100644 --- a/mod/quiz/report/overview/report.php +++ b/mod/quiz/report/overview/report.php @@ -422,8 +422,25 @@ class quiz_report extends quiz_default_report { } if(!empty($attempts) || !empty($noattempts)) { if ($attempts) { + if($detailedmarks) { + $attemptids = array(); + foreach ($attempts as $attempt){ + $attemptids[] = $attempt->attemptuniqueid; + } + $attemptidlist = join($attemptids, ','); + $questionidlist = join($questionids, ','); + $detailledgradedsql = "SELECT qs.id as qsid, qqi.question, qs.grade, qs.event, qs.attempt, qqi.grade as qqigrade, qns.newgraded FROM " . + "{$CFG->prefix}quiz_question_instances qqi, " . + "{$CFG->prefix}question_sessions qns " . + "LEFT JOIN {$CFG->prefix}question_states qs " . + "ON qs.attempt IN ($attemptidlist) AND " . + "qns.newgraded = qs.id " . + "WHERE qqi.question = qs.question AND " . + "qqi.quiz = $quiz->id"; + $detailledgrades = get_records_sql($detailledgradedsql); + echo count($detailledgrades); + } foreach ($attempts as $attempt) { - $picture = print_user_picture($attempt->userid, $course->id, $attempt->picture, false, true); $userlink = '