views_list_sort_handler_sort_allowed_values.inc in Views List Sort 7
File
views/handlers/views_list_sort_handler_sort_allowed_values.inc
View source
<?php
class views_list_sort_handler_sort_allowed_values extends views_handler_sort {
function option_definition() {
$options = parent::option_definition();
$options['allowed_values'] = array(
'default' => 0,
);
return $options;
}
function options_form(&$form, &$form_state) {
parent::options_form($form, $form_state);
$form['allowed_values'] = array(
'#type' => 'radios',
'#title' => t('Sort by allowed values'),
'#options' => array(
t('No'),
t('Yes'),
),
'#default_value' => $this->options['allowed_values'],
);
}
function query() {
if (!$this->options['allowed_values']) {
return;
}
$target = !empty($this->query->options) ? 'slave' : 'default';
$key = isset($this->view->base_database) ? $this->view->base_database : 'default';
$connection = Database::getConnection($target, $key);
$keys = array();
$allowed_values = list_allowed_values(field_info_field($this->definition['field_name']));
foreach ($allowed_values as $key => $value) {
$keys[] = $connection
->quote($key);
}
$this
->ensure_my_table();
$expression = "FIELD({$this->table_alias}.{$this->real_field}, " . join(', ', $keys) . ")";
$this->query
->add_orderby(NULL, NULL, $this->options['order'], $expression);
}
}