}
- // prints a form to swap roles
- print ('<form name="rolesform" action="assign.php" method="post">');
- print ('<div align="center">'.$strcurrentcontext.': '.print_context_name($context).'<br/>');
- if ($userid) {
- print ('<input type="hidden" name="userid" value="'.$userid.'" />');
- }
- if ($courseid) {
- print ('<input type="hidden" name="courseid" value="'.$courseid.'" />');
- }
- print ('<input type="hidden" name="contextid" value="'.$context->id.'" />'.$strroletoassign.': ');
- choose_from_menu ($assignableroles, 'roleid', $roleid, 'choose', $script='rolesform.submit()');
- print ('</div></form>');
-
if ($roleid) {
+ /// prints a form to swap roles
+ echo '<form name="rolesform" action="assign.php" method="post">';
+ echo '<div align="center">'.$strcurrentcontext.': '.print_context_name($context).'<br/>';
+ if ($userid) {
+ echo '<input type="hidden" name="userid" value="'.$userid.'" />';
+ }
+ if ($courseid) {
+ echo '<input type="hidden" name="courseid" value="'.$courseid.'" />';
+ }
+ echo '<input type="hidden" name="contextid" value="'.$context->id.'" />'.$strroletoassign.': ';
+ choose_from_menu ($assignableroles, 'roleid', $roleid, 'choose', $script='rolesform.submit()');
+ echo '</div></form>';
print_simple_box_start("center");
-
include('assign.html');
-
print_simple_box_end();
+ } else { // Print overview table
+
+ $table->tablealign = 'center';
+ $table->cellpadding = 5;
+ $table->cellspacing = 0;
+ $table->width = '20%';
+ $table->head = array(get_string('roles', 'role'), get_string('users'));
+ $table->wrap = array('nowrap', 'nowrap');
+ $table->align = array('right', 'center');
+
+ foreach ($assignableroles as $roleid => $rolename) {
+ $countusers = 0;
+ if ($contextusers = get_role_users($roleid, $context)) {
+ $countusers = count($contextusers);
+ }
+ $table->data[] = array('<a href="assign.php?contextid='.$context->id.'&roleid='.$roleid.'">'.$rolename.'</a>', $countusers);
+ }
+
+ print_table($table);
}
+
print_footer($course);
?>
}?>
<table class="override">
<tr>
- <td>Capability Name</td>
- <td>Inherit</td>
- <td>Allow</td>
- <td>Prevent</td>
- <td>Prohibit</td>
+ <td><?php print_string('capability','role') ?></td>
+ <td><?php print_string('inherit','role') ?></td>
+ <td><?php print_string('allow','role') ?></td>
+ <td><?php print_string('prevent','role') ?></td>
+ <td><?php print_string('prohibit','role') ?></td>
</tr>
<?php
// init these 2
$contextlevel = 0;
$component = '';
-
+
foreach ($capabilities as $capability) {
// prints a breaker if component or name or context level
if ($capability->component != $component or $capability->contextlevel != $contextlevel) {
$component = $capability->component;
// check the capability override for this cap, this role in this context
-
- $SQL = "select * from {$CFG->prefix}role_capabilities where
- roleid = $roleid and capability = '$capability->name' and contextid = $contextid";
-
- $localoverride = get_record_sql($SQL);
-
+ if (isset($localoverrides[$capability->name])) {
+ $localpermission = $localoverrides[$capability->name]->permission;
+ } else {
+ $localpermission = 0; // Just inherit
+ }
+
if (isset($r_caps[$capability->name])) {
$isallow = $r_caps[$capability->name] > 0;
$isprevent = $r_caps[$capability->name] < 0 && $r_caps[$capability->name] > -500;
$isprevent = 0;
$isprohibit = 0;
}
+
+ $isdisabled = $isprohibit || islegacy($capability->name);
?>
<tr>
<td><?php echo get_capability_string($capability->name); ?></td>
- <td><input type="radio" name="<?php echo $capability->name; ?>" VALUE="0" <?php if (!isset($localoverride->permission) || $localoverride->permission==0){ echo 'checked="checked"';} if ($isprohibit || islegacy($capability->name)) {echo 'disabled="disabled"'; }?>></td>
- <td <?php if ($isallow) {echo "bgcolor=#ffffff";} ?>><INPUT TYPE=radio NAME="<?php echo $capability->name; ?>" VALUE="1" <?php if (isset($localoverride->permission) && $localoverride->permission==1){ echo 'checked="checked"'; } if ($isprohibit || islegacy($capability->name)) {echo 'disabled="disabled"'; }?>></td>
- <td <?php if ($isprevent) {echo "bgcolor=#ffffff";} ?>><INPUT TYPE=radio NAME="<?php echo $capability->name; ?>" VALUE="-1" <?php if (isset($localoverride->permission) && $localoverride->permission==-1){ echo 'checked="checked"'; } if ($isprohibit || islegacy($capability->name)) {echo 'disabled="disabled"'; }?>></td>
- <td <?php if ($isprohibit) {echo "bgcolor=#ffffff";} ?>><INPUT TYPE=radio NAME="<?php echo $capability->name; ?>" VALUE="-1000" <?php if (isset($localoverride->permission) && $localoverride->permission==-1000){ echo 'checked="checked"'; } if ($isprohibit || islegacy($capability->name)) {echo 'disabled="disabled"'; }?>></td>
+
+ <td align="center">
+ <input type="radio" name="<?php echo $capability->name; ?>" value="0"
+ <?php
+ if ($localpermission == 0) {echo 'checked="checked"';}
+ if ($isdisabled) {echo 'disabled="disabled"';}?>>
+ </td>
+
+ <td align="center" <?php if ($isallow) {echo 'class="capcurrent"';} ?>>
+ <input type="radio" name="<?php echo $capability->name; ?>"
+ <?php echo ' value="'.CAP_ALLOW.'"';
+ if ($localpermission == CAP_ALLOW) {echo ' checked="checked"';}
+ if ($isdisabled) {echo ' disabled="disabled"';}?>>
+ </td>
+
+ <td align="center" <?php if ($isprevent) {echo 'class="capcurrent"';} ?>>
+ <input type="radio" name="<?php echo $capability->name; ?>"
+ <?php echo ' value="'.CAP_PREVENT.'"';
+ if ($localpermission == CAP_PREVENT) {echo ' checked="checked"';}
+ if ($isdisabled) {echo ' disabled="disabled"';}?>>
+ </td>
+
+ <td align="center" <?php if ($isprohibit) {echo 'class="capcurrent"';} ?>>
+ <input type="radio" name="<?php echo $capability->name; ?>"
+ <?php echo ' value="'.CAP_PROHIBIT.'"';
+ if ($localpermission == CAP_PROHIBIT) {echo ' checked="checked"';}
+ if ($isdisabled) {echo ' disabled="disabled"';}?>>
+ </td>
</tr>
<?php } ?>
</table>
- <input type="submit" value="modify">
+ <br />
+ <div align="center"><input type="submit" value="<?php print_string('savechanges') ?>"></div>
</form>
redirect("$CFG->wwwroot/$CFG->admin/index.php");
}
- $strassignusers = get_string('assignusers', 'role');
+ $strroletooverride = get_string('roletooverride', 'role');
+ $stroverrideusers = get_string('overrideusers', 'role');
$strpotentialusers = get_string('potentialusers', 'role');
$strexistingusers = get_string('existingusers', 'role');
- $straction = get_string('assignroles', 'role');
+ $straction = get_string('overrideroles', 'role');
$strcurrentrole = get_string('currentrole', 'role');
$strcurrentcontext = get_string('currentcontext', 'role');
$strsearch = get_string('search');
* form processing here *
*************************/
if ($data = data_submitted()) {
- // add or update
+
+
+ $localoverrides = get_records_select('role_capabilities', "roleid = $roleid AND contextid = $context->id",
+ '', 'capability, permission, id');
+
foreach ($data as $capname => $value) {
- // ignore contextid and roleid
- if ($capname == "contextid" || $capname == "roleid") {
+ if ($capname == 'contextid' || $capname == 'roleid') { // ignore contextid and roleid
continue;
}
- $SQL = "select * from {$CFG->prefix}role_capabilities where
- roleid = $roleid and capability = '$capname' and contextid = $contextid";
-
- $localoverride = get_record_sql($SQL);
-
- if ($localoverride) { // update current overrides
+ if (isset($localoverrides[$capname])) { // Something exists, so update it
- if ($value == 0) { // inherit = delete
-
- delete_records('role_capabilities', 'roleid', $roleid, 'contextid', $contextid, 'capability', $capname);
-
+ if ($value == CAP_INHERIT) { // inherit = delete
+ delete_records('role_capabilities', 'roleid', $roleid, 'contextid', $contextid,
+ 'capability', $capname);
} else {
-
+ $localoverride = new object;
+ $localoverride->id = $localoverrides[$capname]->id;
$localoverride->permission = $value;
$localoverride->timemodified = time();
$localoverride->modifierid = $USER->id;
- update_record('role_capabilities', $localoverride);
-
+ if (!update_record('role_capabilities', $localoverride)) {
+ debugging('Could not update a capability!');
+ }
}
} else { // insert a record
- $override->capability = $capname;
- $override->contextid = $contextid;
- $override->roleid = $roleid;
- $override->permission = $value;
- $override->timemodified = time();
- $override->modifierid = $USER->id;
- insert_record('role_capabilities', $override);
+ if ($value != CAP_INHERIT) { // Ignore inherits
+ $override->capability = $capname;
+ $override->contextid = $contextid;
+ $override->roleid = $roleid;
+ $override->permission = $value;
+ $override->timemodified = time();
+ $override->modifierid = $USER->id;
+ if (!insert_record('role_capabilities', $override)) {
+ debugging('Could not insert a capability!');
+ }
+ }
}
-
- }
-
+ }
}
- /*****************************************
- * drop down for swapping between roles *
- *****************************************/
-
- print ('<form name="rolesform" action="override.php" method="post">');
- print ('<div align="center">'.$strcurrentcontext.': '.print_context_name($context).'<br/>');
- print ('<input type="hidden" name="contextid" value="'.$contextid.'">'.$strcurrentrole.': ');
- if ($userid) {
- print ('<input type="hidden" name="userid" value="'.$userid.'" />');
- }
- if ($courseid) {
- print ('<input type="hidden" name="courseid" value="'.$courseid.'" />');
- }
- choose_from_menu ($overridableroles, 'roleid', $roleid, 'choose', $script='rolesform.submit()');
- print ('</div></form>');
-
- /**************************************
- * print html for editting overrides *
- **************************************/
if ($roleid) {
- // This is the array holding capabilities of this role sorted till this context
+ /// prints a form to swap roles
+ echo '<form name="rolesform" action="override.php" method="post">';
+ echo '<div align="center">'.$strcurrentcontext.': '.print_context_name($context).'<br/>';
+ if ($userid) {
+ echo '<input type="hidden" name="userid" value="'.$userid.'" />';
+ }
+ if ($courseid) {
+ echo '<input type="hidden" name="courseid" value="'.$courseid.'" />';
+ }
+ echo '<input type="hidden" name="contextid" value="'.$context->id.'" />'.$strroletooverride.': ';
+ choose_from_menu ($overridableroles, 'roleid', $roleid, 'choose', $script='rolesform.submit()');
+ echo '</div></form>';
+
$r_caps = role_context_capabilities($roleid, $context);
+
+ $localoverrides = get_records_select('role_capabilities', "roleid = $roleid AND contextid = $context->id",
+ '', 'capability, permission, id');
- // Get the capabilities assignable in this context
+ // Get the capabilities overrideable in this context
if ($capabilities = fetch_context_capabilities($context)) {
print_simple_box_start("center");
include_once('override.html');
notice(get_string('nocapabilitiesincontext', 'role'),
$CFG->wwwroot.'/admin/roles/override.php?contextid='.$contextid);
}
+
+ } else { // Print overview table
+
+ $table->tablealign = 'center';
+ $table->cellpadding = 5;
+ $table->cellspacing = 0;
+ $table->width = '20%';
+ $table->head = array(get_string('roles', 'role'), get_string('overrides', 'role'));
+ $table->wrap = array('nowrap', 'nowrap');
+ $table->align = array('right', 'center');
+
+ foreach ($overridableroles as $roleid => $rolename) {
+ $countusers = 0;
+ $overridecount = count_records_select('role_capabilities', "roleid = $roleid AND contextid = $context->id");
+ $table->data[] = array('<a href="override.php?contextid='.$context->id.'&roleid='.$roleid.'">'.$rolename.'</a>', $overridecount);
+ }
+
+ print_table($table);
}
print_footer($course);
-?>
\ No newline at end of file
+?>
-<?php
-// this deals with tabs, as well as print_headers for navigation
+<?php // $Id$
+
+// Handles headers and tabs for the roles control at any level apart from SYSTEM level
if ($currenttab != 'update') {
switch ($context->aggregatelevel) {
-
+
case CONTEXT_SYSTEM:
$stradministration = get_string('administration');
print_header($site->fullname, "$site->fullname","<a href=\"../index.php\">$stradministration</a> -> $straction");
- break;
-
+ break;
+
case CONTEXT_PERSONAL:
- break;
-
+ break;
+
case CONTEXT_USERID:
print_header();
- break;
-
+ break;
+
case CONTEXT_COURSECAT:
$category = get_record('course_categories', 'id', $context->instanceid);
$strcategories = get_string("categories");
$strcategory = get_string("category");
$strcourses = get_string("courses");
print_header("$site->shortname: $category->name", "$site->fullname: $strcourses",
- "<a href=\"$CFG->wwwroot/course/index.php\">$strcategories</a> -> <a href=\"$CFG->wwwroot/course/category.php?id=$category->id\">$category->name</a> -> $straction", "", "", true);
- break;
-
+ "<a href=\"$CFG->wwwroot/course/index.php\">$strcategories</a> -> <a href=\"$CFG->wwwroot/course/category.php?id=$category->id\">$category->name</a> -> $straction", "", "", true);
+ break;
+
case CONTEXT_COURSE:
$streditcoursesettings = get_string("editcoursesettings");
-
+
$course = get_record('course', 'id', $context->instanceid);
print_header($streditcoursesettings, "$course->fullname",
- "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a>
- -> <a href=\"$CFG->wwwroot/course/edit.php?id=$course->id\">$streditcoursesettings</a> -> $straction");
- break;
-
+ "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a>
+ -> <a href=\"$CFG->wwwroot/course/edit.php?id=$course->id\">$streditcoursesettings</a> -> $straction");
+ break;
+
case CONTEXT_GROUP:
- break;
-
+ break;
+
case CONTEXT_MODULE:
// get module type?
$cm = get_record('course_modules','id',$context->instanceid);
$module = get_record('modules','id',$cm->module); //$module->name;
$course = get_record('course','id',$cm->course);
-
+
if (! $form = get_record($module->name, "id", $cm->instance)) {
error("The required instance of this module doesn't exist");
}
-
+
$strnav = "<a href=\"$CFG->wwwroot/mod/$module->name/view.php?id=$cm->id\">$form->name</a> ->";
$fullmodulename = get_string("modulename", $module->name);
$streditinga = get_string("editinga", "moodle", $fullmodulename);
$strmodulenameplural = get_string("modulenameplural", $module->name);
-
+
if ($module->name == "label") {
$focuscursor = "";
} else {
$focuscursor = "form.name";
}
-
+
print_header_simple($streditinga, '',
- "<a href=\"$CFG->wwwroot/mod/$module->name/index.php?id=$course->id\">$strmodulenameplural</a> ->
- $strnav <a href=\"$CFG->wwwroot/course/mod.php?update=$cm->id&sesskey=".sesskey()."\">$streditinga</a> -> $straction", $focuscursor, "", false);
-
- break;
-
+ "<a href=\"$CFG->wwwroot/mod/$module->name/index.php?id=$course->id\">$strmodulenameplural</a> ->
+ $strnav <a href=\"$CFG->wwwroot/course/mod.php?update=$cm->id&sesskey=".sesskey()."\">$streditinga</a> -> $straction", $focuscursor, "", false);
+
+ break;
+
case CONTEXT_BLOCK:
if ($blockinstance = get_record('block_instance', 'id', $context->instanceid)) {
if ($block = get_record('block', 'id', $blockinstance->blockid)) {
case 'course-view':
if ($course = get_record('course', 'id', $blockinstance->pageid)) {
if ($course->id != SITEID) {
- $navigation = "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> -> $navigation";
+ $navigation = "<a href=\"$CFG->wwwroot/course/view.php?id=$course->id\">$course->shortname</a> -> $navigation";
}
print_header("$straction: $blockname", $course->fullname, $navigation);
}
- break;
+ break;
case 'blog-view':
$strblogs = get_string('blogs','blog');
$navigation = '<a href="'.$CFG->wwwroot.'/blog/index.php">'.
- $strblogs.'</a> -> '.$navigation;
+ $strblogs.'</a> -> '.$navigation;
print_header("$straction: $strblogs", $SITE->fullname, $navigation);
- break;
+ break;
default:
print_header("$straction: $blockname", $SITE->fullname, $navigation);
- break;
+ break;
}
}
}
- break;
-
+ break;
+
default:
error ('This is an unknown context!');
- return false;
-
+ return false;
+
}
}
- // Printing the tabs
+if ($context->aggregatelevel != CONTEXT_SYSTEM) { // Print tabs for anything except SYSTEM context
+
if ($context->aggregatelevel == CONTEXT_MODULE) { // only show update button if module?
-
- $toprow[] = new tabobject('update', $CFG->wwwroot.'/course/mod.php?update='.$context->instanceid.'&return=true&sesskey='.sesskey(), get_string('update'));
-
+
+ $toprow[] = new tabobject('update', $CFG->wwwroot.'/course/mod.php?update='.
+ $context->instanceid.'&return=true&sesskey='.sesskey(), get_string('update'));
+
}
-
- $toprow[] = new tabobject('roles', $CFG->wwwroot.'/'.$CFG->admin.'/roles/assign.php?contextid='.$context->id, get_string('roles'));
+
+ $toprow[] = new tabobject('roles', $CFG->wwwroot.'/'.$CFG->admin.'/roles/assign.php?contextid='.
+ $context->id, get_string('roles'));
if (isset($tabsmode)) {
-
+
if (!isset($assignableroles)) {
$assignableroles = get_assignable_roles($context);
}
if (!isset($overridableroles)) {
$overridableroles = get_overridable_roles($context);
- }
-
-
+ }
+
$inactive[] = 'roles';
if (!empty($assignableroles)) {
- $secondrow[] = new tabobject('assign', $CFG->wwwroot.'/'.$CFG->admin.'/roles/assign.php?contextid='.$context->id, get_string('assignroles', 'role'));
+ $secondrow[] = new tabobject('assign',
+ $CFG->wwwroot.'/'.$CFG->admin.'/roles/assign.php?contextid='.$context->id,
+ get_string('assignroles', 'role'),
+ get_string('showallroles', 'role'),
+ true);
}
-
+
if (!empty($overridableroles)) {
- if ($context->aggregatelevel == CONTEXT_SYSTEM) {
- $secondrow[] = new tabobject('override', '', get_string('overrideroles', 'role'));
- } else {
- $secondrow[] = new tabobject('override', $CFG->wwwroot.'/'.$CFG->admin.'/roles/override.php?contextid='.$context->id,
- get_string('overrideroles', 'role'));
- }
+ $secondrow[] = new tabobject('override',
+ $CFG->wwwroot.'/'.$CFG->admin.'/roles/override.php?contextid='.$context->id,
+ get_string('overrideroles', 'role'),
+ get_string('showallroles', 'role'),
+ true);
}
-
+
if ($tabsmode == 'override') {
$currenttab = 'override';
} elseif ($tabsmode == 'assign') {
$currenttab = 'assign';
}
-
+
} else {
$inactive[] = '';
}
-
+
if (!empty($secondrow)) {
$tabs = array($toprow, $secondrow);
} else {
$tabs = array($toprow);
}
-
- if ($context->aggregatelevel != CONTEXT_SYSTEM) { // do not show tabs otherwise
- print_tabs($tabs, $currenttab, $inactive);
- }
+
+ print_tabs($tabs, $currenttab, $inactive);
+}
?>
$string['allowassign'] = 'Allow role assignments';
$string['allowoverride'] = 'Allow role overrides';
$string['capability'] = 'Capability';
+$string['capabilities'] = 'Capabilities';
$string['currentrole'] = 'Current role';
$string['currentcontext'] = 'Current context';
$string['defineroles'] = 'Define roles';
$string['manageroles'] = 'Manage roles';
$string['nocapabilitiesincontext'] = 'No capabilities available in this context';
$string['overrideroles'] = 'Override roles';
+$string['overrides'] = 'Overrides';
$string['permissions'] = 'Permissions';
$string['potentialusers'] = '$a potential users';
$string['prevent'] = 'Prevent';
$string['prohibit'] = 'Prohibit';
$string['roletoassign'] = 'Role to assign';
+$string['roletooverride'] = 'Role to override';
$string['roles'] = 'Roles';
$string['site:doanything'] = 'Allowed to do everything';
color:#ff0000;
}
+#admin-roles-override .capcurrent {
+ background-color:#FFFFFF;
+ border: 1px solid #cecece;
+}