You are here

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,
        )));
      }
    }
  }
}