diff --git a/framework/ActiveSync/lib/Horde/ActiveSync/Message/Base.php b/framework/ActiveSync/lib/Horde/ActiveSync/Message/Base.php index 7a234005c68..03054d62140 100644 --- a/framework/ActiveSync/lib/Horde/ActiveSync/Message/Base.php +++ b/framework/ActiveSync/lib/Horde/ActiveSync/Message/Base.php @@ -563,15 +563,17 @@ protected function _formatDate(Horde_Date $dt, $type) * * @param string $ts The timestamp * - * @return Horde_Date The Horde_Date + * @return Horde_Date|boolean The Horde_Date or false if unable to decode. */ protected function _parseDate($ts) { if (preg_match("/(\d{4})[^0-9]*(\d{2})[^0-9]*(\d{2})(T(\d{2})[^0-9]*(\d{2})[^0-9]*(\d{2})(.\d+)?Z){0,1}$/", $ts, $matches)) { - return new Horde_Date($ts); + try { + return new Horde_Date($ts); + } catch (Horde_Date_Exception $e) {} } - throw new Horde_ActiveSync_Exception('Invalid date format'); + return false; } /** diff --git a/framework/ActiveSync/lib/Horde/ActiveSync/Message/Contact.php b/framework/ActiveSync/lib/Horde/ActiveSync/Message/Contact.php index c791dd1f59c..3a95c4381a3 100644 --- a/framework/ActiveSync/lib/Horde/ActiveSync/Message/Contact.php +++ b/framework/ActiveSync/lib/Horde/ActiveSync/Message/Contact.php @@ -394,11 +394,13 @@ protected function _checkSendEmpty($tag) * * @param string $ts The timestamp * - * @return Horde_Date The Horde_Date object, in UTC. + * @return Horde_Date|boolean The Horde_Date object (UTC) or false if + * unable to parse the date. */ protected function _parseDate($ts) { $date = parent::_parseDate($ts); + // Since some clients send the date as YYYY-MM-DD only, the best we can // do is assume that it is in the same timezone as the user's default // timezone - so convert it to UTC and be done with it.