From 4c6ebb63245a7245d506741d06d53798d555c81a Mon Sep 17 00:00:00 2001 From: Daan Rijpkema Date: Sat, 1 Aug 2026 22:33:25 +0200 Subject: [PATCH] Extract user indexing --- bluem.php | 11 ++--------- src/Users/BluemUserIndexer.php | 21 +++++++++++++++++++++ tests/Unit/BluemUserIndexerTest.php | 20 ++++++++++++++++++++ 3 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 src/Users/BluemUserIndexer.php create mode 100644 tests/Unit/BluemUserIndexerTest.php diff --git a/bluem.php b/bluem.php index ab6af7b..5c5c1e3 100644 --- a/bluem.php +++ b/bluem.php @@ -50,6 +50,7 @@ use Bluem\BluemPHP\Bluem; use Bluem\Wordpress\Observability\BluemActivationNotifier; use Bluem\Wordpress\Observability\BluemSentry; +use Bluem\Wordpress\Users\BluemUserIndexer; use Bluem\Wordpress\Support\BluemComposerDependencyVersion; /** @@ -1097,15 +1098,7 @@ function bluem_requests_view_with_filter( $filters = [], string $current_categor * @return void */ function bluem_get_users_by_id(): array { - $users_by_id = []; - - $users = get_users(); - - foreach ( $users as $user ) { - $users_by_id[ $user->ID ] = $user; - } - - return $users_by_id; + return (new BluemUserIndexer())->index(get_users()); } function bluem_get_requests_per_type( $filters = [] ): array { diff --git a/src/Users/BluemUserIndexer.php b/src/Users/BluemUserIndexer.php new file mode 100644 index 0000000..2a72993 --- /dev/null +++ b/src/Users/BluemUserIndexer.php @@ -0,0 +1,21 @@ + $users + * @return array + */ + public function index(array $users): array + { + $usersById = []; + + foreach ($users as $user) { + $usersById[$user->ID] = $user; + } + + return $usersById; + } +} diff --git a/tests/Unit/BluemUserIndexerTest.php b/tests/Unit/BluemUserIndexerTest.php new file mode 100644 index 0000000..af663cf --- /dev/null +++ b/tests/Unit/BluemUserIndexerTest.php @@ -0,0 +1,20 @@ + 12, 'user_login' => 'first']; + $second = (object) ['ID' => 34, 'user_login' => 'second']; + + self::assertSame([ + 12 => $first, + 34 => $second, + ], (new BluemUserIndexer())->index([$first, $second])); + } +}