]> git.mjollnir.org Git - moodle.git/commitdiff
MDL-15751 "Quiz statistics report : only list random questions once when there are...
authorjamiesensei <jamiesensei>
Tue, 22 Jul 2008 09:48:16 +0000 (09:48 +0000)
committerjamiesensei <jamiesensei>
Tue, 22 Jul 2008 09:48:16 +0000 (09:48 +0000)
mod/quiz/report/statistics/qstats.php
mod/quiz/report/statistics/report.php

index c5460269744fedc965a35a481ed39544690363d3..07f5766aa2a94e21bb57a1b4d3a63f7c0a170391 100644 (file)
@@ -8,6 +8,7 @@ class qstats{
     var $sumofgradevariance = 0;
     var $questions;
     var $subquestions = array();
+    var $randomselectors = array();
     
     function qstats($questions, $s, $sumgradesavg){
         $this->s = $s;
@@ -29,7 +30,6 @@ class qstats{
         $statsinit->covariancewithoverallgradesum = 0;
         $statsinit->gradearray = array();
         $statsinit->othergradesarray = array();
-        $statsinit->subitems = array();
         return $statsinit;
     }
     function get_records($fromqa, $whereqa, $usingattempts, $qaparams){
@@ -128,7 +128,11 @@ class qstats{
                     }
                     $this->_initial_states_walker($state, $subquestionstats[$itemid], false);
                     $subquestionstats[$itemid]->usedin[$state->question] = $state->question;
-                    $this->questions[$state->question]->_stats->subitems[$itemid] = $itemid;
+                    $randomselectorstring = $this->questions[$state->question]->category.'/'.$this->questions[$state->question]->questiontext;
+                    if (!isset($this->randomselectors[$randomselectorstring])){
+                        $this->randomselectors[$randomselectorstring] = array();
+                    }
+                    $this->randomselectors[$randomselectorstring][] = $itemid;
                 }
             }
         }
index e95945aa0505681c6f6e1a658075c0a0cdc1c318..a86712062db59e48f825eedbac2859daa6e64d42 100644 (file)
@@ -272,11 +272,22 @@ class quiz_statistics_report extends quiz_default_report {
         }
         $table->setup($quiz, $cm->id, $reporturl, $s);
         if (isset($qstats)){
-            foreach ($qstats->questions as $question){
+            while ($question = array_shift($qstats->questions)){
                 $table->add_data_keyed($table->format_row($question));
-                ksort($question->_stats->subitems);
-                foreach ($question->_stats->subitems as $itemid){
-                    $table->add_data_keyed($table->format_row($qstats->subquestions[$itemid]));
+                if ($question->qtype == 'random'){
+                    $randomselectorstring = $question->category.'/'.$question->questiontext;
+                    if ($qstats->questions){
+                        $nextquestion = current($qstats->questions);
+                        $nextrandomselectorstring = $nextquestion->category.'/'.$nextquestion->questiontext;
+                        if ($nextquestion->qtype == 'random' && $randomselectorstring == $nextrandomselectorstring){
+                            continue;//next loop iteration
+                        }
+                    }
+                    if (isset($qstats->randomselectors[$randomselectorstring])){
+                        foreach ($qstats->randomselectors[$randomselectorstring] as $itemid){
+                            $table->add_data_keyed($table->format_row($qstats->subquestions[$itemid]));
+                        }
+                    }
                 }
             }
         }