Skip to content

feat(caldav): allow attendees to add guests to an event - #63167

Open
kesselb wants to merge 1 commit into
masterfrom
invitation-forwarding-by-attendee
Open

feat(caldav): allow attendees to add guests to an event#63167
kesselb wants to merge 1 commit into
masterfrom
invitation-forwarding-by-attendee

Conversation

@kesselb

@kesselb kesselb commented Aug 11, 2026

Copy link
Copy Markdown
Contributor

Summary

UI nextcloud/calendar#8719

Organizers can set X-NC-ALLOW-ATTENDEE-GUESTS to let attendees invite further people. Their reply reports the guests back as X-NC-ADD-GUEST, and the organizer's copy picks them up as regular attendees.

Notes

  • Recurring events are skipped / excluded
  • iMIP wording attributes the change to the organizer

Test cases

  • Organizer (own instance) creates a non-recurring event, sets "Attendees can invite guests", invites A. A opens it, adds G, saves. --> Organizer's copy gains G as attendee; G receives an invitation from the organizer; A's reply carried X-NC-ADD-GUEST.
  • Same event, organizer never touches the toggle. --> A sees no add-guest option. Check the stored object has X-NC-ALLOW-ATTENDEE-GUESTS:FALSE (or absent).
  • Organizer sets "Only you can invite attendees". --> A sees no option.
  • Invite from Google/Outlook/Thunderbird, accept on the test instance. --> No add-guest option (this is the case that motivated the decoupling). Also confirm the organizer-side forwarding select isn't shown on someone else's event.
  • Organizer turns the toggle on for a weekly event, invites A. --> A sees no add-guest option, on the master and on a single occurrence. (Server only reads guests off the master; series-only, so it's hidden.)
  • Toggle guests on, forwarding off — and the reverse. --> Both selects move independently; the years-old party-crasher path still behaves as before when forwarding is on and guests are off.
  • A adds G without answering (stays "Needs action"), saves. --> Organizer still sees A as awaiting a response, and still gets a reminder-worthy RSVP state.

Checklist

AI (if applicable)

  • The content of this PR was partly or fully generated using AI

@kesselb kesselb added this to the Nextcloud 35 milestone Aug 11, 2026
@kesselb kesselb self-assigned this Aug 11, 2026
@kesselb kesselb added enhancement 3. to review Waiting for reviews feature: caldav Related to CalDAV internals AI assisted labels Aug 11, 2026
@kesselb
kesselb requested review from Altahrim, leftybournes, provokateurin and salmart-dev and removed request for a team August 11, 2026 19:24
@kesselb
kesselb requested a balanced review from Copilot August 11, 2026 19:31
Organizers can set X-NC-ALLOW-ATTENDEE-GUESTS to let attendees invite further
people. Their reply reports the guests back as X-NC-ADD-GUEST, and the
organizer's copy picks them up as regular attendees.

Assisted-by: ClaudeCode:claude-opus-5

Signed-off-by: Daniel Kesselberg <mail@danielkesselberg.de>
@kesselb
kesselb force-pushed the invitation-forwarding-by-attendee branch from 7e9e305 to 46b3fa7 Compare August 11, 2026 19:33

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

Adds CalDAV support for organizer-authorized attendee guests.

Changes:

  • Advertises attendee guest capability and registers the new property.
  • Reports and processes attendee-added guests while preserving pending RSVP state.
  • Adds unit coverage for capabilities and scheduling behavior.

Reviewed changes

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

Show a summary per file
File Description
apps/dav/lib/AppInfo/Application.php Registers the guest permission property.
apps/dav/lib/CalDAV/TipBroker.php Implements guest scheduling and RSVP handling.
apps/dav/lib/Capabilities.php Advertises guest support.
apps/dav/tests/unit/CalDAV/TipBrokerTest.php Tests scheduling behavior.
apps/dav/tests/unit/CapabilitiesTest.php Tests capability output.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +149 to +153
if ($instances[$recurId] !== 'NEEDS-ACTION') {
// A reply leaving the attendee at NEEDS-ACTION, for
// example one only forwarding the invitation, is not
// an answer, so keep asking for one.
unset($attendee['RSVP']);
if ($commonName !== null) {
$parameters['CN'] = $commonName;
}
$vevent->add('ATTENDEE', $href, $parameters);
@nextcloud-bot nextcloud-bot mentioned this pull request Aug 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

3. to review Waiting for reviews AI assisted enhancement feature: caldav Related to CalDAV internals

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants