You are here

function views_raw_sql_get_query_tokens in Views Raw SQL 7

Get query tokens. Nearly straight copy (without self tokens) from \views_handler_field::get_render_tokens().

@todo We might want to cache parts of this.

Parameters

$view:

$field_id: When this is called from a field, searching after current field id is useless.

Return value

array

3 calls to views_raw_sql_get_query_tokens()
views_handler_field_views_raw_sql::query in ./views_handler_field_views_raw_sql.inc
Called to add the field to a query.
views_handler_filter_views_raw_sql::query in ./views_handler_filter_views_raw_sql.inc
Add this filter to the query.
views_handler_sort_views_raw_sql::query in ./views_handler_sort_views_raw_sql.inc
Called to add the sort to a query.

File

./views_raw_sql.module, line 81

Code

function views_raw_sql_get_query_tokens($view, $field_id = NULL) {
  $tokens = array();
  if (!empty($view->build_info['substitutions'])) {
    $tokens = $view->build_info['substitutions'];
  }
  $count = 0;
  foreach ($view->display_handler
    ->get_handlers('argument') as $arg => $display_handler) {
    $token = '%' . ++$count;
    if (!isset($tokens[$token])) {
      $tokens[$token] = '';
    }

    // Use strip tags as there should never be HTML in the path.
    // However, we need to preserve special characters like " that
    // were removed by check_plain().
    $tokens['!' . $count] = isset($view->args[$count - 1]) ? strip_tags(decode_entities($view->args[$count - 1])) : '';
  }

  // Get flattened set of tokens for any array depth in $_GET parameters.
  $tokens += views_raw_sql_get_query_tokens_recursive($_GET);

  // Now add replacements for our fields.
  foreach ($view->display_handler
    ->get_handlers('field') as $current_field_id => $field_handler) {

    // We only use fields up to (and NOT including) this one.
    if ($current_field_id == $field_id) {
      break;
    }
    $tokens["[{$current_field_id}]"] = views_raw_sql_get_field_sql($field_handler, $field_handler->field_alias);
    if (property_exists($field_handler, 'field_info')) {
      $field_name = $field_handler->field_info['field_name'];
      foreach ($field_handler->field_info['columns'] as $column_name => $column_info) {
        $full_column_name = $field_name . '_' . $column_name;
        if (isset($field_handler->aliases[$full_column_name])) {
          $tokens["[{$current_field_id}:{$column_name}]"] = views_raw_sql_get_field_sql($field_handler, $field_handler->aliases[$full_column_name]);
        }
      }
    }
  }
  return $tokens;
}