You are here

function nodequeue_handler_field_all_subqueues::pre_render in Nodequeue 7.3

Same name and namespace in other branches
  1. 6.2 includes/views/nodequeue_handler_field_all_subqueues.inc \nodequeue_handler_field_all_subqueues::pre_render()
  2. 7.2 includes/views/nodequeue_handler_field_all_subqueues.inc \nodequeue_handler_field_all_subqueues::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 nodequeue_handler_field_all_queues::pre_render

File

includes/views/nodequeue_handler_field_all_subqueues.inc, line 10
Field handler for all subqueues

Class

nodequeue_handler_field_all_subqueues
@file Field handler for all subqueues

Code

function pre_render(&$values) {
  if (user_access('manipulate queues') || user_access('manipulate all queues')) {
    $nids = array();
    foreach ($values as $result) {
      $nids[] = $result->{$this->field_alias};
    }
    if ($nids) {
      $query = db_select('nodequeue_nodes', 'nn');
      $query
        ->innerJoin('nodequeue_queue', 'nq', 'nn.name = nq.name');
      $query
        ->innerJoin('nodequeue_subqueue', 'ns', 'nn.sqid = ns.sqid');
      $query
        ->fields('nn', array(
        'nid',
        'sqid',
        'name',
      ));
      $query
        ->fields('nq', array(
        'subqueue_title',
      ));
      $query
        ->fields('ns', array(
        'title',
      ));
      $query
        ->orderby('ns.title');
      $query
        ->orderby('nq.subqueue_title');
      $query
        ->condition('nn.nid', $nids);
      $queues = array_filter($this->options['queues']);
      if (!empty($this->options['limit']) && !empty($queues)) {
        $query
          ->condition('nn.name', $queues);
      }
      $result = $query
        ->execute();
      foreach ($result as $queue) {
        $title = empty($queue->subqueue_title) ? $queue->title : str_replace('%subqueue', $queue->title, $queue->subqueue_title);
        $this->items[$queue->nid][$queue->sqid]['title'] = check_plain($title);
        if (!empty($this->options['link_to_queue'])) {
          $this->items[$queue->nid][$queue->sqid]['make_link'] = TRUE;
          $this->items[$queue->nid][$queue->sqid]['path'] = 'admin/structure/nodequeue/' . $queue->name . '/view/' . $queue->sqid;
        }
      }
    }
  }
}