You are here

function geofield_handler_sort::query in Geofield 7.2

Called to add the sort to a query.

Overrides views_handler_sort::query

File

views/handlers/geofield_handler_sort.inc, line 9
Distance sort implementation.

Class

geofield_handler_sort
@file Distance sort implementation.

Code

function query() {
  $this
    ->ensure_my_table();
  $lat_alias = $this->table_alias . '.' . $this->definition['field_name'] . '_lat';
  $lon_alias = $this->table_alias . '.' . $this->definition['field_name'] . '_lon';
  $proximityPlugin = geofield_proximity_load_plugin($this->options['source']);
  $options = $proximityPlugin
    ->getSourceValue($this);
  if ($options != FALSE) {
    $haversine_options = array(
      'origin_latitude' => $options['latitude'],
      'origin_longitude' => $options['longitude'],
      'destination_latitude' => $lat_alias,
      'destination_longitude' => $lon_alias,
      'earth_radius' => GEOFIELD_KILOMETERS,
    );
    $this->query
      ->add_orderby(NULL, geofield_haversine($haversine_options), $this->options['order'], $this->table_alias . '_geofield_distance');
  }
}