function user_permissions_form
Search API
7.x user.module | user_permissions_form() |
6.x user.module | user_permissions_form() |
4.x user.module | user_permissions_form() |
5.x user.module | user_permissions_form() |
This is the permissions form, where users can set which roles have which permissions.
File
- modules/
user/ user.module, line 219
Code
function user_permissions_form() {
$form = array();
fp_add_css(fp_get_module_path("user") . "/css/user.css");
// Let's get all of our permissions from the permissions table.
$permissions = array();
$res = db_query("SELECT * FROM role_permissions");
while ($cur = db_fetch_array($res)) {
$permissions [$cur ["rid"]][] = $cur ["perm"];
}
$cb = $m = 1;
$form ["mark" . $m++] = array(
"value" => t("Use this form to assign permissions to roles in the system.
These permissions are defined by module."),
);
$roles = array();
$res = db_query("SELECT * FROM roles ORDER BY rid ");
while ($cur = db_fetch_array($res)) {
$roles [$cur ["rid"]] = $cur ["name"];
}
$col_count = count($roles) + 1;
$form ["mark" . $m++] = array(
"value" => "<table class='admin-perm-table' width='100%' cellpadding='0' cellspacing='0'>
",
);
// Go through all of the modules, then call hook_perm for them, to get their permissions.
$modules = modules_implement_hook("perm");
//fpm($modules);
foreach ($modules as $module) {
$form ["mark" . $m++] = array(
"value" => "<tr><td colspan='$col_count' class='perm-module-name'>" . ucwords($module) . " " . t("module") . "</td></tr>",
);
// Draw the headers...
$form ["mark" . $m++] = array(
"value" => "<tr class='headers'><th style='min-width: 400px;'>" . t("Permission") . "</th>",
);
foreach ($roles as $key => $role) {
$form ["mark" . $m++] = array(
"value" => "<th style='min-width: 100px;'>" . $role . "</th>",
);
}
$form ["mark" . $m++] = array(
"value" => "</tr>",
);
// End of headers
$zebra = "even";
// Let's get all the perms.
$perms = call_user_func($module . "_perm");
foreach ($perms as $perm_name => $perm_details) {
$title = $perm_details ["title"];
$desc = $perm_details ["description"];
$zebra = ($zebra == "even") ? "odd" : "even";
$form ["mark" . $m++] = array(
"value" => "<tr class='perm-cb-row perm-cb-row-$zebra'><td class='perm-details' valign='top'>
<div class='perm-title' title='$perm_name'>$title</div>
<div class='perm-desc' title='$perm_name'>$desc</div>
</td>",
);
foreach ($roles as $key => $role) {
// Should this be checked by default (cause it was all ready in our table?)
$default_value = array();
if (is_array($permissions [$key]) && in_array($perm_name, $permissions [$key])) {
// Yes, it was in there! Set up the default_value as an array that
// looks like array(key => key). That is how we set a checkbox to be checked
// by default.
$default_value = array($key . "___$perm_name" => $key . "___$perm_name");
}
$form ["perm_cb_" . $cb++] = array(
"type" => "checkboxes",
"options" => array("$key" . "___$perm_name" => ""),
"value" => $default_value,
"prefix" => "<td class='perm-cb'>",
"suffix" => "</td>",
);
}
$form ["mark" . $m++] = array(
"value" => "</tr>",
);
}
}
$form ["mark" . $m++] = array(
"value" => "</table>",
);
$form ["submit"] = array(
"type" => "submit",
"value" => t("Save permissions"),
"prefix" => "<hr>",
);
return $form;
}