From d76bbfbab61a6c9261a010dfa5ed809b970f6919 Mon Sep 17 00:00:00 2001 From: DariusIII Date: Wed, 29 Oct 2025 16:30:12 +0100 Subject: [PATCH] Add more filters to user list --- .../Controllers/Admin/AdminUserController.php | 10 ++++++++-- app/Models/User.php | 18 ++++++++++++++---- resources/views/admin/users/index.blade.php | 18 +++++++++++++++++- 3 files changed, 39 insertions(+), 7 deletions(-) diff --git a/app/Http/Controllers/Admin/AdminUserController.php b/app/Http/Controllers/Admin/AdminUserController.php index f670e40d0..123ce006b 100644 --- a/app/Http/Controllers/Admin/AdminUserController.php +++ b/app/Http/Controllers/Admin/AdminUserController.php @@ -38,6 +38,8 @@ class AdminUserController extends BasePageController 'email' => $request->has('email') ? $request->input('email') : '', 'host' => $request->has('host') ? $request->input('host') : '', 'role' => $request->has('role') ? $request->input('role') : '', + 'created_from' => $request->has('created_from') ? $request->input('created_from') : '', + 'created_to' => $request->has('created_to') ? $request->input('created_to') : '', ]; $result = User::getRange( @@ -48,10 +50,12 @@ class AdminUserController extends BasePageController $variables['email'], $variables['host'], $variables['role'], - true + true, + $variables['created_from'], + $variables['created_to'] ); - $results = $this->paginate($result ?? [], User::getCount($variables['role'], $variables['username'], $variables['host'], $variables['email']) ?? 0, config('nntmux.items_per_page'), $page, $request->url(), $request->query()); + $results = $this->paginate($result ?? [], User::getCount($variables['role'], $variables['username'], $variables['host'], $variables['email'], $variables['created_from'], $variables['created_to']) ?? 0, config('nntmux.items_per_page'), $page, $request->url(), $request->query()); // Add country data to each user based on their host IP foreach ($results as $user) { @@ -74,6 +78,8 @@ class AdminUserController extends BasePageController 'email' => $variables['email'], 'host' => $variables['host'], 'role' => $variables['role'], + 'created_from' => $variables['created_from'], + 'created_to' => $variables['created_to'], 'role_ids' => array_keys($roles), 'role_names' => $roles, 'userlist' => $results, diff --git a/app/Models/User.php b/app/Models/User.php index 13df14fbb..4a78839f9 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -254,7 +254,7 @@ class User extends Authenticatable self::find($id)->delete(); } - public static function getCount(?string $role = null, ?string $username = '', ?string $host = '', ?string $email = ''): int + public static function getCount(?string $role = null, ?string $username = '', ?string $host = '', ?string $email = '', ?string $createdFrom = '', ?string $createdTo = ''): int { $res = self::query()->withTrashed()->where('email', '<>', 'sharing@nZEDb.com'); @@ -274,6 +274,14 @@ class User extends Authenticatable $res->where('email', 'like', '%'.$email.'%'); } + if ($createdFrom !== '') { + $res->where('created_at', '>=', $createdFrom.' 00:00:00'); + } + + if ($createdTo !== '') { + $res->where('created_at', '<=', $createdTo.' 23:59:59'); + } + return $res->count(['id']); } @@ -382,7 +390,7 @@ class User extends Authenticatable /** * @throws \Throwable */ - public static function getRange($start, $offset, $orderBy, ?string $userName = '', ?string $email = '', ?string $host = '', ?string $role = '', bool $apiRequests = false): Collection + public static function getRange($start, $offset, $orderBy, ?string $userName = '', ?string $email = '', ?string $host = '', ?string $role = '', bool $apiRequests = false, ?string $createdFrom = '', ?string $createdTo = ''): Collection { if ($apiRequests) { UserRequest::clearApiRequests(false); @@ -391,7 +399,7 @@ class User extends Authenticatable FROM users INNER JOIN roles ON roles.id = users.roles_id LEFT JOIN user_requests ON user_requests.users_id = users.id - WHERE users.id != 0 %s %s %s %s + WHERE users.id != 0 %s %s %s %s %s %s AND email != 'sharing@nZEDb.com' GROUP BY users.id ORDER BY %s %s %s "; @@ -400,7 +408,7 @@ class User extends Authenticatable SELECT users.*, roles.name AS rolename FROM users INNER JOIN roles ON roles.id = users.roles_id - WHERE 1=1 %s %s %s %s + WHERE 1=1 %s %s %s %s %s %s ORDER BY %s %s %s'; } $order = self::getBrowseOrder($orderBy); @@ -412,6 +420,8 @@ class User extends Authenticatable ! empty($email) ? 'AND users.email '.'LIKE '.escapeString('%'.$email.'%') : '', ! empty($host) ? 'AND users.host '.'LIKE '.escapeString('%'.$host.'%') : '', (! empty($role) ? ('AND users.roles_id = '.$role) : ''), + ! empty($createdFrom) ? 'AND users.created_at >= '.escapeString($createdFrom.' 00:00:00') : '', + ! empty($createdTo) ? 'AND users.created_at <= '.escapeString($createdTo.' 23:59:59') : '', $order[0], $order[1], ($start === false ? '' : ('LIMIT '.$offset.' OFFSET '.$start)) diff --git a/resources/views/admin/users/index.blade.php b/resources/views/admin/users/index.blade.php index 2317dec7a..f4bcb93b2 100644 --- a/resources/views/admin/users/index.blade.php +++ b/resources/views/admin/users/index.blade.php @@ -18,7 +18,7 @@
-
+
+
+ + +
+
+ + +