user_admin_perm
- Versions
- 4.6
user_admin_perm()- 4.7
user_admin_perm($str_rids= NULL)- 5
user_admin_perm($rid = NULL)- 6
user_admin_perm($form_state, $rid = NULL)
Menu callback: administer permissions.
Code
modules/user.module, line 1501
<?php
function user_admin_perm() {
$edit = $_POST['edit'];
if ($edit) {
// Save permissions:
$result = db_query('SELECT * FROM {role}');
while ($role = db_fetch_object($result)) {
// Delete, so if we clear every checkbox we reset that role;
// otherwise permissions are active and denied everywhere.
db_query('DELETE FROM {permission} WHERE rid = %d', $role->rid);
foreach ($edit[$role->rid] as $key => $value) {
if (!$value) {
unset($edit[$role->rid][$key]);
}
}
if (count($edit[$role->rid])) {
db_query("INSERT INTO {permission} (rid, perm) VALUES (%d, '%s')", $role->rid, implode(', ', array_keys($edit[$role->rid])));
}
}
drupal_set_message(t('The changes have been saved.'));
// Clear the cached pages and menus:
cache_clear_all();
menu_rebuild();
drupal_goto($_GET['q']);
}
// Compile role array:
$result = db_query('SELECT r.rid, p.perm FROM {role} r LEFT JOIN {permission} p ON r.rid = p.rid ORDER BY name');
$roles = array();
while ($role = db_fetch_object($result)) {
$role_permissions[$role->rid] = $role->perm;
}
$result = db_query('SELECT rid, name FROM {role} ORDER BY name');
$role_names = array();
while ($role = db_fetch_object($result)) {
$role_names[$role->rid] = $role->name;
}
// Render role/permission overview:
$header = array_merge(array(t('Permission')), $role_names);
foreach (module_list() as $module) {
if ($permissions = module_invoke($module, 'perm')) {
$rows[] = array(array('data' => t('%module module', array('%module' => $module)), 'class' => 'module', 'colspan' => count($role_names) + 1));
asort($permissions);
foreach ($permissions as $perm) {
$row[] = array('data' => t($perm), 'class' => 'permission');
foreach ($role_names as $rid => $name) {
$row[] = form_checkbox('', "$rid][$perm", 1, strstr($role_permissions[$rid], $perm));
}
$rows[] = $row;
unset($row);
}
}
}
$output = theme('table', $header, $rows, array('id' => 'permissions'));
$output .= form_submit(t('Save permissions'));
print theme('page', form($output));
}
?>Login or register to post comments 