From aebcc3126adf91e5666b76abc8e4b72a061e3243 Mon Sep 17 00:00:00 2001 From: Anna Larch Date: Mon, 31 Oct 2022 11:16:45 +0100 Subject: Move iMIP to it's own interface and clean up the code a bit. Added: - author Removed: - unused imports Changed: - moved iMIP handling to new interface - pointed code to new implementation Signed-off-by: Anna Larch --- lib/private/Calendar/Manager.php | 6 ++-- lib/public/Calendar/ICreateFromString.php | 7 ----- lib/public/Calendar/IHandleImipMessage.php | 48 ++++++++++++++++++++++++++++++ 3 files changed, 52 insertions(+), 9 deletions(-) create mode 100644 lib/public/Calendar/IHandleImipMessage.php (limited to 'lib') diff --git a/lib/private/Calendar/Manager.php b/lib/private/Calendar/Manager.php index 550ba36dd6b..e85c2d2e377 100644 --- a/lib/private/Calendar/Manager.php +++ b/lib/private/Calendar/Manager.php @@ -7,6 +7,7 @@ declare(strict_types=1); * * @author Christoph Wurst * @author Georg Ehrke + * @author Anna Larch * * @license GNU AGPL version 3 or any later version * @@ -33,6 +34,7 @@ use OCP\Calendar\ICalendar; use OCP\Calendar\ICalendarProvider; use OCP\Calendar\ICalendarQuery; use OCP\Calendar\ICreateFromString; +use OCP\Calendar\IHandleImipMessage; use OCP\Calendar\IManager; use Psr\Container\ContainerInterface; use Psr\Log\LoggerInterface; @@ -280,7 +282,7 @@ class Manager implements IManager { // Drawback: attendees that have been deleted will still be able to update their partstat foreach ($calendars as $calendar) { // We should not search in writable calendars - if ($calendar instanceof ICreateFromString) { + if ($calendar instanceof IHandleImipMessage) { $o = $calendar->search($sender, ['ATTENDEE'], ['uid' => $vEvent->{'UID'}->getValue()]); if (!empty($o)) { $found = $calendar; @@ -358,7 +360,7 @@ class Manager implements IManager { // Drawback: attendees that have been deleted will still be able to update their partstat foreach ($calendars as $calendar) { // We should not search in writable calendars - if ($calendar instanceof ICreateFromString) { + if ($calendar instanceof IHandleImipMessage) { $o = $calendar->search($recipient, ['ATTENDEE'], ['uid' => $vEvent->{'UID'}->getValue()]); if (!empty($o)) { $found = $calendar; diff --git a/lib/public/Calendar/ICreateFromString.php b/lib/public/Calendar/ICreateFromString.php index 8c4bdd44041..17d529cdef3 100644 --- a/lib/public/Calendar/ICreateFromString.php +++ b/lib/public/Calendar/ICreateFromString.php @@ -40,11 +40,4 @@ interface ICreateFromString extends ICalendar { * @throws CalendarException */ public function createFromString(string $name, string $calendarData): void; - - /** - * @since 25.0.0 - * - * @throws CalendarException - */ - public function handleIMipMessage(string $name, string $calendarData): void; } diff --git a/lib/public/Calendar/IHandleImipMessage.php b/lib/public/Calendar/IHandleImipMessage.php new file mode 100644 index 00000000000..58c1400d987 --- /dev/null +++ b/lib/public/Calendar/IHandleImipMessage.php @@ -0,0 +1,48 @@ + + * + * @author Anna Larch + * + * @license GNU AGPL version 3 or any later version + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as + * published by the Free Software Foundation, either version 3 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + * + */ +namespace OCP\Calendar; + +use OCP\Calendar\Exceptions\CalendarException; + +/** + * Extends the current ICalendar interface + * to add a public write method to handle + * iMIP data + * + * @link https://www.rfc-editor.org/rfc/rfc6047 + * + * @since 26.0.0 + */ +interface IHandleImipMessage extends ICalendar { + + /** + * Handle an iMIP VEvent for validation and processing + * + * @since 26.0.0 + * + * @throws CalendarException on validation failure or calendar write error + */ + public function handleIMipMessage(string $name, string $calendarData): void; +} -- cgit v1.2.3