Skip to content

Improve date handling in getDate method#15

Merged
ralflang merged 1 commit into
FRAMEWORK_6_0from
TDannhauer-patch-1
Mar 20, 2026
Merged

Improve date handling in getDate method#15
ralflang merged 1 commit into
FRAMEWORK_6_0from
TDannhauer-patch-1

Conversation

@TDannhauer
Copy link
Copy Markdown
Contributor

Handle Unix timestamp strings in getDate method.

Handle Unix timestamp strings in getDate method.
@TDannhauer TDannhauer requested review from amulet1 and ralflang March 19, 2026 20:58
@TDannhauer
Copy link
Copy Markdown
Contributor Author

the underlying error was:

2026-03-19T21:49:00+01:00 ERR: HORDE Returning HTTP 500 while handling Sync command. Error is: Zeitformat (1773944669) nicht erkannt [pid 1215731 on line 165 of "horde-deployment/vendor/horde/horde/rpc.php"]
2026-03-19T21:49:00+01:00 ERR: HORDE Error in communicating with ActiveSync server: Zeitformat (1773944669) nicht erkannt [pid 1215731 on line 166 of "horde-deployment/vendor/horde/rpc/lib/Horde/Rpc/ActiveSync.php"]
2026-03-19T21:49:00+01:00 ERR: HORDE 1. require_once() horde-deployment/web/horde/rpc.php:3
2. Horde_Rpc_ActiveSync->getResponse() horde-deployment/vendor/horde/horde/rpc.php:165
3. Horde_ActiveSync->handleRequest() horde-deployment/vendor/horde/rpc/lib/Horde/Rpc/ActiveSync.php:144
4. Horde_ActiveSync_Request_Base->handle() horde-deployment/vendor/horde/activesync/lib/Horde/ActiveSync.php:868
5. Horde_ActiveSync_Request_Sync->_handle() horde-deployment/vendor/horde/activesync/lib/Horde/ActiveSync/Request/Base.php:250
6. Horde_ActiveSync_Connector_Exporter_Sync->sendNextChange() horde-deployment/vendor/horde/activesync/lib/Horde/ActiveSync/Request/Sync.php:461
7. Horde_ActiveSync_Connector_Exporter_Sync->_sendNextChange() horde-deployment/vendor/horde/activesync/lib/Horde/ActiveSync/Connector/Exporter/Sync.php:62
8. Horde_Core_ActiveSync_Driver->getMessage() horde-deployment/vendor/horde/activesync/lib/Horde/ActiveSync/Connector/Exporter/Sync.php:480
9. Horde_ActiveSync_Imap_Adapter->getMessages() horde-deployment/vendor/horde/core/lib/Horde/Core/ActiveSync/Driver.php:1538
10. Horde_ActiveSync_Imap_Adapter->_buildMailMessage() horde-deployment/vendor/horde/activesync/lib/Horde/ActiveSync/Imap/Adapter.php:423
11. Horde_ActiveSync_Imap_EasMessageBuilder->getMessageObject() horde-deployment/vendor/horde/activesync/lib/Horde/ActiveSync/Imap/Adapter.php:826
12. Horde_ActiveSync_Imap_EasMessageBuilder->_populateObject() horde-deployment/vendor/horde/activesync/lib/Horde/ActiveSync/Imap/EasMessageBuilder.php:104
13. Horde_ActiveSync_Imap_EasMessageBuilder->_setHeaderProperties() horde-deployment/vendor/horde/activesync/lib/Horde/ActiveSync/Imap/EasMessageBuilder.php:138
14. Horde_ActiveSync_Imap_Message->getDate() horde-deployment/vendor/horde/activesync/lib/Horde/ActiveSync/Imap/EasMessageBuilder.php:221
15. Horde_Date->__construct() horde-deployment/vendor/horde/activesync/lib/Horde/ActiveSync/Imap/Message.php:744
[pid 1215731 on line 166 of "horde-deployment/vendor/horde/rpc/lib/Horde/Rpc/ActiveSync.php"]
2026-03-19T21:49:00+01:00 ERR: HORDE Buffer contents: [pid 1215731 on line 166 of "horde-deployment/vendor/horde/rpc/lib/Horde/Rpc/ActiveSync.php"]

@TDannhauer
Copy link
Copy Markdown
Contributor Author

alternative is to pimp dates c'tor:

if (is_string($date)) {
$date = trim($date, '"');
// Accept Unix timestamps passed as numeric strings.
if (preg_match('/^-?\d+$/', $date)) {
$date = (int)$date;
}
}

@ralflang ralflang merged commit 1b1063d into FRAMEWORK_6_0 Mar 20, 2026
0 of 8 checks passed
@ralflang
Copy link
Copy Markdown
Member

alternative is to pimp dates c'tor:

if (is_string($date)) { $date = trim($date, '"'); // Accept Unix timestamps passed as numeric strings. if (preg_match('/^-?\d+$/', $date)) { $date = (int)$date; } }

No, that's broken behaviour - ints are supposedly unix timestamps, '20010203040506' should NOT be treated the same way.

I can limit "strings are timestamps" to (optional -) + exactly 11 digit chars and still we won't be too happy with it.

Lesson learned: Constructors should eat typed objects but we will not purposefully change Horde_Date in lib/ now. Going forward, best feed DateTimeInterface objects into Horde_Date (if feasible, beware of timezones) or cast to int when you are sure it's a timestamp.

ralflang added a commit to horde/Date that referenced this pull request Mar 20, 2026
…s unix timestamps, otherwise delegate to DateTime.

Also relates to #6 fix
ralflang added a commit to horde/Date that referenced this pull request Mar 20, 2026
Release version 3.0.0-beta7

fix: Address horde/ActiveSync#15 - allow some timestamp-ish strings as unix timestamps, otherwise delegate to DateTime.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants