You are here

public function views_many_to_one_helper::summary_join in Views (for Drupal 7) 7.3

Same name and namespace in other branches
  1. 6.3 includes/handlers.inc \views_many_to_one_helper::summary_join()
  2. 6.2 includes/handlers.inc \views_many_to_one_helper::summary_join()

Provide the proper join for summary queries.

This is important in part because it will cooperate with other arguments if possible.

File

includes/handlers.inc, line 928
Defines the various handler objects to help build and display views.

Class

views_many_to_one_helper
This many to one helper object is used on both arguments and filters.

Code

public function summary_join() {
  $field = $this->handler->relationship . '_' . $this->handler->table . '.' . $this->handler->field;
  $join = $this
    ->get_join();

  // Shortcuts.
  $options = $this->handler->options;
  $view =& $this->handler->view;
  $query =& $this->handler->query;
  if (!empty($options['require_value'])) {
    $join->type = 'INNER';
  }
  if (empty($options['add_table']) || empty($view->many_to_one_tables[$field])) {
    return $query
      ->ensure_table($this->handler->table, $this->handler->relationship, $join);
  }
  else {
    if (!empty($view->many_to_one_tables[$field])) {
      foreach ($view->many_to_one_tables[$field] as $value) {
        $join->extra = array(
          array(
            'field' => $this->handler->real_field,
            'operator' => '!=',
            'value' => $value,
            'numeric' => !empty($this->definition['numeric']),
          ),
        );
      }
    }
    return $this
      ->add_table($join);
  }
}