From f0645f805ecdd19cf5ed9842f9e6b69a86dbcdeb Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Thu, 27 Aug 2026 15:28:09 +0000
Subject: [PATCH] =Notifications and routes minor cleanup. needs more work
---
inc/managers/Notifications/Notifications.php | 60 ++++++++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 48 insertions(+), 12 deletions(-)
diff --git a/inc/managers/Notifications/Notifications.php b/inc/managers/Notifications/Notifications.php
index 61ee88c..aa8f576 100644
--- a/inc/managers/Notifications/Notifications.php
+++ b/inc/managers/Notifications/Notifications.php
@@ -315,24 +315,60 @@
return true;
}
- public function getUserNotifications(int $user_id, array $where = []):array
+ protected function buildArgs(array $args):array
{
- $gotWhere = $where;
- $allowedKeys = ['from_user','target_id', 'target_type','type','status','priority','action_taken','created_at','read_at','actioned_at','updated_at'];
- $where = array_filter($gotWhere, function($key) use ($allowedKeys) {
- return in_array($key, $allowedKeys);
+ $allowed = $this->notifications->getColumnKeys();
+ $where = array_filter($args, function($key) use ($allowed) {
+ return in_array($key, $allowed);
}, ARRAY_FILTER_USE_KEY);
- $notAllowed = array_diff($gotWhere, $allowedKeys);
- if (!empty($notAllowed)){
- error_log('[Notifications]::getUserNotifications Invalid where arguments, removed from request: '.print_r($notAllowed, true));
+
+ if ($where['type'] === 'all') {
+ unset($where['type']);
}
- return $this->notifications->getMany(array_merge([
- 'for_user' => $user_id,
- 'status' => 'unread', //default to unread, but the merge will override if different
- ], $where));
+
+ $args['page'] = max(1, intval($args['page']??1));
+ $order = wp_parse_args($args, [
+ 'orderby' => 'created_at',
+ 'order' => 'DESC',
+ 'per_page' => 20,
+ 'page' => 1,
+ ]);
+
+ $args = array_merge([
+ 'where' => $where,
+ ],$order);
+
+ return $args;
}
+ public function getUserNotifications(int $user_id, array $args = []):array
+ {
+ $args = $this->buildArgs($args);
+
+ $args['where']['for_user'] = $user_id;
+ if (!array_key_exists('status', $args['where'])) {
+ $args['where']['status'] = 'unread';
+ }
+
+
+ return $this->notifications->getMany($args, false);
+ }
+
+ public function countUserNotifications(int $user_id, array $args = []):int
+ {
+ $args = $this->buildArgs($args);
+
+ $args['where']['for_user'] = $user_id;
+ if (!array_key_exists('status', $args['where'])) {
+ $args['where']['status'] = 'unread';
+ }
+
+ return $this->notifications->count($args);
+ }
+
+
+
public function markRead(int $userID, int|array $notification_id):bool
{
if (is_int($notification_id)) {
--
Gitblit v1.10.0