protected function load_extra_data() { if (count($this->rawdata) === 0) { return; } $qubaids = $this->get_qubaids_condition(); $dm = new question_engine_data_mapper(); $this->questionusagesbyactivity = $dm->load_questions_usages_by_activity($qubaids); // Insert an extra field in attempt data and extra rows where necessary. $newrawdata = array(); foreach ($this->rawdata as $attempt) { $maxtriesinanyslot = 1; foreach ($this->questionusagesbyactivity[$attempt->usageid]->get_slots() as $slot) { $tries = $this->get_no_of_tries($attempt, $slot); $maxtriesinanyslot = max($maxtriesinanyslot, $tries); } for ($try = 1; $try <= $maxtriesinanyslot; $try++) { $newtablerow = clone $attempt; $newtablerow->lasttryforallparts = $try == $maxtriesinanyslot; if ($try !== $maxtriesinanyslot) { $newtablerow->state = quiz_attempt::IN_PROGRESS; } $newtablerow->try = $try; $newrawdata[] = $newtablerow; if ($this->options->whichtries == question_attempt::FIRST_TRY) { break; } } } $this->rawdata = $newrawdata; }