Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 2 additions & 9 deletions bluem.php
Original file line number Diff line number Diff line change
Expand Up @@ -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\Presentation\BluemRequestGrouper;
use Bluem\Wordpress\Requests\BluemEnabledRequestTypeFilter;
use Bluem\Wordpress\Support\BluemComposerDependencyVersion;
Expand Down Expand Up @@ -1127,15 +1128,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 {
Expand Down
21 changes: 21 additions & 0 deletions src/Users/BluemUserIndexer.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

namespace Bluem\Wordpress\Users;

final class BluemUserIndexer
{
/**
* @param array<int, object> $users
* @return array<int|string, object>
*/
public function index(array $users): array
{
$usersById = [];

foreach ($users as $user) {
$usersById[$user->ID] = $user;
}

return $usersById;
}
}
20 changes: 20 additions & 0 deletions tests/Unit/BluemUserIndexerTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php

namespace Unit;

use Bluem\Wordpress\Users\BluemUserIndexer;
use PHPUnit\Framework\TestCase;

final class BluemUserIndexerTest extends TestCase
{
public function testItIndexesUsersByTheirWordPressId(): void
{
$first = (object) ['ID' => 12, 'user_login' => 'first'];
$second = (object) ['ID' => 34, 'user_login' => 'second'];

self::assertSame([
12 => $first,
34 => $second,
], (new BluemUserIndexer())->index([$first, $second]));
}
}
Loading