From 36a3ec75c525d2c73728af8e6aaf6bfc5db42d17 Mon Sep 17 00:00:00 2001 From: Anna Larch Date: Wed, 11 Feb 2026 13:59:37 +0100 Subject: [PATCH 1/3] feat: make timezone service public Signed-off-by: Anna Larch --- apps/dav/lib/AppInfo/Application.php | 15 +++++++++++++++ apps/dav/lib/CalDAV/TimezoneService.php | 3 ++- lib/public/Calendar/ITimezoneService.php | 17 +++++++++++++++++ 3 files changed, 34 insertions(+), 1 deletion(-) create mode 100644 lib/public/Calendar/ITimezoneService.php diff --git a/apps/dav/lib/AppInfo/Application.php b/apps/dav/lib/AppInfo/Application.php index f4b590a92808c..c4145bbf9cb25 100644 --- a/apps/dav/lib/AppInfo/Application.php +++ b/apps/dav/lib/AppInfo/Application.php @@ -19,11 +19,13 @@ use OCA\DAV\CalDAV\Reminder\NotificationProvider\PushProvider; use OCA\DAV\CalDAV\Reminder\NotificationProviderManager; use OCA\DAV\CalDAV\Reminder\Notifier as NotifierCalDAV; +use OCA\DAV\CalDAV\TimezoneService; use OCA\DAV\Capabilities; use OCA\DAV\CardDAV\ContactsManager; use OCA\DAV\CardDAV\Notification\Notifier as NotifierCardDAV; use OCA\DAV\CardDAV\SyncService; use OCA\DAV\ConfigLexicon; +use OCA\DAV\Db\PropertyMapper; use OCA\DAV\Events\AddressBookCreatedEvent; use OCA\DAV\Events\AddressBookDeletedEvent; use OCA\DAV\Events\AddressBookShareUpdatedEvent; @@ -82,14 +84,18 @@ use OCP\Calendar\Events\CalendarObjectMovedToTrashEvent; use OCP\Calendar\Events\CalendarObjectRestoredEvent; use OCP\Calendar\Events\CalendarObjectUpdatedEvent; +use OCP\Calendar\IManager; use OCP\Calendar\IManager as ICalendarManager; +use OCP\Calendar\ITimezoneService; use OCP\Config\BeforePreferenceDeletedEvent; use OCP\Config\BeforePreferenceSetEvent; +use OCP\Config\IUserConfig; use OCP\Contacts\IManager as IContactsManager; use OCP\DB\Events\AddMissingIndicesEvent; use OCP\Federation\Events\TrustedServerRemovedEvent; use OCP\Federation\ICloudFederationProviderManager; use OCP\Group\Events\GroupDeletedEvent; +use OCP\IConfig; use OCP\IURLGenerator; use OCP\IUserSession; use OCP\Server; @@ -233,6 +239,15 @@ public function register(IRegistrationContext $context): void { $context->registerEventListener(DeclarativeSettingsSetValueEvent::class, DavAdminSettingsListener::class); $context->registerConfigLexicon(ConfigLexicon::class); + + $context->registerService(ITimezoneService::class, function (ContainerInterface $c) { + return new TimezoneService( + $c->get(IConfig::class), + $c->get(IUserConfig::class), + $c->get(PropertyMapper::class), + $c->get(ICalendarManager::class), + ); + }); } public function boot(IBootContext $context): void { diff --git a/apps/dav/lib/CalDAV/TimezoneService.php b/apps/dav/lib/CalDAV/TimezoneService.php index 54c4360d08253..2ba9d79f8adf9 100644 --- a/apps/dav/lib/CalDAV/TimezoneService.php +++ b/apps/dav/lib/CalDAV/TimezoneService.php @@ -12,6 +12,7 @@ use OCA\DAV\Db\PropertyMapper; use OCP\Calendar\ICalendar; use OCP\Calendar\IManager; +use OCP\Calendar\ITimezoneService; use OCP\Config\IUserConfig; use OCP\IConfig; use Sabre\VObject\Component\VCalendar; @@ -19,7 +20,7 @@ use Sabre\VObject\Reader; use function array_reduce; -class TimezoneService { +class TimezoneService implements ITimezoneService { public function __construct( private IConfig $config, diff --git a/lib/public/Calendar/ITimezoneService.php b/lib/public/Calendar/ITimezoneService.php new file mode 100644 index 0000000000000..8dac62f289002 --- /dev/null +++ b/lib/public/Calendar/ITimezoneService.php @@ -0,0 +1,17 @@ + Date: Wed, 11 Feb 2026 14:21:19 +0100 Subject: [PATCH 2/3] fixup! feat: make timezone service public --- apps/dav/lib/AppInfo/Application.php | 1 - lib/public/Calendar/ITimezoneService.php | 6 +++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/dav/lib/AppInfo/Application.php b/apps/dav/lib/AppInfo/Application.php index c4145bbf9cb25..5c8bdf770df77 100644 --- a/apps/dav/lib/AppInfo/Application.php +++ b/apps/dav/lib/AppInfo/Application.php @@ -84,7 +84,6 @@ use OCP\Calendar\Events\CalendarObjectMovedToTrashEvent; use OCP\Calendar\Events\CalendarObjectRestoredEvent; use OCP\Calendar\Events\CalendarObjectUpdatedEvent; -use OCP\Calendar\IManager; use OCP\Calendar\IManager as ICalendarManager; use OCP\Calendar\ITimezoneService; use OCP\Config\BeforePreferenceDeletedEvent; diff --git a/lib/public/Calendar/ITimezoneService.php b/lib/public/Calendar/ITimezoneService.php index 8dac62f289002..7df94c2758420 100644 --- a/lib/public/Calendar/ITimezoneService.php +++ b/lib/public/Calendar/ITimezoneService.php @@ -9,9 +9,13 @@ namespace OCP\Calendar; +/** + * The timezone service can be used to conveniently get a user's timezone string + * + * @since 34.0.0 + */ interface ITimezoneService { public function getUserTimezone(string $userId): ?string; public function getDefaultTimezone(): string; - } From 2cefa792dd52acda6c6bdd241a82fa7d338d7ea0 Mon Sep 17 00:00:00 2001 From: Anna Larch Date: Wed, 11 Feb 2026 14:34:59 +0100 Subject: [PATCH 3/3] fixup! feat: make timezone service public --- lib/composer/composer/autoload_classmap.php | 1 + lib/composer/composer/autoload_static.php | 1 + 2 files changed, 2 insertions(+) diff --git a/lib/composer/composer/autoload_classmap.php b/lib/composer/composer/autoload_classmap.php index b2008b286ca25..3bcb89a55a68f 100644 --- a/lib/composer/composer/autoload_classmap.php +++ b/lib/composer/composer/autoload_classmap.php @@ -230,6 +230,7 @@ 'OCP\\Calendar\\IHandleImipMessage' => $baseDir . '/lib/public/Calendar/IHandleImipMessage.php', 'OCP\\Calendar\\IManager' => $baseDir . '/lib/public/Calendar/IManager.php', 'OCP\\Calendar\\IMetadataProvider' => $baseDir . '/lib/public/Calendar/IMetadataProvider.php', + 'OCP\\Calendar\\ITimezoneService' => $baseDir . '/lib/public/Calendar/ITimezoneService.php', 'OCP\\Calendar\\Resource\\IBackend' => $baseDir . '/lib/public/Calendar/Resource/IBackend.php', 'OCP\\Calendar\\Resource\\IManager' => $baseDir . '/lib/public/Calendar/Resource/IManager.php', 'OCP\\Calendar\\Resource\\IResource' => $baseDir . '/lib/public/Calendar/Resource/IResource.php', diff --git a/lib/composer/composer/autoload_static.php b/lib/composer/composer/autoload_static.php index fb4a73103f5b3..891f6747a05de 100644 --- a/lib/composer/composer/autoload_static.php +++ b/lib/composer/composer/autoload_static.php @@ -271,6 +271,7 @@ class ComposerStaticInit749170dad3f5e7f9ca158f5a9f04f6a2 'OCP\\Calendar\\IHandleImipMessage' => __DIR__ . '/../../..' . '/lib/public/Calendar/IHandleImipMessage.php', 'OCP\\Calendar\\IManager' => __DIR__ . '/../../..' . '/lib/public/Calendar/IManager.php', 'OCP\\Calendar\\IMetadataProvider' => __DIR__ . '/../../..' . '/lib/public/Calendar/IMetadataProvider.php', + 'OCP\\Calendar\\ITimezoneService' => __DIR__ . '/../../..' . '/lib/public/Calendar/ITimezoneService.php', 'OCP\\Calendar\\Resource\\IBackend' => __DIR__ . '/../../..' . '/lib/public/Calendar/Resource/IBackend.php', 'OCP\\Calendar\\Resource\\IManager' => __DIR__ . '/../../..' . '/lib/public/Calendar/Resource/IManager.php', 'OCP\\Calendar\\Resource\\IResource' => __DIR__ . '/../../..' . '/lib/public/Calendar/Resource/IResource.php',