public static function create_from_cm(\cm_info $cm, $course, $stopwatch = null) { $event = \mod_folder\event\course_module_viewed::create(array('context' => \context_module::instance($cm->id), 'objectid' => $cm->instance)); $event->add_record_snapshot('course_modules', $cm); $event->add_record_snapshot('course', $course); if ($stopwatch) { $event->add_record_snapshot('stopwatch', $stopwatch); } return $event; }
// Two ways to specify the module $folder = $DB->get_record('folder', array('id' => $f), '*', MUST_EXIST); $cm = get_coursemodule_from_instance('folder', $folder->id, $folder->course, true, MUST_EXIST); } else { $cm = get_coursemodule_from_id('folder', $id, 0, true, MUST_EXIST); $folder = $DB->get_record('folder', 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/folder:view', $context); if ($folder->display == FOLDER_DISPLAY_INLINE) { redirect(course_get_url($folder->course, $cm->sectionnum)); } $params = array('context' => $context, 'objectid' => $folder->id); $event = \mod_folder\event\course_module_viewed::create($params); $event->add_record_snapshot('course_modules', $cm); $event->add_record_snapshot('course', $course); $event->add_record_snapshot('folder', $folder); $event->trigger(); // Update 'viewed' state if required by completion system $completion = new completion_info($course); $completion->set_module_viewed($cm); $PAGE->set_url('/mod/folder/view.php', array('id' => $cm->id)); $PAGE->set_title($course->shortname . ': ' . $folder->name); $PAGE->set_heading($course->fullname); $PAGE->set_activity_record($folder); $output = $PAGE->get_renderer('mod_folder'); echo $output->header(); echo $output->heading(format_string($folder->name), 2); echo $output->display_folder($folder);
/** * Mark the activity completed (if required) and trigger the course_module_viewed event. * * @param stdClass $folder folder object * @param stdClass $course course object * @param stdClass $cm course module object * @param stdClass $context context object * @since Moodle 3.0 */ function folder_view($folder, $course, $cm, $context) { // Trigger course_module_viewed event. $params = array('context' => $context, 'objectid' => $folder->id); $event = \mod_folder\event\course_module_viewed::create($params); $event->add_record_snapshot('course_modules', $cm); $event->add_record_snapshot('course', $course); $event->add_record_snapshot('folder', $folder); $event->trigger(); // Completion. $completion = new completion_info($course); $completion->set_module_viewed($cm); }