function oa_adminrole_update_permissions in Open Atrium Core 7.2
Add the administrator role to all node-$type permissions.
3 calls to oa_adminrole_update_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 43 - 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_permissions($type = '') {
if ($role = user_role_load_by_name('administrator')) {
// get all permissions that contain the node type
$perms = array();
foreach (module_implements('permission') as $module) {
foreach (module_invoke($module, 'permission') as $key => $perm) {
if (strpos($key, ' ' . $type . ' ') !== FALSE) {
$perms[$key] = $module;
}
}
}
if ($perms) {
$rid = $role->rid;
db_delete('role_permission')
->condition('rid', $rid)
->condition('permission', array_keys($perms), 'IN')
->execute();
$query = db_insert('role_permission')
->fields(array(
'rid',
'permission',
'module',
));
foreach ($perms as $perm => $module) {
$query
->values(array(
$rid,
$perm,
$module,
));
}
$query
->execute();
// don't give messages during install
if (!defined('MAINTENANCE_MODE')) {
drupal_set_message(t('The <em>@role</em> role has been added to @type content permissions.', array(
'@role' => $role->name,
'@type' => $type,
)));
}
}
}
}