示例#1
0
 /**
  * Return questions information for a given attempt.
  *
  * @param  quiz_attempt  $attemptobj  the quiz attempt object
  * @param  bool  $review  whether if we are in review mode or not
  * @param  mixed  $page  string 'all' or integer page number
  * @return array array of questions including data
  */
 private static function get_attempt_questions_data(quiz_attempt $attemptobj, $review, $page = 'all')
 {
     global $PAGE;
     $questions = array();
     $contextid = $attemptobj->get_quizobj()->get_context()->id;
     $displayoptions = $attemptobj->get_display_options($review);
     $renderer = $PAGE->get_renderer('mod_quiz');
     foreach ($attemptobj->get_slots($page) as $slot) {
         $question = array('slot' => $slot, 'type' => $attemptobj->get_question_type_name($slot), 'page' => $attemptobj->get_question_page($slot), 'flagged' => $attemptobj->is_question_flagged($slot), 'html' => $attemptobj->render_question($slot, $review, $renderer) . $PAGE->requires->get_end_code());
         if ($attemptobj->is_real_question($slot)) {
             $question['number'] = $attemptobj->get_question_number($slot);
             $question['state'] = (string) $attemptobj->get_question_state($slot);
             $question['status'] = $attemptobj->get_question_status($slot, $displayoptions->correctness);
         }
         if ($displayoptions->marks >= question_display_options::MAX_ONLY) {
             $question['maxmark'] = $attemptobj->get_question_attempt($slot)->get_max_mark();
         }
         if ($displayoptions->marks >= question_display_options::MARK_AND_MAX) {
             $question['mark'] = $attemptobj->get_question_mark($slot);
         }
         $questions[] = $question;
     }
     return $questions;
 }
示例#2
0
 /**
  * Get the buttons and section headings to go in the quiz navigation block.
  * @return renderable[] the buttons, possibly interleaved with section headings.
  */
 public function get_question_buttons()
 {
     $buttons = array();
     foreach ($this->attemptobj->get_slots() as $slot) {
         if ($heading = $this->attemptobj->get_heading_before_slot($slot)) {
             $buttons[] = new quiz_nav_section_heading(format_string($heading));
         }
         $qa = $this->attemptobj->get_question_attempt($slot);
         $showcorrectness = $this->options->correctness && $qa->has_marks();
         $button = new quiz_nav_question_button();
         $button->id = 'quiznavbutton' . $slot;
         $button->number = $this->attemptobj->get_question_number($slot);
         $button->stateclass = $qa->get_state_class($showcorrectness);
         $button->navmethod = $this->attemptobj->get_navigation_method();
         if (!$showcorrectness && $button->stateclass == 'notanswered') {
             $button->stateclass = 'complete';
         }
         $button->statestring = $this->get_state_string($qa, $showcorrectness);
         $button->page = $this->attemptobj->get_question_page($slot);
         $button->currentpage = $this->showall || $button->page == $this->page;
         $button->flagged = $qa->is_flagged();
         $button->url = $this->get_question_url($slot);
         if ($this->attemptobj->is_blocked_by_previous_question($slot)) {
             $button->url = null;
             $button->stateclass = 'blocked';
             $button->statestring = get_string('questiondependsonprevious', 'quiz');
         }
         $buttons[] = $button;
     }
     return $buttons;
 }
 public function get_question_buttons()
 {
     $buttons = array();
     foreach ($this->attemptobj->get_slots() as $slot) {
         $qa = $this->attemptobj->get_question_attempt($slot);
         $showcorrectness = $this->options->correctness && $qa->has_marks();
         $button = new quiz_nav_question_button();
         $button->id = 'quiznavbutton' . $slot;
         $button->number = $this->attemptobj->get_question_number($slot);
         $button->stateclass = $qa->get_state_class($showcorrectness);
         $button->navmethod = $this->attemptobj->get_navigation_method();
         if (!$showcorrectness && $button->stateclass == 'notanswered') {
             $button->stateclass = 'complete';
         }
         $button->statestring = $this->get_state_string($qa, $showcorrectness);
         $button->currentpage = $this->attemptobj->get_question_page($slot) == $this->page;
         $button->flagged = $qa->is_flagged();
         $button->url = $this->get_question_url($slot);
         $buttons[] = $button;
     }
     return $buttons;
 }