From 938554c8080ad602d854fa4636ae34f8d6909a7b Mon Sep 17 00:00:00 2001 From: Grigory Vodyanov Date: Mon, 2 Mar 2026 22:59:50 +0100 Subject: [PATCH 1/3] feat: add default reminder setting caldav Signed-off-by: Grigory Vodyanov --- .../composer/composer/autoload_classmap.php | 1 + .../dav/composer/composer/autoload_static.php | 5 ++- apps/dav/lib/CalDAV/CalDavBackend.php | 1 + .../Version1037Date20260302000000.php | 39 +++++++++++++++++++ .../tests/unit/CalDAV/CalDavBackendTest.php | 39 +++++++++++++++++++ lib/composer/composer/autoload_static.php | 12 +++--- 6 files changed, 89 insertions(+), 8 deletions(-) create mode 100644 apps/dav/lib/Migration/Version1037Date20260302000000.php diff --git a/apps/dav/composer/composer/autoload_classmap.php b/apps/dav/composer/composer/autoload_classmap.php index c010a3e98d602..9c6a2e7598f75 100644 --- a/apps/dav/composer/composer/autoload_classmap.php +++ b/apps/dav/composer/composer/autoload_classmap.php @@ -389,6 +389,7 @@ 'OCA\\DAV\\Migration\\Version1034Date20250605132605' => $baseDir . '/../lib/Migration/Version1034Date20250605132605.php', 'OCA\\DAV\\Migration\\Version1034Date20250813093701' => $baseDir . '/../lib/Migration/Version1034Date20250813093701.php', 'OCA\\DAV\\Migration\\Version1036Date20251202000000' => $baseDir . '/../lib/Migration/Version1036Date20251202000000.php', + 'OCA\\DAV\\Migration\\Version1037Date20260302000000' => $baseDir . '/../lib/Migration/Version1037Date20260302000000.php', 'OCA\\DAV\\Model\\ExampleEvent' => $baseDir . '/../lib/Model/ExampleEvent.php', 'OCA\\DAV\\Paginate\\LimitedCopyIterator' => $baseDir . '/../lib/Paginate/LimitedCopyIterator.php', 'OCA\\DAV\\Paginate\\PaginateCache' => $baseDir . '/../lib/Paginate/PaginateCache.php', diff --git a/apps/dav/composer/composer/autoload_static.php b/apps/dav/composer/composer/autoload_static.php index bdb965aab3ee0..f4c4c05170b39 100644 --- a/apps/dav/composer/composer/autoload_static.php +++ b/apps/dav/composer/composer/autoload_static.php @@ -7,14 +7,14 @@ class ComposerStaticInitDAV { public static $prefixLengthsPsr4 = array ( - 'O' => + 'O' => array ( 'OCA\\DAV\\' => 8, ), ); public static $prefixDirsPsr4 = array ( - 'OCA\\DAV\\' => + 'OCA\\DAV\\' => array ( 0 => __DIR__ . '/..' . '/../lib', ), @@ -404,6 +404,7 @@ class ComposerStaticInitDAV 'OCA\\DAV\\Migration\\Version1034Date20250605132605' => __DIR__ . '/..' . '/../lib/Migration/Version1034Date20250605132605.php', 'OCA\\DAV\\Migration\\Version1034Date20250813093701' => __DIR__ . '/..' . '/../lib/Migration/Version1034Date20250813093701.php', 'OCA\\DAV\\Migration\\Version1036Date20251202000000' => __DIR__ . '/..' . '/../lib/Migration/Version1036Date20251202000000.php', + 'OCA\\DAV\\Migration\\Version1037Date20260302000000' => __DIR__ . '/..' . '/../lib/Migration/Version1037Date20260302000000.php', 'OCA\\DAV\\Model\\ExampleEvent' => __DIR__ . '/..' . '/../lib/Model/ExampleEvent.php', 'OCA\\DAV\\Paginate\\LimitedCopyIterator' => __DIR__ . '/..' . '/../lib/Paginate/LimitedCopyIterator.php', 'OCA\\DAV\\Paginate\\PaginateCache' => __DIR__ . '/..' . '/../lib/Paginate/PaginateCache.php', diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php index 117a79cb0fda5..79bee517befa4 100644 --- a/apps/dav/lib/CalDAV/CalDavBackend.php +++ b/apps/dav/lib/CalDAV/CalDavBackend.php @@ -151,6 +151,7 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription '{http://apple.com/ns/ical/}calendar-order' => ['calendarorder', 'int'], '{http://apple.com/ns/ical/}calendar-color' => ['calendarcolor', 'string'], '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_NEXTCLOUD . '}deleted-at' => ['deleted_at', 'int'], + '{' . \OCA\DAV\DAV\Sharing\Plugin::NS_NEXTCLOUD . '}default-alarm' => ['default_alarm', 'string'], ]; /** diff --git a/apps/dav/lib/Migration/Version1037Date20260302000000.php b/apps/dav/lib/Migration/Version1037Date20260302000000.php new file mode 100644 index 0000000000000..6c5f5f1253860 --- /dev/null +++ b/apps/dav/lib/Migration/Version1037Date20260302000000.php @@ -0,0 +1,39 @@ +getTable('calendars'); + + if (!$calendarsTable->hasColumn('default_alarm')) { + $calendarsTable->addColumn('default_alarm', Types::INTEGER, [ + 'notnull' => false, + 'length' => 10, + 'default' => null, + ]); + } + + return $schema; + } +} + diff --git a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php index 802e73208b0e6..694a552ebe032 100644 --- a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php @@ -1881,4 +1881,43 @@ public function testUnshare(): void { ); } + + public function testDefaultAlarmProperty(): void { + $calendarId = $this->createTestCalendar(); + + // Test setting default alarm property to 15 minutes before (-900 seconds) + $patch = new PropPatch([ + '{http://nextcloud.com/ns}default-alarm' => '-900' + ]); + $this->backend->updateCalendar($calendarId, $patch); + $patch->commit(); + + // Verify the property was set + $calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); + $this->assertCount(1, $calendars); + $this->assertEquals('-900', $calendars[0]['{http://nextcloud.com/ns}default-alarm']); + + // Test updating to a different value (1 day before = -86400 seconds) + $patch = new PropPatch([ + '{http://nextcloud.com/ns}default-alarm' => '-86400' + ]); + $this->backend->updateCalendar($calendarId, $patch); + $patch->commit(); + + $calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); + $this->assertEquals('-86400', $calendars[0]['{http://nextcloud.com/ns}default-alarm']); + + // Test setting to "none" + $patch = new PropPatch([ + '{http://nextcloud.com/ns}default-alarm' => 'none' + ]); + $this->backend->updateCalendar($calendarId, $patch); + $patch->commit(); + + $calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); + $this->assertEquals('none', $calendars[0]['{http://nextcloud.com/ns}default-alarm']); + + // Clean up + $this->backend->deleteCalendar($calendars[0]['id'], true); + } } diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index a752a5dc087ba..339a355d1a738 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -11,32 +11,32 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 ); public static $prefixLengthsPsr4 = array ( - 'O' => + 'O' => array ( 'OC\\Core\\' => 8, 'OC\\' => 3, 'OCP\\' => 4, ), - 'N' => + 'N' => array ( 'NCU\\' => 4, ), ); public static $prefixDirsPsr4 = array ( - 'OC\\Core\\' => + 'OC\\Core\\' => array ( 0 => __DIR__ . '/../../..' . '/core', ), - 'OC\\' => + 'OC\\' => array ( 0 => __DIR__ . '/../../..' . '/lib/private', ), - 'OCP\\' => + 'OCP\\' => array ( 0 => __DIR__ . '/../../..' . '/lib/public', ), - 'NCU\\' => + 'NCU\\' => array ( 0 => __DIR__ . '/../../..' . '/lib/unstable', ), From 8af9f69c731f648179b445d3032e1a405709c403 Mon Sep 17 00:00:00 2001 From: SebastianKrupinski Date: Mon, 9 Mar 2026 10:36:28 -0400 Subject: [PATCH 2/3] fixup! feat: add default reminder setting caldav Signed-off-by: SebastianKrupinski --- .../lib/Migration/Version1037Date20260302000000.php | 1 - lib/composer/composer/autoload_static.php | 12 ++++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/apps/dav/lib/Migration/Version1037Date20260302000000.php b/apps/dav/lib/Migration/Version1037Date20260302000000.php index 6c5f5f1253860..8be50eedd76ef 100644 --- a/apps/dav/lib/Migration/Version1037Date20260302000000.php +++ b/apps/dav/lib/Migration/Version1037Date20260302000000.php @@ -36,4 +36,3 @@ public function changeSchema(IOutput $output, Closure $schemaClosure, array $opt return $schema; } } - diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index 339a355d1a738..a752a5dc087ba 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -11,32 +11,32 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 ); public static $prefixLengthsPsr4 = array ( - 'O' => + 'O' => array ( 'OC\\Core\\' => 8, 'OC\\' => 3, 'OCP\\' => 4, ), - 'N' => + 'N' => array ( 'NCU\\' => 4, ), ); public static $prefixDirsPsr4 = array ( - 'OC\\Core\\' => + 'OC\\Core\\' => array ( 0 => __DIR__ . '/../../..' . '/core', ), - 'OC\\' => + 'OC\\' => array ( 0 => __DIR__ . '/../../..' . '/lib/private', ), - 'OCP\\' => + 'OCP\\' => array ( 0 => __DIR__ . '/../../..' . '/lib/public', ), - 'NCU\\' => + 'NCU\\' => array ( 0 => __DIR__ . '/../../..' . '/lib/unstable', ), From a835bbe1890806d962f1ede6b7d214fcdf106d56 Mon Sep 17 00:00:00 2001 From: Grigory V Date: Mon, 9 Mar 2026 15:39:06 +0100 Subject: [PATCH 3/3] fixup! feat: add default reminder setting caldav --- apps/dav/tests/unit/CalDAV/CalDavBackendTest.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php index 694a552ebe032..9a19615860dde 100644 --- a/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php +++ b/apps/dav/tests/unit/CalDAV/CalDavBackendTest.php @@ -1907,15 +1907,15 @@ public function testDefaultAlarmProperty(): void { $calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); $this->assertEquals('-86400', $calendars[0]['{http://nextcloud.com/ns}default-alarm']); - // Test setting to "none" + // Test setting to null $patch = new PropPatch([ - '{http://nextcloud.com/ns}default-alarm' => 'none' + '{http://nextcloud.com/ns}default-alarm' => null ]); $this->backend->updateCalendar($calendarId, $patch); $patch->commit(); $calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); - $this->assertEquals('none', $calendars[0]['{http://nextcloud.com/ns}default-alarm']); + $this->assertEquals(null, $calendars[0]['{http://nextcloud.com/ns}default-alarm']); // Clean up $this->backend->deleteCalendar($calendars[0]['id'], true);