forked from jreinke/magento-elasticsearch
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathGeoBoundingBox.php
executable file
·44 lines (39 loc) · 1.28 KB
/
GeoBoundingBox.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
/**
* Geo bounding box filter
*
* @uses Elastica_Query_Abstract
* @category Xodoa
* @package Elastica
* @author Fabian Vogler <fabian@equivalence.ch>
* @link http://www.elasticsearch.com/docs/elasticsearch/rest_api/query_dsl/geo_bounding_box_filter/
*/
class Elastica_Filter_GeoBoundingBox extends Elastica_Filter_Abstract {
/**
* Construct GeoBoundingBox filter
*
* @param string $key Key
* @param array $coordinates Array with top left coordinate as first and bottom right coordinate as second element
*/
public function __construct($key, array $coordinates) {
$this->addCoordinates($key, $coordinates);
}
/**
* Add coordinates
*
* @param string $key Key
* @param array $coordinates Array with top left coordinate as first and bottom right coordinate as second element
* @throws Elastica_Exception_Invalid If $coordinates doesn't have two elements
* @return Elastica_Filter_GeoBoundingBox Current object
*/
public function addCoordinates($key, array $coordinates) {
if (!isset($coordinates[0]) || !isset($coordinates[1])) {
throw new Elastica_Exception_Invalid('expected $coordinates to be an array with two elements');
}
$this->setParam($key, array(
'top_left' => $coordinates[0],
'bottom_right' => $coordinates[1]
));
return $this;
}
}