示例#1
0
 /**
  * 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();
 }