function views_autocomplete_filter in Views Autocomplete Filters 6.2
Same name and namespace in other branches
- 6.3 views_autocomplete_filters.inc \views_autocomplete_filter()
- 6 views_autocomplete_filters.inc \views_autocomplete_filter()
- 7 views_autocomplete_filters.inc \views_autocomplete_filter()
Menu callback; Retrieve a pipe delimited string of autocomplete suggestions.
1 string reference to 'views_autocomplete_filter'
- views_autocomplete_filters_menu in ./
views_autocomplete_filters.module - Implementation of hook_menu().
File
- ./
views_autocomplete_filters.inc, line 11 - Common functions for Autocomplete Filters module.
Code
function views_autocomplete_filter($field_name = NULL, $view_name, $view_display, $string = '') {
static $autocomplete_filter_results;
$results_id = $field_name . '_' . $view_name . '_' . $view_display . '_' . $string;
if (isset($autocomplete_filter_results[$results_id])) {
drupal_json($autocomplete_filter_results[$results_id]);
return;
}
$matches = array();
//$view_args = array();
$view = views_get_view($view_name);
$view
->set_display($view_display);
$view->display_handler
->set_option('items_per_page', 0);
$currentview = $view->display[$view_display];
// exposed form field name
$field_filter = $currentview->handler->options['filters'][$field_name];
// assign string value to the exposed text filter
$view->exposed_input[$field_filter['expose']['identifier']] = $string;
$view
->execute($view->current_display);
$currentview = $view->display[$view_display];
// views field handler data
$field = $currentview->handler->handlers['field'][$field_name];
$field_alias = $field->field_alias;
//print_r($view);
foreach ($view->result as $id => $row) {
// Add a class wrapper for a few required CSS overrides.
if (!empty($row->{$field_alias})) {
$matches[$row->{$field_alias}] = '<div class="reference-autocomplete">' . $row->{$field_alias} . '</div>';
}
}
if (!empty($matches)) {
$autocomplete_filter_results[$results_id] = $matches;
}
elseif (!empty($view->result)) {
$matches[''] = '<div class="reference-autocomplete">' . t('The %field field of this filter should be present also in the result (could be excluded from display).', array(
'%field' => $field_filter['expose']['label'],
)) . '</div>';
}
else {
$matches[''] = '<div class="reference-autocomplete">' . t('The %string return no results. Please try something else.', array(
'%string' => $string,
)) . '</div>';
}
drupal_json($matches);
}