From: jamiesensei Date: Tue, 22 Jul 2008 09:48:16 +0000 (+0000) Subject: MDL-15751 "Quiz statistics report : only list random questions once when there are... X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=051bc0e1929c7a5dfa6781e7745d9685e56330ab;p=moodle.git MDL-15751 "Quiz statistics report : only list random questions once when there are several consecutiver random questions picking from the same category with the same options to recurse into sub directories" --- diff --git a/mod/quiz/report/statistics/qstats.php b/mod/quiz/report/statistics/qstats.php index c546026974..07f5766aa2 100644 --- a/mod/quiz/report/statistics/qstats.php +++ b/mod/quiz/report/statistics/qstats.php @@ -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; } } } diff --git a/mod/quiz/report/statistics/report.php b/mod/quiz/report/statistics/report.php index e95945aa05..a86712062d 100644 --- a/mod/quiz/report/statistics/report.php +++ b/mod/quiz/report/statistics/report.php @@ -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])); + } + } } } }