Please find below a revision for productivity/baikal.

As explained in [0], when creating a calendar via the web interface,
Baikal sets cal:calendar-timezone to a timezone string instead of a
VTIMEZONE. This causes an issue when querying events with expanded
recurrences, see [1].

The patch below --proposed in [0], but not yet merged-- fixes this
issue. Tested on my server running Baikal.

Ok?

[0] https://github.com/sabre-io/Baikal/issues/1241
[1] https://github.com/sabre-io/Baikal/issues/1325

Index: Makefile
===================================================================
RCS file: /cvs/ports/productivity/baikal/Makefile,v
diff -u -p -r1.42 Makefile
--- Makefile    25 Dec 2025 08:35:45 -0000      1.42
+++ Makefile    1 Feb 2026 12:24:09 -0000
@@ -2,6 +2,7 @@ COMMENT=        lightweight CalDAV and CardDAV 
 
 VERSION=       0.11.1
 DISTNAME=      baikal-${VERSION}
+REVISION=      0
 SITES=         https://github.com/sabre-io/Baikal/releases/download/${VERSION}/
 DISTFILES=     ${DISTNAME}.zip
 CATEGORIES=    productivity www
Index: patches/patch-vendor_sabre_dav_lib_CalDAV_Plugin_php
===================================================================
RCS file: patches/patch-vendor_sabre_dav_lib_CalDAV_Plugin_php
diff -N patches/patch-vendor_sabre_dav_lib_CalDAV_Plugin_php
--- /dev/null   1 Jan 1970 00:00:00 -0000
+++ patches/patch-vendor_sabre_dav_lib_CalDAV_Plugin_php        1 Feb 2026 
12:24:09 -0000
@@ -0,0 +1,22 @@
+https://github.com/sabre-io/Baikal/issues/1241
+https://github.com/sabre-io/Baikal/issues/1325
+
+Index: vendor/sabre/dav/lib/CalDAV/Plugin.php
+--- vendor/sabre/dav/lib/CalDAV/Plugin.php.orig
++++ vendor/sabre/dav/lib/CalDAV/Plugin.php
+@@ -508,14 +508,7 @@ class Plugin extends DAV\ServerPlugin
+             $tzProp = '{'.self::NS_CALDAV.'}calendar-timezone';
+             $tzResult = $this->server->getProperties($path, [$tzProp]);
+             if (isset($tzResult[$tzProp])) {
+-                // This property contains a VCALENDAR with a single
+-                // VTIMEZONE.
+-                $vtimezoneObj = VObject\Reader::read($tzResult[$tzProp]);
+-                $calendarTimeZone = $vtimezoneObj->VTIMEZONE->getTimeZone();
+-
+-                // Destroy circular references so PHP will garbage collect the
+-                // object.
+-                $vtimezoneObj->destroy();
++                $calendarTimeZone = new DateTimeZone($tzResult[$tzProp]);
+             } else {
+                 // Defaulting to UTC.
+                 $calendarTimeZone = new DateTimeZone('UTC');

Reply via email to