$cm = get_coursemodule_from_id('url', $id, 0, false, MUST_EXIST); $url = $DB->get_record('url', array('id'=>$cm->instance), '*', MUST_EXIST); } $course = $DB->get_record('course', array('id'=>$cm->course), '*', MUST_EXIST); require_course_login($course, true, $cm); $context = context_module::instance($cm->id); require_capability('mod/url:view', $context); $params = array( 'context' => $context, 'objectid' => $url->id, 'courseid' => $course->id ); $event = \mod_url\event\course_module_viewed::create($params); $event->add_record_snapshot('url', $url); $event->trigger(); // Update 'viewed' state if required by completion system $completion = new completion_info($course); $completion->set_module_viewed($cm); $PAGE->set_url('/mod/url/view.php', array('id' => $cm->id)); // Make sure URL exists before generating output - some older sites may contain empty urls // Do not use PARAM_URL here, it is too strict and does not support general URIs! $exturl = trim($url->externalurl); if (empty($exturl) or $exturl === 'http://') { url_print_header($url, $cm, $course); url_print_heading($url, $cm, $course);
/** * Mark the activity completed (if required) and trigger the course_module_viewed event. * * @param stdClass $url url object * @param stdClass $course course object * @param stdClass $cm course module object * @param stdClass $context context object * @since Moodle 3.0 */ function url_view($url, $course, $cm, $context) { // Trigger course_module_viewed event. $params = array('context' => $context, 'objectid' => $url->id); $event = \mod_url\event\course_module_viewed::create($params); $event->add_record_snapshot('course_modules', $cm); $event->add_record_snapshot('course', $course); $event->add_record_snapshot('url', $url); $event->trigger(); // Completion. $completion = new completion_info($course); $completion->set_module_viewed($cm); }