From: tjhunt <tjhunt>
Date: Fri, 18 Sep 2009 13:42:23 +0000 (+0000)
Subject: quiz reports: MDL-20316 per-question averages not shown with the quiz only allows... 
X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=1dc12a647554269a15fcb4a4353a0841f5e6e39f;p=moodle.git

quiz reports: MDL-20316 per-question averages not shown with the quiz only allows one attempt.

Problem found thanks to OU testing. Fix thanks to Mahmoud Kassaie.
---

diff --git a/mod/quiz/report/overview/overview_table.php b/mod/quiz/report/overview/overview_table.php
index 7917f10edc..cf3420c02b 100644
--- a/mod/quiz/report/overview/overview_table.php
+++ b/mod/quiz/report/overview/overview_table.php
@@ -50,7 +50,7 @@ class quiz_report_overview_table extends table_sql {
                 $groupaveragerow = array($namekey => get_string('groupavg', 'grades'),
                         'sumgrades' => quiz_format_grade($this->quiz, $groupaverage->grade),
                         'feedbacktext'=> strip_tags(quiz_report_feedback_for_grade($groupaverage->grade, $this->quiz->id)));
-                if($this->detailedmarks && $this->qmsubselect) {
+                if($this->detailedmarks && ($this->qmsubselect || $this->quiz->attempts == 1)) {
                     $avggradebyq = quiz_get_average_grade_for_questions($this->quiz, $this->groupstudents);
                     $groupaveragerow += quiz_format_average_grade_for_questions($avggradebyq, $this->questions, $this->quiz, $this->is_downloading());
                 }
@@ -62,7 +62,7 @@ class quiz_report_overview_table extends table_sql {
             $overallaveragerow = array($namekey => get_string('overallaverage', 'grades'),
                         'sumgrades' => quiz_format_grade($this->quiz, $overallaverage->grade),
                         'feedbacktext'=> strip_tags(quiz_report_feedback_for_grade($overallaverage->grade, $this->quiz->id)));
-            if($this->detailedmarks && $this->qmsubselect) {
+            if($this->detailedmarks && ($this->qmsubselect || $this->quiz->attempts == 1)) {
                 $avggradebyq = quiz_get_average_grade_for_questions($this->quiz, $this->students);
                 $overallaveragerow += quiz_format_average_grade_for_questions($avggradebyq, $this->questions, $this->quiz, $this->is_downloading());
             }
diff --git a/mod/quiz/report/reportlib.php b/mod/quiz/report/reportlib.php
index 424158788f..a0b47aefb8 100644
--- a/mod/quiz/report/reportlib.php
+++ b/mod/quiz/report/reportlib.php
@@ -123,7 +123,7 @@ function quiz_get_average_grade_for_questions($quiz, $userids){
                         LEFT JOIN {question_sessions} qns ON (qns.attemptid = qa.uniqueid)
                         LEFT JOIN {question_states} qs ON (qns.newgraded = qs.id AND qs.event IN (".QUESTION_EVENTS_GRADED."))
                         WHERE " .
-                        "($qmfilter) AND " .
+                        ($qmfilter?$qmfilter.' AND ':'') .
                         "qa.userid $usql AND " .
                         "qa.quiz = ? ".
                         "GROUP BY qns.questionid";