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..8be50eedd76ef --- /dev/null +++ b/apps/dav/lib/Migration/Version1037Date20260302000000.php @@ -0,0 +1,38 @@ +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..9a19615860dde 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 null + $patch = new PropPatch([ + '{http://nextcloud.com/ns}default-alarm' => null + ]); + $this->backend->updateCalendar($calendarId, $patch); + $patch->commit(); + + $calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER); + $this->assertEquals(null, $calendars[0]['{http://nextcloud.com/ns}default-alarm']); + + // Clean up + $this->backend->deleteCalendar($calendars[0]['id'], true); + } }