You are here

function casetracker_views_handler_field_case_count::pre_render in Case Tracker 7

Same name and namespace in other branches
  1. 6 includes/casetracker_views_handler_field_case_count.inc \casetracker_views_handler_field_case_count::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/casetracker_views_handler_field_case_count.inc, line 53

Class

casetracker_views_handler_field_case_count
Field handler to show case counts for projects.

Code

function pre_render(&$values) {
  $nids = array();
  foreach ($values as $row) {
    $nids[] = $row->nid;
  }
  if (!empty($nids)) {
    $this->counts = array();
    $query = db_select('casetracker_case', 'c')
      ->fields('c', array(
      'pid',
    ));
    $query
      ->addExpression('COUNT(c.nid)', 'count');

    // Add a filter by realm/type if option is set.
    if (!empty($this->options['type'])) {
      $filter = explode('-', $this->options['type']);
      $query
        ->condition('case_' . $filter[0] . '_id', $filter[1]);
    }
    $query
      ->condition('c.pid', $nids, 'IN');
    $query
      ->join('node', 'n', 'c.nid = n.nid AND c.vid = n.vid');
    $query
      ->groupBy('c.pid');
    $result = $query
      ->execute();
    foreach ($result
      ->fetchAll() as $row) {
      $this->counts[$row->pid] = $row->count;
    }
  }
}