-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathaccess_context.php
110 lines (50 loc) · 1.74 KB
/
access_context.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
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<?php
$userid = optional_param('id', 0, PARAM_INT); // this is required
$courseid = optional_param('courseid', SITEID, PARAM_INT); // this are required
if (!$userid) {
$userid = $USER->id ;
}
$sitecontext = get_context_instance(CONTEXT_SYSTEM);
$usercontext = get_context_instance(CONTEXT_USER, $userid);
if (!$usercontext) {
error("User ID is incorrect");
}
if ($courseid) {
if (! $course = get_record('course', 'id', $courseid)) {
error("Course ID is incorrect");
}
if (! $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id)) {
error("Context ID is incorrect");
}
$context = $coursecontext;
}
if (has_capability('moodle/legacy:guest', $sitecontext, NULL, false)) {
error("You are logged in as Guest.");
}
// ACCESS CONTROL
$access_isgod = 0 ;
$access_isuser = 0 ;
$access_isteacher = 0 ;
$access_istutor = 0 ;
if (has_capability('moodle/site:doanything', $sitecontext)) { // are we god ?
$access_isgod = 1 ;
}
if ($userid == $USER->id) { // are we the user ourselves ?
$access_isuser = 1;
}
if(isset($coursecontext)){
if (has_capability('block/ilp:viewclass',$coursecontext)) { // are we the teacher on the course ?
$access_isteacher = 1;
}
}
if (has_capability('block/ilp:view',$usercontext)) { // are we the personal tutor ?
$access_istutor = 1;
$context = $usercontext;
}
if (!($access_isgod or $access_isteacher or $access_istutor)) {
error("insufficient access test");
}
if(!isset($context)){
$context = $sitecontext;
}
?>