Skip to content

Commit f9a96c1

Browse files
feat: default full / part day alarm
Signed-off-by: SebastianKrupinski <krupinskis05@gmail.com>
1 parent e0cc023 commit f9a96c1

6 files changed

Lines changed: 75 additions & 15 deletions

File tree

apps/dav/appinfo/info.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<name>WebDAV</name>
1111
<summary>WebDAV endpoint</summary>
1212
<description>WebDAV endpoint</description>
13-
<version>1.38.0</version>
13+
<version>1.39.0</version>
1414
<licence>agpl</licence>
1515
<author>owncloud.org</author>
1616
<namespace>DAV</namespace>

apps/dav/composer/composer/autoload_classmap.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -391,6 +391,7 @@
391391
'OCA\\DAV\\Migration\\Version1034Date20250813093701' => $baseDir . '/../lib/Migration/Version1034Date20250813093701.php',
392392
'OCA\\DAV\\Migration\\Version1036Date20251202000000' => $baseDir . '/../lib/Migration/Version1036Date20251202000000.php',
393393
'OCA\\DAV\\Migration\\Version1038Date20260302000000' => $baseDir . '/../lib/Migration/Version1038Date20260302000000.php',
394+
'OCA\\DAV\\Migration\\Version1039Date20260408000000' => $baseDir . '/../lib/Migration/Version1039Date20260408000000.php',
394395
'OCA\\DAV\\Model\\ExampleEvent' => $baseDir . '/../lib/Model/ExampleEvent.php',
395396
'OCA\\DAV\\Paginate\\LimitedCopyIterator' => $baseDir . '/../lib/Paginate/LimitedCopyIterator.php',
396397
'OCA\\DAV\\Paginate\\PaginateCache' => $baseDir . '/../lib/Paginate/PaginateCache.php',

