function oa_adminrole_update_og_permissions in Open Atrium Core 7.2
Add the administrator role to all node-$type OG permissions.
3 calls to oa_adminrole_update_og_permissions()
- oa_adminrole_modules_installed in modules/
oa_adminrole/ oa_adminrole.module - Implements hook_modules_installed().
- oa_adminrole_node_type_insert in modules/
oa_adminrole/ oa_adminrole.module - Respond to new content types
- oa_adminrole_update_roles in modules/
oa_adminrole/ oa_adminrole.module - Update permissions for all content types
File
- modules/
oa_adminrole/ oa_adminrole.module, line 79 - This module simply gives the administrator role all node-based permissions every time the a new content-type is saved. Also supports the og_permissions
Code
function oa_adminrole_update_og_permissions($type = '') {
$admin_rids = db_select('og_role', 'r')
->fields('r', array(
'rid',
))
->condition('r.name', OG_ADMINISTRATOR_ROLE)
->execute()
->fetchCol(0);
$member_rids = db_select('og_role', 'r')
->fields('r', array(
'rid',
))
->condition('r.name', OG_AUTHENTICATED_ROLE)
->execute()
->fetchCol(0);
if (!empty($admin_rids)) {
$perms = array();
foreach (module_implements('og_permission') as $module) {
foreach (module_invoke($module, 'og_permission') as $key => $perm) {
if (strpos($key, ' ' . $type . ' ') !== FALSE) {
$perms[$key] = $module;
}
}
}
if (!empty($perms)) {
$member_permissions = array();
$admin_permissions = array();
foreach ($perms as $perm => $module) {
// add admin to all perms
$admin_permissions[] = $perm;
// add member to all "own" perms
if (strpos($perm, ' own ') !== FALSE) {
$member_permissions[] = $perm;
}
}
foreach ($member_rids as $rid) {
og_role_grant_permissions($rid, $member_permissions);
}
foreach ($admin_rids as $rid) {
og_role_grant_permissions($rid, $admin_permissions);
}
// don't give messages during install
if (!defined('MAINTENANCE_MODE')) {
drupal_set_message(t('The <em>@role</em> role has been added to @type group/space permissions.', array(
'@role' => OG_ADMINISTRATOR_ROLE,
'@type' => $type,
)));
}
}
}
}