function secure_permissions_build_roles in Secure Permissions 7
Same name and namespace in other branches
- 6 secure_permissions.module \secure_permissions_build_roles()
- 7.2 secure_permissions.module \secure_permissions_build_roles()
Build the roles table correctly.
1 call to secure_permissions_build_roles()
- secure_permissions_rebuild in ./
secure_permissions.module - Rebuild permissions, based on presets from the API.
File
- ./
secure_permissions.module, line 193 - Secure Permissions module file.
Code
function secure_permissions_build_roles() {
// Get the currently defined roles for the site, and sort() them so
// we can diff the arrays properly.
$roles = secure_permissions_get_existing_roles();
sort($roles);
// Get the roles defined by this module's hook.
$secure_roles = secure_permissions_get_roles();
if (empty($secure_roles)) {
return FALSE;
}
// Compute the difference for add/delete.
$new_roles = array_diff($secure_roles, $roles);
$remove_roles = array_diff($roles, $secure_roles);
// Add new roles.
foreach ($new_roles as $rid => $name) {
$role = new stdClass();
$role->name = $name;
user_role_save($role);
}
// Delete old roles.
$omit = array(
DRUPAL_ANONYMOUS_RID,
DRUPAL_AUTHENTICATED_RID,
);
$admin_rid = variable_get('user_admin_role', 0);
if (!empty($admin_rid)) {
$omit[] = $admin_rid;
}
foreach ($remove_roles as $name) {
$role = user_role_load_by_name($name);
if (!empty($role) && !in_array($role->rid, $omit)) {
user_role_delete($name);
}
}
return TRUE;
}