diff options
Diffstat (limited to 'lib/public/Notification/INotifier.php')
-rw-r--r-- | lib/public/Notification/INotifier.php | 42 |
1 files changed, 17 insertions, 25 deletions
diff --git a/lib/public/Notification/INotifier.php b/lib/public/Notification/INotifier.php index b8333cd368a..b6851e3dfb3 100644 --- a/lib/public/Notification/INotifier.php +++ b/lib/public/Notification/INotifier.php @@ -1,36 +1,22 @@ <?php declare(strict_types=1); - /** - * @copyright Copyright (c) 2016, ownCloud, Inc. - * - * @author Joas Schilling <coding@schilljs.com> - * - * @license AGPL-3.0 - * - * This code is free software: you can redistribute it and/or modify - * it under the terms of the GNU Affero General Public License, version 3, - * as published by the Free Software Foundation. - * - * 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, version 3, - * along with this program. If not, see <http://www.gnu.org/licenses/> - * + * SPDX-FileCopyrightText: 2016-2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-FileCopyrightText: 2016 ownCloud, Inc. + * SPDX-License-Identifier: AGPL-3.0-only */ namespace OCP\Notification; +use OCP\AppFramework\Attribute\Implementable; + /** - * Interface INotifier - * - * @since 9.0.0 + * Please consider implementing {@see IPreloadableNotifier} to improve performance. It allows to + * preload and cache data for many notifications at once instead of loading the data for each + * prepared notification separately. */ +#[Implementable(since: '9.0.0')] interface INotifier { - /** * Identifier of the notifier, only use [a-z0-9_] * @@ -40,7 +26,7 @@ interface INotifier { public function getID(): string; /** - * Human readable name describing the notifier + * Human-readable name describing the notifier * * @return string * @since 17.0.0 @@ -51,9 +37,15 @@ interface INotifier { * @param INotification $notification * @param string $languageCode The code of the language that should be used to prepare the notification * @return INotification - * @throws \InvalidArgumentException When the notification was not prepared by a notifier + * @throws UnknownNotificationException When the notification was not prepared by a notifier * @throws AlreadyProcessedException When the notification is not needed anymore and should be deleted + * @throws IncompleteParsedNotificationException Only to be thrown by the {@see IManager} * @since 9.0.0 + * @since 30.0.0 Notifiers should throw {@see UnknownNotificationException} instead of \InvalidArgumentException + * when they did not handle the notification. Throwing \InvalidArgumentException directly is deprecated and will + * be logged as an error in Nextcloud 39. + * @since 30.0.0 Throws {@see IncompleteParsedNotificationException} when not all required fields + * are set at the end of the manager or after a INotifier that claimed to have parsed the notification. */ public function prepare(INotification $notification, string $languageCode): INotification; } |