diff options
author | Anna Larch <anna@nextcloud.com> | 2021-09-01 23:05:41 +0200 |
---|---|---|
committer | backportbot[bot] <backportbot[bot]@users.noreply.github.com> | 2021-09-07 14:08:45 +0000 |
commit | ed2f133c371c3651a926a6c15258bfd4b0ac0a76 (patch) | |
tree | 640d2dd4116a9b0535f507fd091cba11307de46e /apps | |
parent | 9ee93ed0bd98b019433c1af535f8aa0e9248465c (diff) | |
download | nextcloud-server-ed2f133c371c3651a926a6c15258bfd4b0ac0a76.tar.gz nextcloud-server-ed2f133c371c3651a926a6c15258bfd4b0ac0a76.zip |
Send Invitation to Attendees with ROLE=REQ-PARTICIPANT
Signed-off-by: Anna Larch <anna@nextcloud.com>
Diffstat (limited to 'apps')
-rw-r--r-- | apps/dav/lib/CalDAV/Schedule/IMipPlugin.php | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php index 4cdac3cb44f..d4462dbaf52 100644 --- a/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php +++ b/apps/dav/lib/CalDAV/Schedule/IMipPlugin.php @@ -250,9 +250,8 @@ class IMipPlugin extends SabreIMipPlugin { $this->addSubjectAndHeading($template, $l10n, $method, $summary); $this->addBulletList($template, $l10n, $vevent); - // Only add response buttons to invitation requests: Fix Issue #11230 - if (($method == self::METHOD_REQUEST) && $this->getAttendeeRSVP($attendee)) { + if (($method == self::METHOD_REQUEST) && $this->getAttendeeRsvpOrReqForParticipant($attendee)) { /* ** Only offer invitation accept/reject buttons, which link back to the @@ -390,12 +389,21 @@ class IMipPlugin extends SabreIMipPlugin { * @param Property|null $attendee * @return bool */ - private function getAttendeeRSVP(Property $attendee = null) { + private function getAttendeeRsvpOrReqForParticipant(Property $attendee = null) { if ($attendee !== null) { $rsvp = $attendee->offsetGet('RSVP'); if (($rsvp instanceof Parameter) && (strcasecmp($rsvp->getValue(), 'TRUE') === 0)) { return true; } + $role = $attendee->offsetGet('ROLE'); + // @see https://datatracker.ietf.org/doc/html/rfc5545#section-3.2.16 + // Attendees without a role are assumed required and should receive an invitation link even if they have no RSVP set + if ($role === null + || (($role instanceof Parameter) && (strcasecmp($role->getValue(), 'REQ-PARTICIPANT') === 0)) + || (($role instanceof Parameter) && (strcasecmp($role->getValue(), 'OPT-PARTICIPANT') === 0)) + ) { + return true; + } } // RFC 5545 3.2.17: default RSVP is false return false; |