public static function HandlerBase::getTableJoin

Fetches a handler to join one table to a primary table from the data cache.

Parameters

string $table: The table to join from.

string $base_table: The table to join to.

Return value

Drupal\views\Plugin\views\join\JoinPluginBase

4 calls to HandlerBase::getTableJoin()

File

drupal/core/modules/views/lib/Drupal/views/Plugin/views/HandlerBase.php, line 777
Definition of Drupal\views\Plugin\views\HandlerBase.

Class

HandlerBase

Namespace

Drupal\views\Plugin\views

Code

public static function getTableJoin($table, $base_table) {
  $data = views_fetch_data($table);
  if (isset($data['table']['join'][$base_table])) {
    $join_info = $data['table']['join'][$base_table];
    if (!empty($join_info['join_id'])) {
      $id = $join_info['join_id'];
    }
    else {
      $id = 'standard';
    }
    $configuration = $join_info;

    // Fill in some easy defaults.
    if (empty($configuration['table'])) {
      $configuration['table'] = $table;
    }

    // If this is empty, it's a direct link.
    if (empty($configuration['left_table'])) {
      $configuration['left_table'] = $base_table;
    }
    if (isset($join_info['arguments'])) {
      foreach ($join_info['arguments'] as $key => $argument) {
        $configuration[$key] = $argument;
      }
    }
    $join = drupal_container()
      ->get('plugin.manager.views.join')
      ->createInstance($id, $configuration);
    return $join;
  }
}