|
Moodle
2.2.1
http://www.collinsharper.com
|
00001 <?php 00002 // Allows a teacher/admin to login as another user (in stealth mode) 00003 00004 require_once('../config.php'); 00005 require_once('lib.php'); 00006 00007 $id = optional_param('id', SITEID, PARAM_INT); // course id 00008 00010 if (session_is_loggedinas()) { 00011 require_sesskey(); 00012 require_logout(); 00013 00014 if ($id and $id != SITEID) { 00015 $SESSION->wantsurl = "$CFG->wwwroot/course/view.php?id=".$id; 00016 } else { 00017 $SESSION->wantsurl = "$CFG->wwwroot/"; 00018 } 00019 00020 redirect(get_login_url()); 00021 } 00022 00025 00026 $userid = required_param('user', PARAM_INT); // login as this user 00027 00028 $url = new moodle_url('/course/loginas.php', array('user'=>$userid, 'sesskey'=>sesskey())); 00029 if ($id !== SITEID) { 00030 $url->param('id', $id); 00031 } 00032 $PAGE->set_url($url); 00033 00034 require_sesskey(); 00035 $course = $DB->get_record('course', array('id'=>$id), '*', MUST_EXIST); 00036 00038 00039 $systemcontext = get_context_instance(CONTEXT_SYSTEM); 00040 $coursecontext = get_context_instance(CONTEXT_COURSE, $course->id); 00041 00042 require_login(); 00043 00044 if (has_capability('moodle/user:loginas', $systemcontext)) { 00045 if (is_siteadmin($userid)) { 00046 print_error('nologinas'); 00047 } 00048 $context = $systemcontext; 00049 $PAGE->set_context($context); 00050 } else { 00051 require_login($course); 00052 require_capability('moodle/user:loginas', $coursecontext); 00053 if (is_siteadmin($userid)) { 00054 print_error('nologinas'); 00055 } 00056 if (!is_enrolled($coursecontext, $userid)) { 00057 print_error('usernotincourse'); 00058 } 00059 $context = $coursecontext; 00060 } 00061 00063 $oldfullname = fullname($USER, true); 00064 session_loginas($userid, $context); 00065 $newfullname = fullname($USER, true); 00066 00067 add_to_log($course->id, "course", "loginas", "../user/view.php?id=$course->id&user=$userid", "$oldfullname -> $newfullname"); 00068 00069 $strloginas = get_string('loginas'); 00070 $strloggedinas = get_string('loggedinas', '', $newfullname); 00071 00072 $PAGE->set_title($strloggedinas); 00073 $PAGE->set_heading($course->fullname); 00074 $PAGE->navbar->add($strloggedinas); 00075 notice($strloggedinas, "$CFG->wwwroot/course/view.php?id=$course->id");