You are here

function og_ui_admin_permissions_after_build in Organic groups 7.2

Helper function to disable the permissions checkboxes.

Every permission can declare to which roles it applies, as some don't make sense if applied to anonymous or authenticated user (e.g. subscribe to group should appear only to anonymous members). A second case for disabling is when using deafult roles and permissions, and the user is browsing a group's permissions page.

1 string reference to 'og_ui_admin_permissions_after_build'
og_ui_admin_permissions in og_ui/og_ui.admin.inc
Menu callback: administer permissions.

File

og_ui/og_ui.admin.inc, line 829
Admin settings for Organic groups module.

Code

function og_ui_admin_permissions_after_build($form) {
  $group_type = $form['group_type']['#value'];
  $gid = $form['gid']['#value'];
  $bundle = $form['bundle']['#value'];
  $role_names = $form['role_names']['#value'];

  // Indicate if all checkboxes should be disabled.
  $disable = $gid && og_is_group_default_access($group_type, $gid);

  // Authenticated roles.
  $roles = og_roles($group_type, $bundle, $gid);
  $anon_rid = array_search(OG_ANONYMOUS_ROLE, $roles);

  // Remove the anonymous member from the authenticated roles.
  unset($roles[$anon_rid]);
  $auth_rids = array_keys($roles);
  foreach (og_get_permissions() as $key => $perm) {
    $perm['roles'] = drupal_map_assoc($perm['roles']);
    if ($disable || (empty($perm['roles']) || empty($perm['roles'][OG_ANONYMOUS_ROLE]))) {
      if (in_array($anon_rid, array_keys($role_names))) {
        $form['checkboxes'][$anon_rid][$key]['#attributes']['disabled'] = TRUE;
      }
    }
    if ($disable || (empty($perm['roles']) || empty($perm['roles'][OG_AUTHENTICATED_ROLE]))) {
      foreach ($auth_rids as $auth_rid) {
        if (in_array($auth_rid, array_keys($role_names))) {
          $form['checkboxes'][$auth_rid][$key]['#attributes']['disabled'] = TRUE;
        }
      }
    }
  }
  return $form;
}