function views_get_table_join in Views (for Drupal 7) 6.2
Same name and namespace in other branches
- 6.3 includes/handlers.inc \views_get_table_join()
 - 7.3 includes/handlers.inc \views_get_table_join()
 
Fetch a handler to join one table to a primary table from the data cache
4 calls to views_get_table_join()
- views_handler::get_join in includes/
handlers.inc  - Get the join object that should be used for this handler.
 - views_handler_argument::summary_name_field in handlers/
views_handler_argument.inc  - Add the name field, which is the field displayed in summary queries. This is often used when the argument is numeric.
 - views_many_to_one_helper::add_table in includes/
handlers.inc  - Add a table to the query.
 - views_query::get_join_data in includes/
query.inc  - Retrieve join data from the larger join data cache.
 
File
- includes/
handlers.inc, line 168  - handlers.inc Defines the various handler objects to help build and display views.
 
Code
function views_get_table_join($table, $base_table) {
  $data = views_fetch_data($table);
  if (isset($data['table']['join'][$base_table])) {
    $h = $data['table']['join'][$base_table];
    if (!empty($h['handler']) && class_exists($h['handler'])) {
      $handler = new $h['handler']();
    }
    else {
      $handler = new views_join();
    }
    // Fill in some easy defaults
    $handler->definition = $h;
    if (empty($handler->definition['table'])) {
      $handler->definition['table'] = $table;
    }
    // If this is empty, it's a direct link.
    if (empty($handler->definition['left_table'])) {
      $handler->definition['left_table'] = $base_table;
    }
    if (isset($h['arguments'])) {
      call_user_func_array(array(
        &$handler,
        'construct',
      ), $h['arguments']);
    }
    else {
      $handler
        ->construct();
    }
    return $handler;
  }
  // DEBUG -- identify missing handlers
  vpr("Missing join: {$table} {$base_table}");
}