Proyectos de Subversion Moodle

Rev

Rev 1 | Mostrar el archivo completo | | | Autoría | Ultima modificación | Ver Log |

Rev 1 Rev 1441
Línea 34... Línea 34...
34
 
34
 
35
require_sesskey();
35
require_sesskey();
Línea 36... Línea 36...
36
$course = $DB->get_record('course', array('id'=>$id), '*', MUST_EXIST);
36
$course = $DB->get_record('course', array('id'=>$id), '*', MUST_EXIST);
37
 
-
 
38
// User must be logged in.
-
 
39
 
-
 
40
$systemcontext = context_system::instance();
-
 
41
$coursecontext = context_course::instance($course->id);
37
 
Línea 42... Línea -...
42
 
-
 
43
require_login();
-
 
44
 
-
 
45
if (has_capability('moodle/user:loginas', $systemcontext)) {
-
 
46
    if (is_siteadmin($userid)) {
-
 
47
        throw new \moodle_exception('nologinas');
-
 
48
    }
-
 
49
    $context = $systemcontext;
-
 
50
    $PAGE->set_context($context);
-
 
51
} else {
-
 
52
    require_login($course);
-
 
53
    require_capability('moodle/user:loginas', $coursecontext);
-
 
54
    if (is_siteadmin($userid)) {
38
// User must be logged in.
55
        throw new \moodle_exception('nologinas');
-
 
56
    }
-
 
57
    if (!is_enrolled($coursecontext, $userid)) {
-
 
58
        throw new \moodle_exception('usernotincourse');
39
require_login();
59
    }
-
 
60
    $context = $coursecontext;
-
 
61
 
-
 
62
    // Check if course has SEPARATEGROUPS and user is part of that group.
-
 
63
    if (groups_get_course_groupmode($course) == SEPARATEGROUPS &&
40
 
64
            !has_capability('moodle/site:accessallgroups', $context)) {
-
 
65
        $samegroup = false;
-
 
66
        if ($groups = groups_get_all_groups($course->id, $USER->id)) {
-
 
67
            foreach ($groups as $group) {
-
 
68
                if (groups_is_member($group->id, $userid)) {
-
 
69
                    $samegroup = true;
-
 
70
                    break;
-
 
71
                }
41
$user = $DB->get_record('user', ['id' => $userid]);
72
            }
42
 
73
        }
-
 
74
        if (!$samegroup) {
-
 
75
            throw new \moodle_exception('nologinas');
43
$context = \core\session\loginas_helper::get_context_user_can_login_as($USER, $user, $course);
Línea -... Línea 44...
-
 
44
if (empty($context)) {
-
 
45
    throw new moodle_exception('nologinas');
76
        }
46
}
77
    }
47
 
78
}
48
$PAGE->set_context($context);
79
 
49
 
80
// Login as this user and return to course home page.
50
// Login as this user and return to course home page.