Z-Hub / Z-Push

Home of Z-Push
https://z-push.org
GNU Affero General Public License v3.0
97 stars 47 forks source link

Microsoft timezones don't get parsed properly #39

Closed florisernst closed 11 months ago

florisernst commented 11 months ago

I am using a setup where Z-Push 2.7.1 is the backend to Nextcloud 28 and an IMAP server. Everything is working smoothly, with on exception: some clients seem to create CalDAV entries with Microsoft-specific timezone names (in my case, "W. Europe Standard Time"). These timezones in turn break the timezone parser in lib/utils/timezoneutil.php, line 1316, with the error "Unknown or bad timezone". Would it be possible to implement a fix mapping these Microsoft-names to the proper IANA names, as suggested in this StackOverflow post?

https://stackoverflow.com/questions/27051076/php-convert-timezone-name

Thank you for your great work!

matidau commented 11 months ago

Hi @florisernst, The timezoneutil.php already has some mapping between Microsoft timezones and IANA/PHP. I can see the "W. Europe Standard Time" in the $mstzones array but I don't think this is being used by the function at line 1316. My client apps on android don't seem to be able to set the timezone to W. Europe Standard Time. Do you mind letting me know which apps are causing this for you, so I can test/recreate this?

Thank you for your great work! No problems!

Cheers, Mat

florisernst commented 11 months ago

Thank you for the quick follow-up! I believe the issue comes from Microsoft Exchange: in parallel to my home Nextcloud installation, I am syncing calendars from an Exchange Server through Microsoft Outlook and the CalDavSynchronizer extension. I just tried it by creating appointments with different clients and then downloading the calendar's ICS file in Nextcloud.

The results:

Client TZID
Nextcloud Europe/Berlin
Nine Folders (Android app) Europe/Berlin
Windows Calendar app no TZID, DTSTART and DTEND are postfixed with Z
Exchange web app W. Europe Standard Time
Outlook (Office 365 Desktop) W. Europe Standard Time

So, I believe it is caused by the appointments from the Exchange Server getting sync'ed into Nextcloud through CalDAV and not EAS.

matidau commented 11 months ago

Thanks for the list and testing.

It looks like a number of CalDav providers accept Microsoft timezones, and may or may not allow returning of them, so Z-Push should also allow this.

In the meantime, CalDavSynchronizer extension may be able to be configured to handle timezones a couple of different ways. These might resolve your issue for the time being. https://caldavsynchronizer.org/help/documentation/#Timezone_settings

florisernst commented 11 months ago

I was not aware that I could configure this in CalDavSynchronizer ... works now. Thank you very much, even if it is not (really) a Z-Push issue!

matidau commented 11 months ago

No problems.

If you want this fixed in Z-Push anyway and don't mind testing, feel free to reach out 😊

Cheers, Mat