You are here

function form_process_autocomplete in Drupal 7

Same name and namespace in other branches
  1. 6 includes/form.inc \form_process_autocomplete()

Process function to prepare autocomplete data.

Parameters

$element: A textfield or other element with a #autocomplete_path.

Return value

array The processed form element.

Related topics

1 string reference to 'form_process_autocomplete'
system_element_info in modules/system/system.module
Implements hook_element_info().

File

includes/form.inc, line 3995
Functions for form and batch generation and processing.

Code

function form_process_autocomplete($element) {
  $element['#autocomplete_input'] = array();
  if ($element['#autocomplete_path'] && drupal_valid_path($element['#autocomplete_path'])) {
    $element['#autocomplete_input']['#id'] = $element['#id'] . '-autocomplete';

    // Force autocomplete to use non-clean URLs since this protects against the
    // browser interpreting the path plus search string as an actual file.
    $current_clean_url = isset($GLOBALS['conf']['clean_url']) ? $GLOBALS['conf']['clean_url'] : NULL;
    $GLOBALS['conf']['clean_url'] = 0;

    // Force the script path to 'index.php', in case the server is not
    // configured to find it automatically. Normally it is the responsibility
    // of the site to do this themselves using hook_url_outbound_alter() (see
    // url()) but since this code is forcing non-clean URLs on sites that don't
    // normally use them, it is done here instead.
    $element['#autocomplete_input']['#url_value'] = url($element['#autocomplete_path'], array(
      'absolute' => TRUE,
      'script' => 'index.php',
    ));
    $GLOBALS['conf']['clean_url'] = $current_clean_url;
  }
  return $element;
}