You are here

public function GeoBoundaryArgument::query in Geolocation Field 8.3

Set up the query for this argument.

The argument sent may be found at $this->argument.

Overrides BoundaryArgument::query

File

modules/geolocation_geometry/src/Plugin/views/argument/GeoBoundaryArgument.php, line 26

Class

GeoBoundaryArgument
Argument handler for geolocation boundary.

Namespace

Drupal\geolocation_geometry\Plugin\views\argument

Code

public function query($group_by = FALSE) {
  $values = $this
    ->getParsedBoundary();
  if (!$this->query instanceof Sql) {
    return;
  }
  if (empty($values)) {
    return;
  }

  // Get the field alias.
  $lat_north_east = $values['lat_north_east'];
  $lng_north_east = $values['lng_north_east'];
  $lat_south_west = $values['lat_south_west'];
  $lng_south_west = $values['lng_south_west'];
  if (!is_numeric($lat_north_east) || !is_numeric($lng_north_east) || !is_numeric($lat_south_west) || !is_numeric($lng_south_west)) {
    return;
  }
  $placeholder = $this
    ->placeholder() . '_boundary_geojson';
  $this->query
    ->addWhereExpression($group_by, self::getGeometryBoundaryQueryFragment($this
    ->ensureMyTable(), $this->realField, $placeholder), self::getGeometryBoundaryQueryValue($placeholder, $lat_north_east, $lng_north_east, $lat_south_west, $lng_south_west));
}