Skip to content

Enhance iCalendar export and subscription functionality#1545

Open
lucs7 wants to merge 4 commits into
LibreBooking:developfrom
lucs7:feature/ics-sabre
Open

Enhance iCalendar export and subscription functionality#1545
lucs7 wants to merge 4 commits into
LibreBooking:developfrom
lucs7:feature/ics-sabre

Conversation

@lucs7

@lucs7 lucs7 commented Jul 12, 2026

Copy link
Copy Markdown
Collaborator

This pull request implements several improvements to iCalendar (ICS) export and subscription functionality. It implements the use of sabre to create the ics feeds and adds calendar naming capabilities.

Copilot AI review requested due to automatic review settings July 12, 2026 15:57
@lucs7 lucs7 force-pushed the feature/ics-sabre branch from 8abe1be to 45e3d4e Compare July 12, 2026 16:01

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR modernizes LibreBooking’s iCalendar (ICS) export/subscription pipeline by switching serialization from a Smarty template to Sabre\VObject, and adds support for naming exported/subscribed calendars (e.g., schedule/resource/group name or localized “My Calendar”).

Changes:

  • Replace hand-built ICS template rendering with Sabre\VObject-based VCALENDAR/VEVENT/VAlarm generation.
  • Add calendar naming support to subscription/export flow (including resource group name support).
  • Update PHPUnit tests and PHPStan config to accommodate Sabre’s magic property access and new serialization expectations.

Reviewed changes

Copilot reviewed 13 out of 13 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
tpl/Export/ical.tpl Removes the legacy Smarty ICS template now replaced by Sabre serialization.
Pages/Export/CalendarExportDisplay.php Implements Sabre\VObject calendar/event/alarm generation and serialization; supports optional calendar name.
Pages/Export/CalendarSubscriptionPage.php Passes calendar name into the export display renderer.
Pages/Export/SubscriptionPage.php Stores calendar name on subscription pages and exposes setter.
Pages/Export/ICalendarSubscriptionPage.php Extends subscription page interface with calendar name setter.
Presenters/CalendarSubscriptionPresenter.php Determines calendar name (schedule/resource/group/user) and sets it on the page.
lib/Application/Schedule/CalendarSubscriptionService.php Adds resource-group-name lookup support.
lib/Application/Schedule/iCalendarReservationView.php Stops pre-escaping RFC5545 TEXT values; relies on Sabre serialization to escape.
tests/Presenters/CalendarExportPresenterTest.php Updates expectations for raw view values and adds assertions for serialized escaping.
tests/Presenters/CalendarSubscriptionPresenterTest.php Adds assertions that calendar names are set for schedule/resource/user/group subscription flows.
tests/Application/Schedule/CalendarSubscriptionServiceTest.php Adds coverage for resource group name lookup behavior.
phpstan.neon Configures Sabre Node as a universal object crate to avoid false positives on magic ICS properties.
phpstan_next.neon Same PHPStan adjustment for the “next” ruleset.

Comment thread Pages/Export/CalendarExportDisplay.php
Comment thread tests/Presenters/CalendarSubscriptionPresenterTest.php
@lucs7 lucs7 force-pushed the feature/ics-sabre branch from 45e3d4e to 55408f7 Compare July 12, 2026 16:37
@lucs7 lucs7 force-pushed the feature/ics-sabre branch from 55408f7 to 76cca52 Compare July 12, 2026 16:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants