From f8ce625877609e4992946294e5159c752b63ceaa Mon Sep 17 00:00:00 2001 From: ghost Date: Wed, 20 Dec 2023 00:47:32 +0200 Subject: [PATCH] add users room activity totals, sort user list by posts DESC --- src/Controller/UserController.php | 53 ++++++++++++++++++++++-- templates/default/module/rooms.html.twig | 1 + templates/default/user/list.html.twig | 16 +++++-- 3 files changed, 63 insertions(+), 7 deletions(-) diff --git a/src/Controller/UserController.php b/src/Controller/UserController.php index 2600ace..7bfe9f4 100644 --- a/src/Controller/UserController.php +++ b/src/Controller/UserController.php @@ -76,10 +76,28 @@ class UserController extends AbstractController continue; } + // Get room stats + $total = 0; + $rooms = []; + + foreach ($this->_rooms($client) as $room => $name) + { + $posts = 0; + + foreach ((array) $client->kevaFilter($room, sprintf('^[\d]+@%s$', $user['key'])) as $post) + { + $total++; + $posts++; + + $rooms[$room] = $posts; + } + } + $list[] = [ 'name' => $user['key'], - 'height' => $user['height'], + 'total' => $total, + 'rooms' => $rooms, ]; } } @@ -89,9 +107,9 @@ class UserController extends AbstractController array_multisort( array_column( $list, - 'height' + 'total' ), - SORT_ASC, + SORT_DESC, $list ); @@ -716,6 +734,35 @@ class UserController extends AbstractController return null; } + private function _rooms( + \Kevachat\Kevacoin\Client $client + ): array + { + $rooms = []; + + foreach ((array) $client->kevaListNamespaces() as $value) + { + if (empty($value['namespaceId'])) + { + continue; + } + + if (empty($value['displayName'])) + { + continue; + } + + if (str_starts_with($value['displayName'], '_')) + { + continue; + } + + $rooms[$value['namespaceId']] = $value['displayName']; + } + + return $rooms; + } + private function _hash( \Kevachat\Kevacoin\Client $client, string $namespace, diff --git a/templates/default/module/rooms.html.twig b/templates/default/module/rooms.html.twig index b0531f5..83dd13e 100644 --- a/templates/default/module/rooms.html.twig +++ b/templates/default/module/rooms.html.twig @@ -35,6 +35,7 @@ +•

{% if 'user_list' == request.get('_route') %} diff --git a/templates/default/user/list.html.twig b/templates/default/user/list.html.twig index 3872205..f44ce53 100644 --- a/templates/default/user/list.html.twig +++ b/templates/default/user/list.html.twig @@ -7,11 +7,19 @@
  • - {{ user.name }} + @{{ user.name }} - {# @TODO #} - {#{{ 'at block' | trans }}#} {{ user.height }} - + {# @TODO #} + {% for namespace, total in user.rooms %} + {{ namespace | keva_namespace_value }} + {{ total }} + {% endfor %} +
  • {% endfor %}