forked from openequella/moodle-mod_openEQUELLA
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ltilaunch.php
90 lines (76 loc) · 3.38 KB
/
ltilaunch.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
<?php
// This file is part of the EQUELLA module - http://git.io/vUuof
//
// Moodle is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// Moodle is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with Moodle. If not, see <http://www.gnu.org/licenses/>.
require_once ('../../config.php');
require_once ('lib.php');
require_once ('locallib.php');
require_once ($CFG->libdir . '/completionlib.php');
require_login();
$action = optional_param('action', 'view', PARAM_ACTION);
if ($action == 'view') {
$cmid = required_param('cmid', PARAM_INT);
$cm = get_coursemodule_from_id('equella', $cmid, 0, false, MUST_EXIST);
$course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST);
$equella = $DB->get_record('equella', array('id' => $cm->instance), '*', MUST_EXIST);
$context = context_module::instance($cm->id);
$PAGE->set_context($context);
$PAGE->set_pagelayout('embedded');
require_capability('mod/equella:view', $context);
$equella->cmid = $cmid;
$equella->course = $course->id;
$params = equella_lti_params($equella, $course);
if (class_exists('mod_equella\\event\\course_module_viewed')) {
$eventparams = array(
'context' => $context,
'objectid' => $equella->id
);
$event = \mod_equella\event\course_module_viewed::create($eventparams);
$event->add_record_snapshot('course_modules', $cm);
$event->add_record_snapshot('course', $course);
$event->add_record_snapshot('equella', $equella);
$event->trigger();
} else {
add_to_log($course->id, "equella", "view equella resource", "view.php?id=$cm->id", $equella->id, $cm->id);
}
// Update 'viewed' state if required by completion system
$completion = new completion_info($course);
$completion->set_module_viewed($cm);
echo '<html><body>';
echo equella_lti_launch_form($equella->url, $params);
echo '</body></html>';
} elseif ($action == 'select') {
$args = new stdClass();
$args->course = required_param('course', PARAM_INT);
$args->section = required_param('section', PARAM_INT);
$course = $DB->get_record('course', array('id' => $args->course), '*', MUST_EXIST);
$context = context_course::instance($args->course);
$PAGE->set_context($context);
require_capability('moodle/course:manageactivities', $context);
$url = equella_build_integration_url($args, false);
$extraparams = $url->params();
if ($CFG->equella_action == EQUELLA_ACTION_STRUCTURED) {
$contents = equella_get_course_contents($course->id, $args->section);
$json = json_encode($contents);
$extraparams['structure'] = $json;
}
$equella = new stdClass();
$equella->id = 0;
$equella->course = $args->course;
$equella->url = $CFG->equella_url;
$params = equella_lti_params($equella, $course, $extraparams);
echo '<html><body>';
echo equella_lti_launch_form($equella->url, $params);
echo '</body></html>';
}