You are here

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