Skip to content

Commit

Permalink
Cleaning up assign and override interfaces
Browse files Browse the repository at this point in the history
  • Loading branch information
moodler committed Sep 15, 2006
1 parent 3d5fb99 commit 4934c49
Show file tree
Hide file tree
Showing 6 changed files with 216 additions and 144 deletions.
47 changes: 32 additions & 15 deletions admin/roles/assign.php
Expand Up @@ -154,28 +154,45 @@

}

// 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.'&amp;roleid='.$roleid.'">'.$rolename.'</a>', $countusers);
}

print_table($table);
}

print_footer($course);

?>
61 changes: 44 additions & 17 deletions admin/roles/override.html
Expand Up @@ -10,18 +10,18 @@
}?>
<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) {
Expand All @@ -33,12 +33,12 @@
$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;
Expand All @@ -48,18 +48,45 @@
$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>
116 changes: 66 additions & 50 deletions admin/roles/override.php
Expand Up @@ -20,10 +20,11 @@
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');
Expand Down Expand Up @@ -75,74 +76,71 @@
* 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');
Expand All @@ -151,8 +149,26 @@
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.'&amp;roleid='.$roleid.'">'.$rolename.'</a>', $overridecount);
}

print_table($table);
}

print_footer($course);

?>
?>

0 comments on commit 4934c49

Please sign in to comment.