コード例 #1
0
 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;
 }