You are here

function rolereference_views_plugin_display::query in Role Reference 7

Inject anything into the query that the display handler needs.

Overrides views_plugin_display::query

File

includes/rolereference_views_plugin_display.inc, line 21
Handler for node_reference_views_plugin_display.

Class

rolereference_views_plugin_display
@file Handler for node_reference_views_plugin_display.

Code

function query() {
  $options = $this
    ->get_option('rolereference_options');
  if ($options['string'] !== '') {
    $like = db_driver() == 'pgsql' ? "ILIKE" : "LIKE";
    $match_clauses = array(
      'contains' => array(
        'operator' => $like,
        'value' => '%' . $options['string'] . '%',
      ),
      'equals' => array(
        'operator' => '=',
        'value' => $options['string'],
      ),
      'starts_with' => array(
        'operator' => $like,
        'value' => $options['string'] . '%',
      ),
    );
    $clause = isset($match_clauses[$options['match']]) ? $match_clauses[$options['match']] : $match_clauses['contains'];
    $alias = $this->view->query
      ->ensure_table($options['table']);
    $this->view->query
      ->add_where(NULL, "{$alias}.{$options['field_string']}", $clause['value'], $clause['operator']);
  }
  elseif ($options['ids']) {
    $alias = $this->view->query
      ->ensure_table($options['table']);
    $this->view->query
      ->add_where(NULL, "{$alias}.{$options['field_id']}", $options['ids'], 'IN');
  }
}