You are here

function og_handler_field_user_roles::pre_render in Organic groups 7

Same name and namespace in other branches
  1. 7.2 includes/views/handlers/og_handler_field_user_roles.inc \og_handler_field_user_roles::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/og_handler_field_user_roles.inc, line 25

Class

og_handler_field_user_roles
Field handler to provide a list of group roles.

Code

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

  // Array of all the role IDss 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']);
      foreach ($rids as $rid) {
        $this->items[$value['gid']][$value['uid']][$rid]['rid'] = $rid;
      }
      $all_rids = array_merge($all_rids, $rids);
    }

    // Get the name of all the roles we need to show.
    $all_rids = og_get_user_roles_name($all_rids);

    // Sanitize each role name once.
    array_walk($all_rids, 'check_plain');
    foreach ($this->items as $gid => $gid_value) {
      foreach ($gid_value as $uid => $uid_value) {
        foreach ($uid_value as $rid => $value) {
          $this->items[$gid][$uid][$rid]['role'] = $all_rids[$rid];
        }
      }
    }
  }
}