You are here

function og_handler_field_group_permissions::pre_render in Organic groups 7.2

Same name and namespace in other branches
  1. 7 includes/views/og_handler_field_group_permissions.inc \og_handler_field_group_permissions::pre_render()

Run before any fields are rendered.

This gives the handlers some time to set up before any handler has been rendered.

Parameters

array $values: An array of all objects returned from the query.

Overrides views_handler_field::pre_render

File

includes/views/handlers/og_handler_field_group_permissions.inc, line 12

Class

og_handler_field_group_permissions
Field handler to provide a list of group permissions.

Code

function pre_render(&$values) {
  $list = array();
  $this->items = array();
  foreach ($values as $value) {
    $list[] = array(
      'uid' => $value->{$this->aliases['uid']},
      'gid' => $value->{$this->field_alias},
    );
  }

  // Array of all the role IDs we will need to get a role name.
  $all_rids = array();
  if ($list) {
    foreach ($list as &$value) {
      $rids = og_get_user_roles($value['gid'], $value['uid']);

      // Hold the user role IDs per group and per user.
      $value['rids'] = $rids;
      $all_rids = array_merge($all_rids, $rids);
    }
    if ($all_rids) {
      $all_perms = og_get_permissions();

      // Get the permissions of all the roles we need to show.
      $perms = og_role_permissions($all_rids);
      foreach ($list as $value) {
        foreach ($value['rids'] as $rid) {
          foreach ($perms[$rid] as $perm => $perm_value) {
            $this->items[$value['gid']][$value['uid']][$perm]['perm'] = $all_perms[$perm]['title'];
          }
        }
      }
    }
  }
}