* @package quiz */ require_once '../../config.php'; require_once 'locallib.php'; $attemptid = required_param('attempt', PARAM_INT); // attempt id $questionid = required_param('question', PARAM_INT); // question id $attemptobj = new quiz_attempt($attemptid); /// Can only grade finished attempts. if (!$attemptobj->is_finished()) { print_error('attemptclosed', 'quiz'); } /// Check login and permissions. require_login($attemptobj->get_courseid(), false, $attemptobj->get_cm()); $attemptobj->require_capability('mod/quiz:grade'); /// Load the questions and states. $questionids = array($questionid); $attemptobj->load_questions($questionids); $attemptobj->load_question_states($questionids); /// Log this action. add_to_log($attemptobj->get_courseid(), 'quiz', 'manualgrade', 'comment.php?attempt=' . $attemptobj->get_attemptid() . '&question=' . $questionid, $attemptobj->get_quizid(), $attemptobj->get_cmid()); /// Print the page header print_header(); print_heading(format_string($attemptobj->get_question($questionid)->name)); /// Process any data that was submitted. if ($data = data_submitted() and confirm_sesskey()) { $error = $attemptobj->process_comment($questionid, $data->response['comment'], $data->response['grade']); /// If success, notify and print a close button. if (!is_string($error)) { notify(get_string('changessaved'), 'notifysuccess');
$nexturl = $attemptobj->attempt_url(0, $nextpage); } /// We treat automatically closed attempts just like normally closed attempts if ($timeup) { $finishattempt = 1; } /// Check login. require_login($attemptobj->get_courseid(), false, $attemptobj->get_cm()); confirm_sesskey(); /// Check that this attempt belongs to this user. if ($attemptobj->get_userid() != $USER->id) { quiz_error($attemptobj->get_quiz(), 'notyourattempt'); } /// Check capabilites. if (!$attemptobj->is_preview_user()) { $attemptobj->require_capability('mod/quiz:attempt'); } /// If the attempt is already closed, send them to the review page. if ($attemptobj->is_finished()) { quiz_error($attemptobj->get_quiz(), 'attemptalreadyclosed'); } /// Don't log - we will end with a redirect to a page that is logged. /// Get the list of questions needed by this page. if (!empty($submittedquestionids)) { $submittedquestionids = explode(',', $submittedquestionids); } else { $submittedquestionids = array(); } if ($finishattempt) { $questionids = $attemptobj->get_question_ids(); } else {