function views_extra_handlers_query_alter in Extra Views Handlers 7
File
- ./
views_extra_handlers.module, line 60 - Provides a generic but powerful API for web services.
Code
function views_extra_handlers_query_alter($query) {
$view = views_get_current_view();
if (isset($view->field) && !empty($view->field)) {
foreach ($view->field as $field_name => $field_obj) {
$handler = $field_obj->definition['handler'];
if ($handler == "views_extra_handlers_handler_field_query_alter") {
$groupby_remove_arr = explode(",", $field_obj->options['veh_groupby']['veh_remove']);
$groupby_add_arr = explode(",", $field_obj->options['veh_groupby']['veh_add']);
if (isset($query->alterMetaData)) {
if (isset($query->alterMetaData['view'])) {
//Get a list of all 'group by' in the query
$fields =& $query
->getGroupBy();
if (!empty($field_obj->options['veh_groupby']['veh_remove'])) {
foreach ($groupby_remove_arr as $groupby_remove) {
unset($fields[trim($groupby_remove)]);
}
}
if (!empty($field_obj->options['veh_groupby']['veh_add'])) {
foreach ($groupby_add_arr as $groupby_add) {
$query
->groupBy($groupby_add);
}
}
if (!empty($field_obj->options['veh_orderby']['veh_orderby_date'])) {
$date_field_alias = $field_obj->options['veh_orderby']['veh_orderby_date'];
$sort_order =& $query
->getOrderBy();
unset($sort_order[$date_field_alias]);
$sort_order["(CASE WHEN {$date_field_alias} < CURRENT_TIMESTAMP\n THEN 1\n ELSE 0\n END)"] = 'ASC';
$sort_order["(CASE WHEN {$date_field_alias} < CURRENT_TIMESTAMP THEN {$date_field_alias} END)"] = 'DESC';
$sort_order["(CASE WHEN {$date_field_alias} >= CURRENT_TIMESTAMP THEN {$date_field_alias} END)"] = 'ASC';
}
if (!empty($field_obj->options['veh_orderby']['veh_orderby_custom'])) {
$custom_orderby = $field_obj->options['veh_orderby']['veh_orderby_custom'];
$custom_orderby_direction = $field_obj->options['veh_orderby']['veh_orderby_direction'];
$sort_order_custom =& $query
->getOrderBy();
$sort_order_custom[$custom_orderby] = $custom_orderby_direction;
}
}
}
}
}
}
}