comment : send notification only to project managers
This commit is contained in:
parent
4f60dc91d3
commit
14321b1e8d
8 changed files with 41 additions and 137 deletions
|
|
@ -17,6 +17,7 @@ tabs:
|
|||
type: pages
|
||||
query: user.projects
|
||||
create: false
|
||||
search: true
|
||||
help: Projets pour lesquels vous êtes nommé chef de projet.
|
||||
image:
|
||||
query: page.client.toPage.logo.toFile
|
||||
|
|
|
|||
|
|
@ -18,6 +18,14 @@ tabs:
|
|||
projects:
|
||||
width: 1/2
|
||||
sections:
|
||||
modifiedProjects:
|
||||
extends: sections/projects
|
||||
headline: Projets récement modifiés
|
||||
parent: site.find("projects")
|
||||
sortBy: modified desc
|
||||
layout: list
|
||||
image:
|
||||
query: page.client.toPage.logo.toFile
|
||||
settings:
|
||||
label: Paramètres
|
||||
icon: cog
|
||||
|
|
|
|||
|
|
@ -40,8 +40,11 @@ return [
|
|||
'comments' => $comments
|
||||
]);
|
||||
|
||||
$user->sendNotification($newComment);
|
||||
|
||||
try {
|
||||
$user->sendNotification($page->parent()->uri(), $newComment->toArray());
|
||||
} catch (\Throwable $th) {
|
||||
throw new Exception($th->getMessage(), 1);
|
||||
}
|
||||
return getFileData($newFile);
|
||||
}
|
||||
];
|
||||
|
|
@ -40,7 +40,7 @@ return [
|
|||
'comments' => $comments
|
||||
]);
|
||||
|
||||
$user->sendNotification($newReply);
|
||||
$user->sendNotification($page->parent()->uri(), $newReply->toArray());
|
||||
|
||||
return getFileData($newFile);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,13 +1,30 @@
|
|||
<?php
|
||||
|
||||
return function ($item) {
|
||||
foreach (kirby()->users()->not($this) as $otherUser) {
|
||||
/**
|
||||
* Send a notification to all users who manage a specific project, excluding the user sending the notification.
|
||||
*
|
||||
* This function retrieves all users managing the project specified by `$projectUri` (excluding the current user)
|
||||
* and adds a new notification to their `notifications` field, stored as a YAML-encoded array.
|
||||
* If the `notifications` field is empty, an empty array is initialized before appending the new notification.
|
||||
* In case of an error during update, an exception is thrown with the error message and line number.
|
||||
*
|
||||
* @param array $notificationData An associative array containing the notification data to be added.
|
||||
* @param string $projectUri The URI of the project associated with this notification.
|
||||
* @throws Exception If an error occurs while updating a user's notifications.
|
||||
*/
|
||||
|
||||
return function ($projectUri, $notificationData) {
|
||||
$recipients = page($projectUri)->managers()->toUsers()->not($this);
|
||||
|
||||
if (!$recipients) return;
|
||||
|
||||
foreach ($recipients as $otherUser) {
|
||||
try {
|
||||
$notifications = $otherUser->notifications()->isNotEmpty()
|
||||
? Yaml::decode($otherUser->notifications()->value())
|
||||
: [];
|
||||
|
||||
$notifications[] = $item->toArray();
|
||||
$notifications[] = $notificationData;
|
||||
|
||||
$otherUser->update([
|
||||
'notifications' => $notifications
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue