diff --git a/src/app/scripts/php/libs/Filter.class.php b/src/app/scripts/php/libs/Filter.class.php
index 4ac7e205..95ada6e7 100644
--- a/src/app/scripts/php/libs/Filter.class.php
+++ b/src/app/scripts/php/libs/Filter.class.php
@@ -180,6 +180,45 @@ public function lower($name, $than, $orEqual = false) {
$this->greateOrLower($name, $than, $orEqual, "<");
}
+ public function geoContains(callable $template, $latitudeName, $longitudeName) {
+ $parent = $this->current->peek();
+
+ $instance = new FilterModel();
+ $this->current->push($instance);
+ $template();
+ $this->current->pop();
+
+ $area = $instance[0];
+ if (!empty($area)) {
+ $latitudeName = $this->formatColumnName($parent, $latitudeName);
+ $longitudeName = $this->formatColumnName($parent, $longitudeName);
+ $parent[] = "ST_CONTAINS($area, point($latitudeName, $longitudeName))";
+ }
+ }
+
+ public function geoPolygon(callable $template) {
+ $instance = $this->current->peek();
+
+ $parentPoints = $this->points;
+ $this->points = [];
+
+ $template();
+
+ $points = implode(", ", $this->points);
+ if (!empty($points)) {
+ $instance[] = "ST_GEOMFROMTEXT('POLYGON(($points))')";
+ }
+
+ $this->points = $parentPoints;
+ }
+
+ private $points;
+
+ public function geoPoint($latitude, $longitude) {
+ $this->points[] = "$latitude $longitude";
+ }
+
+
public function getProperty($name) {
return $this->instances[$name];
}
diff --git a/src/app/scripts/php/libs/Filter.xml b/src/app/scripts/php/libs/Filter.xml
index 7f533f25..7549546e 100644
--- a/src/app/scripts/php/libs/Filter.xml
+++ b/src/app/scripts/php/libs/Filter.xml
@@ -203,6 +203,45 @@
Zda stejná hodnota má být zahrnuta ve výsledku.
+
+ geoContains
+ geoContains
+ Volání funkce ST_CONTAINS. V těle je možné používat "filter:geoPolygon".
+
+ latitudeName
+ string
+ Název sloupce obsahující "latitude" hodnotu záznamu.
+
+
+
+ longitudeName
+ string
+ Název sloupce obsahující "longitude" hodnotu záznamu.
+
+
+
+
+ geoPolygon
+ geoPolygon
+ Volání funkce POLYGON. V těle je možné používat "filter:geoPoint".
+
+
+ geoPoint
+ geoPoint
+ Přidá do aktuální kolekce points nové souřadnice.
+
+ latitude
+ string
+ Hodnota "latitude".
+
+
+
+ longitude
+ string
+ Hodnota "longitude".
+
+
+
Slouží k získání dříve deklarovaného filtru. Název proměnné odpovídá názvu při deklaraci.