You are here

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