You are here

function weather_search_autocomplete in Weather 7

Same name and namespace in other branches
  1. 6.5 weather.module \weather_search_autocomplete()
  2. 7.3 weather.forms.inc \weather_search_autocomplete()
  3. 7.2 weather.forms.inc \weather_search_autocomplete()

Search for a location or ICAO code matching a partial string.

Parameters

string $input: The partial text to search for.

1 string reference to 'weather_search_autocomplete'
weather_menu in ./weather.module
Implement hook_menu().

File

./weather.forms.inc, line 755
Provide forms for configuration of weather displays.

Code

function weather_search_autocomplete($input) {
  $matches = array();

  // In this query we search for ICAO code, country, and name of locations.
  $sql = db_select('weather_icao')
    ->fields('weather_icao', array(
    'icao',
    'country',
    'name',
  ))
    ->orderBy('name', 'ASC');
  $or = db_or()
    ->where('icao LIKE UPPER(:search)', array(
    ':search' => "%{$input}%",
  ))
    ->where('UPPER(country) LIKE UPPER(:search)', array(
    ':search' => "%{$input}%",
  ))
    ->where('UPPER(name) LIKE UPPER(:search)', array(
    ':search' => "%{$input}%",
  ));
  $sql
    ->condition($or);
  $sql
    ->range(0, 10);
  $result = $sql
    ->execute();
  foreach ($result as $match) {
    $matches[$match->icao] = check_plain(sprintf("%s, %s (%s)", $match->name, $match->country, $match->icao));
  }
  drupal_json_output($matches);
}