/** * 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; }
/** * Renders the review question pop-up. * * @param quiz_attempt $attemptobj an instance of quiz_attempt. * @param string $message Why the review is not allowed. * @return string html to output. */ public function review_question_not_allowed(quiz_attempt $attemptobj, $message) { $output = ''; $output .= $this->header(); $output .= $this->heading(format_string($attemptobj->get_quiz_name(), true, array("context" => $attemptobj->get_quizobj()->get_context()))); $output .= $this->notification($message); $output .= $this->close_window_button(); $output .= $this->footer(); return $output; }