Refonte du système de notifications : passage aux notifications dérivées
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>
This commit is contained in:
parent
c68b51f639
commit
a7d315942a
26 changed files with 1406 additions and 137 deletions
|
|
@ -0,0 +1,42 @@
|
|||
<?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;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue