function og_role_permissions in Organic groups 7
Same name and namespace in other branches
- 7.2 og.module \og_role_permissions()
Determine the permissions for one or more roles.
Parameters
$roles: An array whose keys are the role IDs of interest.
Return value
An array indexed by role ID. Each value is an array whose keys are the permission strings for the given role ID.
6 calls to og_role_permissions()
- OgUiUpgradePathTestCase::testOgUiUpgrade in og_ui/
og_ui.test - Test a successful upgrade.
- og_get_global_permissions in ./
og.module - Get global permissions.
- og_handler_field_group_permissions::pre_render in includes/
views/ og_handler_field_group_permissions.inc - Run before any fields are rendered.
- og_set_global_access_module in ./
og.module - Add default roles and permissions of a module to the global permissions.
- og_ui_user_admin_permissions in og_ui/
og_ui.admin.inc - Menu callback: administer permissions.
1 string reference to 'og_role_permissions'
- og_invalidate_cache in ./
og.module - Invalidate cache.
File
- ./
og.module, line 2319 - Enable users to create and manage groups with roles and permissions.
Code
function og_role_permissions($roles = array()) {
$cache =& drupal_static(__FUNCTION__, array());
$role_permissions = $fetch = array();
if ($roles) {
foreach ($roles as $rid => $name) {
if (isset($cache[$rid])) {
$role_permissions[$rid] = $cache[$rid];
}
else {
// Add this rid to the list of those needing to be fetched.
$fetch[] = $rid;
// Prepare in case no permissions are returned.
$cache[$rid] = array();
}
}
if ($fetch) {
// Get from the database permissions that were not in the static variable.
// Only role IDs with at least one permission assigned will return rows.
$result = db_query("SELECT rid, permission FROM {og_role_permission} WHERE rid IN (:fetch)", array(
':fetch' => $fetch,
));
foreach ($result as $row) {
$cache[$row->rid][$row->permission] = TRUE;
}
foreach ($fetch as $rid) {
// For every rid, we know we at least assigned an empty array.
$role_permissions[$rid] = $cache[$rid];
}
}
}
return $role_permissions;
}