/**
* Geolocation
*
+ * @var arary
*/
- public $geoLocation = null;
+ protected $_geoLocation;
/**
* Whether this is the event on the first day of a multi-day event.
if (!is_null($eventObject)) {
$this->fromDriver($eventObject);
-
- /* Get geolocation data */
- if ($gDriver = Kronolith::getGeoDriver()) {
- try {
- $this->geoLocation = $gDriver->getLocation($this->id);
- } catch (Exception $e) {
- }
- }
}
}
return $this->{'_' . $name};
case 'tags':
return $this->getTags();
+ case 'geoLocation':
+ return $this->getGeolocation();
}
+
$trace = debug_backtrace();
trigger_error('Undefined property via __set(): ' . $name
. ' in ' . $trace[0]['file']
$this->_tags = Horde_Util::getFormData('tags', $this->tags);
// Geolocation
- $this->geoLocation = array('lat' => Horde_Util::getFormData('lat'),
- 'lon' => Horde_Util::getFormData('lon'));
+ $this->setGeoLocation(array('lat' => Horde_Util::getFormData('lat'),
+ 'lon' => Horde_Util::getFormData('lon')));
$this->initialized = true;
}
return $this->_tags;
}
+ /**
+ * Setter for geo data
+ *
+ * @param array $data An array of lat/lng data.
+ */
+ public function setGeoLocation($data)
+ {
+ $this->_geoLocation = $data;
+ }
+
+ /**
+ * Getter for geo data
+ *
+ * @return array An array of lat/lng data.
+ */
+ public function getGeolocation()
+ {
+ /* Get geolocation data */
+ if (($gDriver = Kronolith::getGeoDriver()) && !isset($this->_geoLocation)) {
+ try {
+ $this->_geoLocation = $gDriver->getLocation($this->id);
+ } catch (Exception $e) {}
+ }
+
+ return $this->_geoLocation;
+ }
+
private function _formIDEncode($id)
{
return str_replace(array('[', ']'),
{
/* First make sure it doesn't already exist */
$sql = 'SELECT COUNT(*) FROM kronolith_events_geo WHERE event_id = ?';
+ Horde::logMessage(sprintf('Kronolith_Geo_Mysql::setLocation(): user = "%s"; query = "%s"; values = "%s"',
+ Horde_Auth::getAuth(), $sql, $event_id), 'DEBUG');
$count = $this->_db->getOne($sql, array($event_id));
if ($count instanceof PEAR_Error) {
Horde::logMessage($count, 'ERR');
} else {
$sql = sprintf('INSERT into kronolith_events_geo (event_id, event_coordinates) VALUES(?, GeomFromText(\'POINT(%F %F)\'))', $point['lat'], $point['lon']);
}
+ Horde::logMessage(sprintf('Kronolith_Geo_Mysql::setLocation(): user = "%s"; query = "%s"; values = "%s"',
+ Horde_Auth::getAuth(), $sql, $event_id), 'DEBUG');
$result = $this->_write_db->query($sql, array($event_id));
if ($result instanceof PEAR_Error) {
Horde::logMessage($result, 'ERR');
public function getLocation($event_id)
{
$sql = 'SELECT x(event_coordinates) as lat, y(event_coordinates) as lon FROM kronolith_events_geo WHERE event_id = ?';
+ Horde::logMessage(sprintf('Kronolith_Geo_Mysql::getLocation(): user = "%s"; query = "%s"; values = "%s"',
+ Horde_Auth::getAuth(), $sql, $event_id), 'DEBUG');
$result = $this->_db->getRow($sql, array($event_id), DB_FETCHMODE_ASSOC);
if ($result instanceof PEAR_Error) {
Horde::logMessage($result, 'ERR');
. "GLength(LINESTRINGFromWKB(LineString(event_coordinates, GeomFromText('POINT(" . (float)$point['lat'] . " " . (float)$point['lon'] . ")')))) * ? as distance, "
. "x(event_coordinates) as lat, y(event_coordinates) as lon FROM kronolith_events_geo HAVING distance < ? ORDER BY distance ASC LIMIT ?";
+ Horde::logMessage(sprintf('Kronolith_Geo_Mysql::search(): user = "%s"; query = "%s"; values = "%s"',
+ Horde_Auth::getAuth(), $sql, print_r($params, true)), 'DEBUG');
+
$results = $this->_db->getAssoc($sql, false, $params, DB_FETCHMODE_ASSOC);
if ($results instanceof PEAR_Error) {
Horde::logMessage($results, 'ERR');
{
/* First make sure it doesn't already exist */
$sql = 'SELECT COUNT(*) FROM kronolith_events_geo WHERE event_id = ?';
+ Horde::logMessage(sprintf('Kronolith_Geo_Sql::setLocation(): user = "%s"; query = "%s"; values = "%s"',
+ Horde_Auth::getAuth(), $sql, $event_id), 'DEBUG');
$count = $this->_db->getOne($sql, array($event_id));
if ($count instanceof PEAR_Error) {
Horde::logMessage($count, 'ERR');
} else {
$sql = 'INSERT into kronolith_events_geo (event_lat, event_lon, event_id) VALUES(?, ?, ?)';
}
+ Horde::logMessage(sprintf('Kronolith_Geo_Sql::setLocation(): user = "%s"; query = "%s"; values = "%s"',
+ Horde_Auth::getAuth(), $sql, print_r($params, true)), 'DEBUG');
$result = $this->_write_db->query($sql, $params);
if ($result instanceof PEAR_Error) {
Horde::logMessage($result, 'ERR');
public function getLocation($event_id)
{
$sql = 'SELECT event_lat as lat, event_lon as lon FROM kronolith_events_geo WHERE event_id = ?';
+ Horde::logMessage(sprintf('Kronolith_Geo_Sql::getLocation(): user = "%s"; query = "%s"; values = "%s"',
+ Horde_Auth::getAuth(), $sql, $event_id), 'DEBUG');
$result = $this->_db->getRow($sql, array($event_id), DB_FETCHMODE_ASSOC);
if ($result instanceof PEAR_Error) {
Horde::logMessage($result, 'ERR');
public function deleteLocation($event_id)
{
$sql = 'DELETE FROM kronolith_events_geo WHERE event_id = ?';
+ Horde::logMessage(sprintf('Kronolith_Geo_Sql::deleteLocation(): user = "%s"; query = "%s"; values = "%s"',
+ Horde_Auth::getAuth(), $sql, $event_id), 'DEBUG');
$result = $this->_write_db->query($sql, array($event_id));
if ($result instanceof PEAR_Error) {
Horde::logMessage($result, 'ERR');
$to->description = $from->description;
$to->url = $from->url;
$to->setTags($from->tags);
- $to->geoLocation = $from->geoLocation;
+ $to->setGeoLocation($from->geoLocation);
$to->first = $from ->first;
$to->last = $from->last;
$to->start = $from->start;