/** * Static function to create a new quiz_attempt object given an attemptid. * * @param integer $attemptid the attempt id. * @return quiz_attempt the new quiz_attempt object */ public static function create($attemptid) { global $DB; if (!($attempt = quiz_load_attempt($attemptid))) { throw new moodle_exception('invalidattemptid', 'quiz'); } if (!($quiz = $DB->get_record('quiz', array('id' => $attempt->quiz)))) { throw new moodle_exception('invalidquizid', 'quiz'); } if (!($course = $DB->get_record('course', array('id' => $quiz->course)))) { throw new moodle_exception('invalidcoursemodule'); } if (!($cm = get_coursemodule_from_instance('quiz', $quiz->id, $course->id))) { throw new moodle_exception('invalidcoursemodule'); } // Update quiz with override information $quiz = quiz_update_effective_access($quiz, $attempt->userid); return new quiz_attempt($attempt, $quiz, $cm, $course); }
/** * Constructor from just an attemptid. * * @param integer $attemptid the id of the attempt to load. We automatically load the * associated quiz, course, etc. */ function __construct($attemptid) { global $DB; if (!($this->attempt = quiz_load_attempt($attemptid))) { throw new moodle_exception('invalidattemptid', 'quiz'); } if (!($quiz = $DB->get_record('quiz', array('id' => $this->attempt->quiz)))) { throw new moodle_exception('invalidquizid', 'quiz'); } if (!($course = $DB->get_record('course', array('id' => $quiz->course)))) { throw new moodle_exception('invalidcoursemodule'); } if (!($cm = get_coursemodule_from_instance('quiz', $quiz->id, $course->id))) { throw new moodle_exception('invalidcoursemodule'); } parent::__construct($quiz, $cm, $course); $this->preload_questions(); $this->preload_question_states(); }