function views_list_sort_handler_sort_allowed_values::query in Views List Sort 7
Affect the query.
Overrides views_handler_sort::query
File
- views/
handlers/ views_list_sort_handler_sort_allowed_values.inc, line 33
Class
- views_list_sort_handler_sort_allowed_values
- Allowed values sort handler.
Code
function query() {
// Skip if disabled.
if (!$this->options['allowed_values']) {
return;
}
// Get database connection.
$target = !empty($this->query->options) ? 'slave' : 'default';
$key = isset($this->view->base_database) ? $this->view->base_database : 'default';
$connection = Database::getConnection($target, $key);
// Build sanitized list of keys from field's allowed values.
$keys = array();
$allowed_values = list_allowed_values(field_info_field($this->definition['field_name']));
foreach ($allowed_values as $key => $value) {
$keys[] = $connection
->quote($key);
}
// Add order by expression.
$this
->ensure_my_table();
$expression = "FIELD({$this->table_alias}.{$this->real_field}, " . join(', ', $keys) . ")";
$this->query
->add_orderby(NULL, NULL, $this->options['order'], $expression);
}