// Check login and get context. require_login($course, false, $cm); $context = context_module::instance($cm->id); require_capability('mod/quiz:view', $context); // Cache some other capabilities we use several times. $canattempt = has_capability('mod/quiz:attempt', $context); $canreviewmine = has_capability('mod/quiz:reviewmyattempts', $context); $canpreview = has_capability('mod/quiz:preview', $context); // Create an object to manage all the other (non-roles) access rules. $timenow = time(); $quizobj = quiz::create($cm->instance, $USER->id); $accessmanager = new quiz_access_manager($quizobj, $timenow, has_capability('mod/quiz:ignoretimelimits', $context, null, false)); $quiz = $quizobj->get_quiz(); // Log this request. $params = array('objectid' => $quiz->id, 'context' => $context); $event = \mod_quiz\event\course_module_viewed::create($params); $event->add_record_snapshot('quiz', $quiz); $event->trigger(); $completion = new completion_info($course); $completion->set_module_viewed($cm); // Initialize $PAGE, compute blocks. $PAGE->set_url('/mod/quiz/view.php', array('id' => $cm->id)); // Create view object which collects all the information the renderer will need. $viewobj = new mod_quiz_view_object(); $viewobj->accessmanager = $accessmanager; $viewobj->canreviewmine = $canreviewmine; // Get this user's attempts. $attempts = quiz_get_user_attempts($quiz->id, $USER->id, 'finished', true); $lastfinishedattempt = end($attempts); $unfinished = false; $unfinishedattemptid = null;
/** * Mark the activity completed (if required) and trigger the course_module_viewed event. * * @param stdClass $quiz quiz object * @param stdClass $course course object * @param stdClass $cm course module object * @param stdClass $context context object * @since Moodle 3.1 */ function quiz_view($quiz, $course, $cm, $context) { $params = array('objectid' => $quiz->id, 'context' => $context); $event = \mod_quiz\event\course_module_viewed::create($params); $event->add_record_snapshot('quiz', $quiz); $event->trigger(); // Completion. $completion = new completion_info($course); $completion->set_module_viewed($cm); }