Пример #1
0
/**
 * Mark the activity completed (if required) and trigger the course_module_viewed event.
 *
 * @param  stdClass $imscp   imscp object
 * @param  stdClass $course     course object
 * @param  stdClass $cm         course module object
 * @param  stdClass $context    context object
 * @since Moodle 3.0
 */
function imscp_view($imscp, $course, $cm, $context)
{
    // Trigger course_module_viewed event.
    $params = array('context' => $context, 'objectid' => $imscp->id);
    $event = \mod_imscp\event\course_module_viewed::create($params);
    $event->add_record_snapshot('course_modules', $cm);
    $event->add_record_snapshot('course', $course);
    $event->add_record_snapshot('imscp', $imscp);
    $event->trigger();
    // Completion.
    $completion = new completion_info($course);
    $completion->set_module_viewed($cm);
}
Пример #2
0
$i = optional_param('i', 0, PARAM_INT);
// IMS CP instance id.
if ($i) {
    // Two ways to specify the module.
    $imscp = $DB->get_record('imscp', array('id' => $i), '*', MUST_EXIST);
    $cm = get_coursemodule_from_instance('imscp', $imscp->id, $imscp->course, false, MUST_EXIST);
} else {
    $cm = get_coursemodule_from_id('imscp', $id, 0, false, MUST_EXIST);
    $imscp = $DB->get_record('imscp', 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/imscp:view', $context);
$params = array('context' => $context, 'objectid' => $imscp->id);
$event = \mod_imscp\event\course_module_viewed::create($params);
$event->add_record_snapshot('imscp', $imscp);
$event->trigger();
// Update 'viewed' state if required by completion system.
$completion = new completion_info($course);
$completion->set_module_viewed($cm);
$PAGE->set_url('/mod/imscp/view.php', array('id' => $cm->id));
$PAGE->requires->js('/mod/imscp/dummyapi.js', true);
$PAGE->requires->string_for_js('navigation', 'imscp');
$PAGE->requires->string_for_js('toc', 'imscp');
$PAGE->requires->string_for_js('hide', 'moodle');
$PAGE->requires->string_for_js('show', 'moodle');
// TODO: find some better way to disable blocks and minimise footer - pagetype just for this does not seem like a good solution.
// $PAGE->set_pagelayout('maxcontent'); ?
$PAGE->set_title($course->shortname . ': ' . $imscp->name);
$PAGE->set_heading($course->fullname);