Remplace le système de notifications stockées par un système de providers qui dérivent les notifications des données existantes (commentaires, réponses, demandes de projet, demandes de rendez-vous, validations de brief). - Ajout du NotificationCollector et de l'interface NotificationProvider - Création de 5 providers : Comment, Reply, ProjectRequest, AppointmentRequest, Content - Métadonnées de notifications stockées directement sur les entités source - Nouvelles routes mark-as-read et mark-all-read - Mise à jour du frontend pour le nouveau système - Route de migration pour les données existantes Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
42 lines
1.3 KiB
PHP
42 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;
|
|
}
|