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>
46 lines
1.3 KiB
PHP
46 lines
1.3 KiB
PHP
<?php
|
|
|
|
/**
|
|
* Route pour marquer une notification comme lue.
|
|
* Délègue au bon provider selon le type de notification.
|
|
*/
|
|
return [
|
|
'pattern' => '(:all)mark-notification-read.json',
|
|
'method' => 'POST',
|
|
'action' => function () {
|
|
$json = file_get_contents('php://input');
|
|
$data = json_decode($json);
|
|
|
|
if (!$data || !isset($data->type) || !isset($data->id)) {
|
|
return json_encode([
|
|
'status' => 'error',
|
|
'message' => 'Missing required fields: type, id'
|
|
]);
|
|
}
|
|
|
|
try {
|
|
$collector = kirby()->option('adrienpayet.pdc-notifications.collector');
|
|
|
|
if (!$collector) {
|
|
throw new Exception('NotificationCollector not initialized');
|
|
}
|
|
|
|
$success = $collector->markAsRead(
|
|
$data->type,
|
|
$data->id,
|
|
(array) $data,
|
|
kirby()->user()
|
|
);
|
|
|
|
return json_encode([
|
|
'status' => $success ? 'success' : 'error',
|
|
'message' => $success ? 'Notification marked as read' : 'Failed to mark notification as read'
|
|
]);
|
|
} catch (\Throwable $th) {
|
|
return json_encode([
|
|
'status' => 'error',
|
|
'message' => $th->getMessage()
|
|
]);
|
|
}
|
|
}
|
|
];
|