apps/dav/composer/composer/autoload_static.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
class ComposerStaticInitDAV
88
{
99
public static $prefixLengthsPsr4 = array (
10-
'O' =>
10+
'O' =>
1111
array (
1212
'OCA\\DAV\\' => 8,
1313
),
1414
);
1515

1616
public static $prefixDirsPsr4 = array (
17-
'OCA\\DAV\\' =>
17+
'OCA\\DAV\\' =>
1818
array (
1919
0 => __DIR__ . '/..' . '/../lib',
2020
),
@@ -406,6 +406,7 @@ class ComposerStaticInitDAV
406406
'OCA\\DAV\\Migration\\Version1034Date20250813093701' => __DIR__ . '/..' . '/../lib/Migration/Version1034Date20250813093701.php',
407407
'OCA\\DAV\\Migration\\Version1036Date20251202000000' => __DIR__ . '/..' . '/../lib/Migration/Version1036Date20251202000000.php',
408408
'OCA\\DAV\\Migration\\Version1038Date20260302000000' => __DIR__ . '/..' . '/../lib/Migration/Version1038Date20260302000000.php',
409+
'OCA\\DAV\\Migration\\Version1039Date20260408000000' => __DIR__ . '/..' . '/../lib/Migration/Version1039Date20260408000000.php',
409410
'OCA\\DAV\\Model\\ExampleEvent' => __DIR__ . '/..' . '/../lib/Model/ExampleEvent.php',
410411
'OCA\\DAV\\Paginate\\LimitedCopyIterator' => __DIR__ . '/..' . '/../lib/Paginate/LimitedCopyIterator.php',
411412
'OCA\\DAV\\Paginate\\PaginateCache' => __DIR__ . '/..' . '/../lib/Paginate/PaginateCache.php',

apps/dav/lib/CalDAV/CalDavBackend.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,8 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription
151151
'{http://apple.com/ns/ical/}calendar-order' => ['calendarorder', 'int'],
152152
'{http://apple.com/ns/ical/}calendar-color' => ['calendarcolor', 'string'],
153153
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_NEXTCLOUD . '}deleted-at' => ['deleted_at', 'int'],
154-
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_NEXTCLOUD . '}default-alarm' => ['default_alarm', 'int'],
154+
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_NEXTCLOUD . '}default-alarm-part-day' => ['default_alarm_pday', 'int'],
155+
'{' . \OCA\DAV\DAV\Sharing\Plugin::NS_NEXTCLOUD . '}default-alarm-full-day' => ['default_alarm_fday', 'int'],
155156
];
156157

157158
/**
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
/**
6+
* SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
7+
* SPDX-License-Identifier: AGPL-3.0-or-later
8+
*/
9+
10+
namespace OCA\DAV\Migration;
11+
12+
use Closure;
13+
use OCP\DB\ISchemaWrapper;
14+
use OCP\DB\Types;
15+
use OCP\Migration\Attributes\AddColumn;
16+
use OCP\Migration\Attributes\ColumnType;
17+
use OCP\Migration\Attributes\DropColumn;
18+
use OCP\Migration\IOutput;
19+
use OCP\Migration\SimpleMigrationStep;
20+
21+
#[DropColumn(table: 'calendars', name: 'default_alarm', description: 'Replaced by default_alarm_pday and default_alarm_fday')]
22+
#[AddColumn(table: 'calendars', name: 'default_alarm_pday', type: ColumnType::INTEGER)]
23+
#[AddColumn(table: 'calendars', name: 'default_alarm_fday', type: ColumnType::INTEGER)]
24+
class Version1039Date20260408000000 extends SimpleMigrationStep {
25+
public function changeSchema(IOutput $output, Closure $schemaClosure, array $options): ?ISchemaWrapper {
26+
/** @var ISchemaWrapper $schema */
27+
$schema = $schemaClosure();
28+
29+
$calendarsTable = $schema->getTable('calendars');
30+
31+
if ($calendarsTable->hasColumn('default_alarm')) {
32+
$calendarsTable->dropColumn('default_alarm');
33+
}
34+
35+
if (!$calendarsTable->hasColumn('default_alarm_pday')) {
36+
$calendarsTable->addColumn('default_alarm_pday', Types::INTEGER, [
37+
'notnull' => false,
38+
'default' => null,
39+
]);
40+
}
41+
42+
if (!$calendarsTable->hasColumn('default_alarm_fday')) {
43+
$calendarsTable->addColumn('default_alarm_fday', Types::INTEGER, [
44+
'notnull' => false,
45+
'default' => null,
46+
]);
47+
}
48+
49+
return $schema;
50+
}
51+
}

apps/dav/tests/unit/CalDAV/CalDavBackendTest.php

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1948,40 +1948,46 @@ public function testUnshare(): void {
19481948

19491949
}
19501950

1951-
public function testDefaultAlarmProperty(): void {
1951+
public function testDefaultAlarmProperties(): void {
19521952
$calendarId = $this->createTestCalendar();
19531953

1954-
// Test setting default alarm property to 15 minutes before (-900 seconds)
1954+
// Test setting both default alarm properties
19551955
$patch = new PropPatch([
1956-
'{http://nextcloud.com/ns}default-alarm' => -900
1956+
'{http://nextcloud.com/ns}default-alarm-part-day' => -900,
1957+
'{http://nextcloud.com/ns}default-alarm-full-day' => -3600,
19571958
]);
19581959
$this->backend->updateCalendar($calendarId, $patch);
19591960
$patch->commit();
19601961

1961-
// Verify the property was set
1962+
// Verify the properties were set
19621963
$calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER);
19631964
$this->assertCount(1, $calendars);
1964-
$this->assertEquals(-900, $calendars[0]['{http://nextcloud.com/ns}default-alarm']);
1965+
$this->assertEquals(-900, $calendars[0]['{http://nextcloud.com/ns}default-alarm-part-day']);
1966+
$this->assertEquals(-3600, $calendars[0]['{http://nextcloud.com/ns}default-alarm-full-day']);
19651967

1966-
// Test updating to a different value (1 day before = -86400 seconds)
1968+
// Test updating to different values
19671969
$patch = new PropPatch([
1968-
'{http://nextcloud.com/ns}default-alarm' => -86400
1970+
'{http://nextcloud.com/ns}default-alarm-part-day' => -86400,
1971+
'{http://nextcloud.com/ns}default-alarm-full-day' => -43200,
19691972
]);
19701973
$this->backend->updateCalendar($calendarId, $patch);
19711974
$patch->commit();
19721975

19731976
$calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER);
1974-
$this->assertEquals(-86400, $calendars[0]['{http://nextcloud.com/ns}default-alarm']);
1977+
$this->assertEquals(-86400, $calendars[0]['{http://nextcloud.com/ns}default-alarm-part-day']);
1978+
$this->assertEquals(-43200, $calendars[0]['{http://nextcloud.com/ns}default-alarm-full-day']);
19751979

1976-
// Test setting to "none"
1980+
// Test setting to null
19771981
$patch = new PropPatch([
1978-
'{http://nextcloud.com/ns}default-alarm' => null
1982+
'{http://nextcloud.com/ns}default-alarm-part-day' => null,
1983+
'{http://nextcloud.com/ns}default-alarm-full-day' => null,
19791984
]);
19801985
$this->backend->updateCalendar($calendarId, $patch);
19811986
$patch->commit();
19821987

19831988
$calendars = $this->backend->getCalendarsForUser(self::UNIT_TEST_USER);
1984-
$this->assertEquals(null, $calendars[0]['{http://nextcloud.com/ns}default-alarm']);
1989+
$this->assertNull($calendars[0]['{http://nextcloud.com/ns}default-alarm-part-day']);
1990+
$this->assertNull($calendars[0]['{http://nextcloud.com/ns}default-alarm-full-day']);
19851991

19861992
// Clean up
19871993
$this->backend->deleteCalendar($calendars[0]['id'], true);

0 commit comments

Comments
 (0)