designtopack/public/site/plugins/notifications/src/NotificationProvider.php

43 lines
1.3 KiB
PHP
Raw Normal View History

<?php
namespace adrienpayet\notifications;
use Kirby\Cms\Page;
use Kirby\Cms\User;
/**
* Interface pour les providers de notifications.
*
* Chaque type de notification (comment, project-request, etc.)
* a son propre provider qui sait :
* - Collecter les notifications depuis la source de données
* - Marquer une notification comme lue sur la source
*/
interface NotificationProvider
{
/**
* Retourne le type de notification géré par ce provider.
* Ex: 'comment', 'comment-reply', 'project-request'
*/
public function getType(): string;
/**
* Collecte toutes les notifications de ce type pour un projet et un utilisateur.
*
* @param Page $project Le projet à scanner
* @param User $user L'utilisateur courant (pour filtrer ses propres actions)
* @return array Liste des notifications au format standard
*/
public function collect(Page $project, User $user): array;
/**
* Marque une notification comme lue.
*
* @param string $id L'identifiant de la notification
* @param array $location Informations de localisation (ex: _file, _projectUri)
* @param User $user L'utilisateur qui marque comme lu
* @return bool True si succès, false sinon
*/
public function markAsRead(string $id, array $location, User $user): bool;
}