43 lines
1.3 KiB
PHP
43 lines
1.3 KiB
PHP
|
|
<?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;
|
||
|
|
}
|