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);
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