read comment working
This commit is contained in:
parent
583daa1759
commit
39fc379541
12 changed files with 125 additions and 78 deletions
|
|
@ -12,5 +12,6 @@ Kirby::plugin('adrienpayet/kirby4-comments', [
|
|||
require(__DIR__ . '/routes/update.php'),
|
||||
require(__DIR__ . '/routes/delete.php'),
|
||||
require(__DIR__ . '/routes/reply.php'),
|
||||
require(__DIR__ . '/routes/read.php'),
|
||||
]
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ return [
|
|||
|
||||
echo json_encode(getFileData($newFile));
|
||||
|
||||
kirby()->user()->deleteNotification($page, $data->id);
|
||||
kirby()->user()->deleteNotification($page->managers()->toUsers(), $data->id);
|
||||
|
||||
exit;
|
||||
}
|
||||
|
|
|
|||
28
public/site/plugins/comments/routes/read.php
Normal file
28
public/site/plugins/comments/routes/read.php
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
return [
|
||||
'pattern' => '(:all)read-comment.json',
|
||||
'method' => 'POST',
|
||||
'action' => function () {
|
||||
$json = file_get_contents('php://input');
|
||||
$data = json_decode($json);
|
||||
|
||||
try {
|
||||
$newNotification = kirby()->user()->readNotification($data->notificationId);
|
||||
if ($newNotification) {
|
||||
return [
|
||||
"success" => "Notification read.",
|
||||
"data" => $newNotification
|
||||
];
|
||||
} else {
|
||||
throw new Exception("Can't find corresponding notification.", 1);
|
||||
}
|
||||
} catch (\Throwable $th) {
|
||||
return [
|
||||
"error" => $th->getMessage(),
|
||||
"notificationId" => $data->notificationId,
|
||||
"userName" => kirby()->user()->name()->value()
|
||||
];
|
||||
}
|
||||
}
|
||||
];
|
||||
|
|
@ -43,6 +43,7 @@ class BaseComment {
|
|||
$this->date = $date;
|
||||
$this->id = $id;
|
||||
$this->type = $type;
|
||||
$this->isRead = false;
|
||||
$this->position = $position;
|
||||
}
|
||||
|
||||
|
|
@ -78,6 +79,20 @@ class BaseComment {
|
|||
return $this->type;
|
||||
}
|
||||
|
||||
public function isRead() {
|
||||
return $this->isRead;
|
||||
}
|
||||
|
||||
public function read() {
|
||||
$this->isRead = true;
|
||||
return $this->isRead;
|
||||
}
|
||||
|
||||
public function unread() {
|
||||
$this->isRead = false;
|
||||
return $this->isRead;
|
||||
}
|
||||
|
||||
public function pageIndex() {
|
||||
$this->position['pageIndex'];
|
||||
}
|
||||
|
|
@ -93,6 +108,7 @@ class BaseComment {
|
|||
'date' => $this->date,
|
||||
'id' => $this->id,
|
||||
'type' => $this->type,
|
||||
'isRead' => $this->isRead
|
||||
];
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,11 +1,9 @@
|
|||
<?php
|
||||
|
||||
Kirby::plugin('adrienpayet/pdc-notifications', [
|
||||
// 'routes' => [
|
||||
// require(__DIR__ . '/routes/mark-as-read.php'),
|
||||
// ],
|
||||
'userMethods' => [
|
||||
'sendNotification' => require(__DIR__ . '/user-methods/send.php'),
|
||||
'deleteNotification' => require(__DIR__ . '/user-methods/delete.php')
|
||||
'deleteNotification' => require(__DIR__ . '/user-methods/delete.php'),
|
||||
'readNotification' => require(__DIR__ . '/user-methods/read.php')
|
||||
]
|
||||
]);
|
||||
|
|
|
|||
|
|
@ -1,25 +1,22 @@
|
|||
<?php
|
||||
|
||||
return function($project, $notificationId) {
|
||||
$projectManagers = $project->managers()->toUsers();
|
||||
|
||||
foreach ($projectManagers as $user) {
|
||||
try {
|
||||
$notifications = $user->notifications()->isNotEmpty()
|
||||
? Yaml::decode($user->notifications()->value())
|
||||
: [];
|
||||
|
||||
foreach ($notifications as $key => $notification) {
|
||||
if ($notification['id'] === $notificationId) {
|
||||
unset($notifications[$key]);
|
||||
}
|
||||
return function($notificationId) {
|
||||
$user = kirby()->user();
|
||||
try {
|
||||
$notifications = $user->notifications()->isNotEmpty()
|
||||
? Yaml::decode($user->notifications()->value())
|
||||
: [];
|
||||
|
||||
foreach ($notifications as $key => $notification) {
|
||||
if ($notification['id'] === $notificationId) {
|
||||
unset($notifications[$key]);
|
||||
}
|
||||
|
||||
$user->update([
|
||||
'notifications' => Yaml::encode(array_values($notifications))
|
||||
]);
|
||||
} catch (\Throwable $th) {
|
||||
throw new Exception("Error updating notifications: " . $th->getMessage() . ' line ' . $th->getLine(), 1);
|
||||
}
|
||||
|
||||
$user->update([
|
||||
'notifications' => Yaml::encode(array_values($notifications))
|
||||
]);
|
||||
} catch (\Throwable $th) {
|
||||
throw new Exception("Error updating notifications: " . $th->getMessage() . ' line ' . $th->getLine(), 1);
|
||||
}
|
||||
};
|
||||
|
|
|
|||
|
|
@ -1,16 +1,26 @@
|
|||
<?php
|
||||
|
||||
return function ($group, $notificationId) {
|
||||
$notifications = Yaml::decode($this->notifications()->value());
|
||||
return function($notificationId) {
|
||||
|
||||
try {
|
||||
$notifications[$group][$notificationId]['isRead'] = true;
|
||||
$notifications = $this->notifications()->isNotEmpty()
|
||||
? Yaml::decode($this->notifications()->value())
|
||||
: [];
|
||||
|
||||
$newNotification = null;
|
||||
foreach ($notifications as $key => $notification) {
|
||||
if ($notification['id'] === $notificationId) {
|
||||
$notifications[$key]['isRead'] = true;
|
||||
$newNotification = $notifications[$key];
|
||||
}
|
||||
}
|
||||
|
||||
$this->update([
|
||||
'notifications' => Yaml::encode(array_values($notifications))
|
||||
]);
|
||||
|
||||
return $newNotification;
|
||||
} catch (\Throwable $th) {
|
||||
//throw $th;
|
||||
throw new Exception("Error updating notifications: " . $th->getMessage() . ' line ' . $th->getLine(), 1);
|
||||
}
|
||||
|
||||
$this->update([
|
||||
"notifications" => $notifications
|
||||
]);
|
||||
return $notifications;
|
||||
};
|
||||
|
|
@ -14,11 +14,11 @@
|
|||
*/
|
||||
|
||||
return function ($projectUri, $notificationData) {
|
||||
$notificationData['isRead'] = false;
|
||||
$recipients = page($projectUri)->managers()->toUsers()->not($this);
|
||||
|
||||
if (!$recipients) return;
|
||||
|
||||
$notificationData['isRead'];
|
||||
foreach ($recipients as $otherUser) {
|
||||
try {
|
||||
$notifications = $otherUser->notifications()->isNotEmpty()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue