You are here

function oa_access_set_group_permissions in Open Atrium Core 7.2

Changes the permissions for a set of groups.

Parameters

array $group_permissions: An associatiive array keyed by Group or Team nid containing associative arrays keyed by module containing a list of permissions, for example:

array(
  '27' => array(
    'mymodule' => array(
      'a permission',
    ),
  ),
);

Which signifies that the group with nid 27 has 'a permission' from a module called 'mymodule'.

See also

oa_access_get_group_permissions()

7 calls to oa_access_set_group_permissions()
OpenAtriumAccessTestCase::testCleanupPermissions in modules/oa_access/tests/oa_access.test
OpenAtriumAccessTestCase::testCombinedGroupPermissions in modules/oa_access/tests/oa_access.test
OpenAtriumAccessTestCase::testGetSetGroupPermissions in modules/oa_access/tests/oa_access.test
OpenAtriumAccessTestCase::testGroupAccess in modules/oa_access/tests/oa_access.test
OpenAtriumAccessTestCase::testTeamAccess in modules/oa_access/tests/oa_access.test

... See full list

File

modules/oa_access/oa_access.module, line 485
Code for the Open Atrium Access module.

Code

function oa_access_set_group_permissions($group_permissions) {
  $cache =& drupal_static('oa_access_get_group_permissions', array());

  // Delete current permissions for the given groups.
  db_delete('oa_access')
    ->condition('nid', array_keys($group_permissions), 'IN')
    ->execute();

  // Then build them back up!
  foreach ($group_permissions as $nid => $modules) {
    foreach ($modules as $module => $permissions) {
      foreach ($permissions as $name) {
        db_insert('oa_access')
          ->fields(array(
          'nid' => $nid,
          'permission' => $name,
          'module' => $module,
        ))
          ->execute();
      }

      // Replace these entries in the cache, so that we don't have to pull them
      // from the database at all!
      $cache[$nid] = $modules;
    }
  }
}