troodle-expcontent/view_content.php
Kumi 9066e451c3
feat: add completion tracking to view_content.php
Integrated course module completion tracking to ensure activities are marked complete for users. This leverages the existing completionlib.php library to update the completion state. This enhancement ensures accurate tracking of user progress.
2024-09-23 10:07:31 +02:00

74 lines
No EOL
2.2 KiB
PHP

<?php
require_once(dirname(dirname(dirname(__FILE__))) . '/config.php');
require_once(dirname(__FILE__) . '/lib.php');
require_once($CFG->libdir . '/completionlib.php');
$id = required_param('id', PARAM_INT); // Course Module ID
$cm = get_coursemodule_from_id('exp360', $id, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$exp360 = $DB->get_record('exp360', array('id' => $cm->instance), '*', MUST_EXIST);
$content_id = $exp360->content_id;
// Ensure completion is enabled for the course module.
$completion = new completion_info($course);
if ($completion->is_enabled($cm)) {
// Mark the activity as completed for this user.
$completion->update_state($cm, COMPLETION_COMPLETE, $userId);
}
?>
<!DOCTYPE html>
<html>
<head>
<style>
html,
body {
overflow: hidden;
}
</style>
</head>
<body>
<script src='https://cdn.exp360.com/embed/js/exp360-embed-3.8.59.js?d=d667dff2-97bb-437e-85d2-f7550d87a4d0&p=web'></script>
<script>
function startContent() {
exp360.openContent('<?php echo $content_id; ?>', {
popup: false,
autorotate: true,
autorotate_speed: 5,
autorotate_delay: 2500,
teleport_animation: false
});
}
var currentUrl = window.location.href;
var url = new URL(currentUrl);
var searchParams = new URLSearchParams(url.search);
var params = {};
searchParams.forEach((value, key) => {
params[key] = value;
});
function initialize() {
var newDiv = document.createElement('div');
newDiv.setAttribute('data-exp360-type', 'player');
newDiv.setAttribute('data-exp360-id', '<?php echo $content_id; ?>');
var windowWidth = document.documentElement.clientWidth;
var windowHeight = document.documentElement.clientHeight;
newDiv.setAttribute('data-exp360-params', `width=${windowWidth};height=${windowHeight};`);
document.body.appendChild(newDiv);
}
window.onload = initialize;
</script>
</body>
</html>