1: <?php
2: /**
3: * Storage driver for Kronolith's Geo location data.
4: *
5: * Copyright 2009-2012 Horde LLC (http://www.horde.org/)
6: *
7: * See the enclosed file COPYING for license information (GPL). If you
8: * did not receive this file, see http://www.horde.org/licenses/gpl.
9: *
10: * @author Michael J. Rubinsky <mrubinsk@horde.org>
11: *
12: * @package Kronolith
13: */
14: abstract class Kronolith_Geo_Base
15: {
16: /**
17: *
18: * @var Horde_Db_Adapter
19: */
20: protected $_db;
21:
22: /**
23: *
24: * @param Horde_Db_Adapter $adapter The Horde_Db adapter
25: *
26: * @return Kronolith_Geo_Base
27: */
28: public function __construct(Horde_Db_Adapter $adapter)
29: {
30: $this->_db = $adapter;
31: }
32:
33: /**
34: * Save location of event to storage
35: *
36: * @param string $event_id The event id
37: * @param array $point Hash containing 'lat' and 'lon' coordinates
38: */
39: abstract public function setLocation($event_id, $point);
40:
41: /**
42: * Retrieve the location of the specified event.
43: *
44: * @param string $event_id The event id
45: *
46: * @return array A hash containing 'lat' and 'lon'
47: */
48: abstract public function getLocation($event_id);
49:
50: /**
51: * Removes the event's location from storage.
52: *
53: * @param string $event_id The event it.
54: */
55: abstract public function deleteLocation($event_id);
56:
57: /**
58: * Search for events close to a given point.
59: *
60: * @param array $criteria An array of:
61: *<pre>
62: * point - lat/lon hash
63: * radius - the radius to search in
64: * limit - limit the number of hits
65: * factor - Conversion factor for miles per distance unit [default is 69].
66: *</pre>
67: *
68: * @return array of event ids with locations near the specified criteria.
69: */
70: abstract public function search($criteria);
71:
72: }