You are here

function og_ui_handler_area_og_membership_overview::render in Organic groups 7.2

Render the area.

Overrides views_handler_area::render

File

og_ui/includes/views/handlers/og_ui_handler_area_og_membership_overview.inc, line 60

Class

og_ui_handler_area_og_membership_overview
Overview of the group memberships (e.g. group manager, total memebrs).

Code

function render($empty = FALSE) {

  // Get arguments.
  foreach ($this->view->argument as $key => $handler) {
    if ($key == 'group_type') {
      $group_type = $handler
        ->get_value();
    }
    elseif ($key == 'gid') {
      $gid = $handler = $handler
        ->get_value();
    }
  }
  if (empty($group_type) || empty($gid)) {

    // No group type and group ID provided.
    return;
  }
  $group = entity_load_single($group_type, $gid);
  if (!$group || !og_is_group($group_type, $group)) {

    // Arguments are not a valid group.
    return;
  }
  $items = array();
  if (!empty($group->uid) && $this->options['manager']) {

    // Group manager.
    $account = user_load($group->uid);
    $items[] = array(
      'data' => t('Group manager: !manager', array(
        '!manager' => theme('username', array(
          'account' => $account,
        )),
      )),
    );
  }
  $base_query = new EntityFieldQuery();
  $base_query
    ->entityCondition('entity_type', 'og_membership')
    ->propertyCondition('group_type', $group_type, '=')
    ->propertyCondition('gid', $gid, '=')
    ->count();
  foreach (og_group_content_states() as $state => $label) {

    // Total members by state.
    if ($this->options["total_members_{$state}"]) {
      $query = clone $base_query;
      $count = $query
        ->propertyCondition('entity_type', 'user', '=')
        ->propertyCondition('state', $state, '=')
        ->execute();
      $params = array(
        '%label' => strtolower($label),
        '@count' => $count,
      );
      $items[] = array(
        'data' => t('Total %label members: @count', $params),
      );
    }
  }
  if ($this->options['total_members']) {

    // Total members.
    $query = clone $base_query;
    $count = $query
      ->propertyCondition('entity_type', 'user', '=')
      ->execute();
    $items[] = array(
      'data' => t('Total members: @count', array(
        '@count' => $count,
      )),
    );
  }
  if ($this->options['total_content']) {

    // Total nodes.
    $query = clone $base_query;
    $count = $query
      ->propertyCondition('entity_type', 'node', '=')
      ->execute();
    $items[] = array(
      'data' => t('Total content: @count', array(
        '@count' => $count,
      )),
    );
  }
  return theme('item_list', array(
    'items' => $items,
    'title' => t('Group overview'),
  ));
}