var $sumofgradevariance = 0;
var $questions;
var $subquestions = array();
+ var $randomselectors = array();
function qstats($questions, $s, $sumgradesavg){
$this->s = $s;
$statsinit->covariancewithoverallgradesum = 0;
$statsinit->gradearray = array();
$statsinit->othergradesarray = array();
- $statsinit->subitems = array();
return $statsinit;
}
function get_records($fromqa, $whereqa, $usingattempts, $qaparams){
}
$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;
}
}
}
}
$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]));
+ }
+ }
}
}
}