id == $sitecontext->id) { error('Can not override base role capabilities'); } if (!has_capability('moodle/role:override', $context)) { error('You do not have permission to change overrides in this context!'); } if ($courseid) { if (!$course = get_record('course', 'id', $courseid)) { error('Bad course ID'); } } else { $course = clone($SITE); $courseid = SITEID; } require_login($course); $baseurl = 'override.php?contextid='.$context->id; if (!empty($userid)) { $baseurl .= '&userid='.$userid; } if ($courseid != SITEID) { $baseurl .= '&courseid='.$courseid; } if ($cancel) { redirect($baseurl); } /// needed for tabs.php $overridableroles = get_overridable_roles($context); $assignableroles = get_assignable_roles($context); /// Get some language strings $strroletooverride = get_string('roletooverride', 'role'); $stroverrideusers = get_string('overrideusers', 'role'); $straction = get_string('overrideroles', 'role'); $strcurrentrole = get_string('currentrole', 'role'); $strcurrentcontext = get_string('currentcontext', 'role'); $strparticipants = get_string('participants'); /// Make sure this user can override that role if ($roleid) { if (!user_can_override($context, $roleid)) { error ('you can not override this role in this context'); } } if ($userid) { $user = get_record('user', 'id', $userid); $fullname = fullname($user, has_capability('moodle/site:viewfullnames', $context)); } /// get all cababilities $capabilities = fetch_context_capabilities($context); /// Process incoming role override if ($data = data_submitted() and $roleid and confirm_sesskey()) { $allowed_values = array(CAP_INHERIT, CAP_ALLOW, CAP_PREVENT, CAP_PROHIBIT); $localoverrides = get_records_select('role_capabilities', "roleid = $roleid AND contextid = $context->id", '', 'capability, permission, id'); foreach ($capabilities as $cap) { if (!isset($data->{$cap->name})) { //cap not specified in form continue; } if (islegacy($data->{$cap->name})) { continue; } $capname = $cap->name; $value = clean_param($data->{$cap->name}, PARAM_INT); if (!in_array($value, $allowed_values)) { continue; } if (isset($localoverrides[$capname])) { // Something exists, so update it assign_capability($capname, $value, $roleid, $context->id, true); } else { // insert a record if ($value != CAP_INHERIT) { // Ignore inherits assign_capability($capname, $value, $roleid, $context->id); } } } redirect($baseurl); } /// Print the header and tabs if ($context->contextlevel == CONTEXT_USER) { /// course header if ($course->id != SITEID) { print_header("$fullname", "$fullname", "wwwroot/course/view.php?id=$course->id\">$course->shortname -> wwwroot/user/index.php?id=$course->id\">$strparticipants -> wwwroot/user/view.php?id=$userid&course=$course->id\">$fullname -> $straction", "", "", true, " ", navmenu($course)); /// site header } else { print_header("$course->fullname: $fullname", $course->fullname, "wwwroot/user/view.php?id=$userid&course=$course->id\">$fullname -> $straction", "", "", true, " ", navmenu($course)); } $showroles = 1; $currenttab = 'override'; include_once($CFG->dirroot.'/user/tabs.php'); } else if ($context->contextlevel==CONTEXT_COURSE and $context->instanceid == SITEID) { require_once($CFG->libdir.'/adminlib.php'); admin_externalpage_setup('frontpageroles'); admin_externalpage_print_header(); $currenttab = ''; $tabsmode = 'override'; include_once('tabs.php'); } else { $currenttab = ''; $tabsmode = 'override'; include_once('tabs.php'); } print_heading_with_help(get_string('overrides', 'role'), 'overrides'); if ($roleid) { /// prints a form to swap roles echo '