function search_api_sorts_search_api_query_alter in Search API sorts 7
Implements hook_search_api_query_alter().
1 string reference to 'search_api_sorts_search_api_query_alter'
- search_api_sorts_block_search_sorts_view in ./
search_api_sorts.module - View the "Search sorts" block.
File
- ./
search_api_sorts.module, line 327 - Create sort options for search queries executed via the Search API.
Code
function search_api_sorts_search_api_query_alter(SearchApiQueryInterface $query) {
if (!user_access('use search_api_sorts')) {
return;
}
// There's already an existing sort, so abort!
$existing = $query
->getSort();
if (!empty($existing)) {
return;
}
$search_sorts = search_api_sorts_search_sorts($query
->getIndex()->machine_name);
if (empty($search_sorts)) {
return;
}
$default_sort = _search_api_sorts_get_default_sort($search_sorts, $query
->getKeys());
// Alter sort field and sort order.
$sort = $default_sort->field;
$params = drupal_get_query_parameters($_GET, array(
'q',
'page',
));
if (isset($params['sort']) && !empty($params['sort'])) {
$sort = $params['sort'];
}
$order = $default_sort->default_order;
if (isset($params['order']) && !empty($params['order'])) {
$order = $params['order'];
}
if (!empty($order) && !empty($sort)) {
$query
->sort($sort, $order);
}
// Static save current search query.
$_query =& drupal_static(__FUNCTION__, array());
$_query = $query;
}