diff --git a/kronolith/lib/Event.php b/kronolith/lib/Event.php index 250867aebb3..37db22c54d1 100644 --- a/kronolith/lib/Event.php +++ b/kronolith/lib/Event.php @@ -1677,8 +1677,14 @@ public function fromASAppointment(Horde_ActiveSync_Message_Appointment $message) } } - if (!$message->isGhosted('location') && - strlen($location = $message->getLocation())) { + // EAS 16 location property is an AirSyncBaseLocation object, not + // a string. + $location = $message->getLocation(); + if (is_object($location)) { + // @todo - maybe build a more complete name based on city/country? + $location = $location->displayname; + } + if (!$message->isGhosted('location') && strlen($location)) { $this->location = $location; } @@ -2037,7 +2043,19 @@ public function toASAppointment(array $options = array()) } else { $message->setBody($this->description); } - $message->setLocation($this->location); + if ($options['protocolversion'] >= Horde_ActiveSync::VERSION_SIXTEEN && !empty($this->location)) { + $message->location = new Horde_ActiveSync_Message_AirSyncBaseLocation( + array( + 'logger' => $GLOBALS['injector']->getInstance('Horde_Log_Logger'), + 'protocolversion' => $options['protocolversion'] + ) + ); + // @todo - worth it to try to get full city/country etc... + // from geotagging service if available?? + $message->location->displayname = $this->location; + } else { + $message->setLocation($this->location); + } } $message->setSubject($this->getTitle());