notifications()->isNotEmpty() ? Yaml::decode($this->notifications()->value()) : []; $notifications[] = $newNotification->toArray(); $this->update([ 'notifications' => $notifications ]); } public function deleteNotification($notificationId) { $notifications = $this->notifications()->isNotEmpty() ? Yaml::decode($this->notifications()->value()) : []; foreach ($notifications as $key => $notification) { if ($notification['id'] === $notificationId) { unset($notifications[$key]); } } $this->update([ 'notifications' => $notifications ]); } public function readNotification($notificationId) { $notifications = $this->notifications()->isNotEmpty() ? Yaml::decode($this->notifications()->value()) : []; foreach ($notifications as $key => &$notification) { if ($notification['id'] !== $notificationId) { continue; } if (!isset($notification["readby"])) { $notification["readby"] = []; } $userUuid = (string) kirby()->user()->uuid(); if (in_array($userUuid, $notification["readby"])) { continue; } $notification["readby"][] = $userUuid; break; } $this->update([ 'notifications' => Yaml::encode($notifications) ]); } public function readAllNotifications() { $notifications = $this->notifications()->isNotEmpty() ? Yaml::decode($this->notifications()->value()) : []; foreach ($notifications as $key => &$notification) { if (!isset($notification["readby"])) { $notification["readby"] = []; } $userUuid = (string) kirby()->user()->uuid(); if (in_array($userUuid, $notification["readby"])) { continue; } $notification["readby"][] = $userUuid; break; } $this->update([ 'notifications' => Yaml::encode($notifications) ]); } }