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;
}