diff --git a/extend.php b/extend.php index 12eb1b1..0be083b 100644 --- a/extend.php +++ b/extend.php @@ -40,8 +40,7 @@ ->default('fof-user-directory.disable-global-search-source', false) ->default('fof-user-directory.default-sort', 'default') ->default('fof-user-directory.link-group-mentions', true) - ->serializeToForum('userDirectorySmallCards', 'fof-user-directory.use-small-cards') - ->serializeToForum('userDirectoryDisableGlobalSearchSource', 'fof-user-directory.disable-global-search-source') - ->serializeToForum('userDirectoryDefaultSort', 'fof-user-directory.default-sort') - ->serializeToForum('userDirectoryLinkGroupMentions', 'fof-user-directory.link-group-mentions'), + ->serializeToForum('userDirectorySmallCards', 'fof-user-directory.use-small-cards', 'boolVal') + ->serializeToForum('userDirectoryDisableGlobalSearchSource', 'fof-user-directory.disable-global-search-source', 'boolVal') + ->serializeToForum('userDirectoryLinkGroupMentions', 'fof-user-directory.link-group-mentions', 'boolVal'), ]; diff --git a/src/Content/UserDirectory.php b/src/Content/UserDirectory.php index fa9367a..6db09fa 100644 --- a/src/Content/UserDirectory.php +++ b/src/Content/UserDirectory.php @@ -31,7 +31,12 @@ class UserDirectory /** * @var Factory */ - private $view; + protected $view; + + /** + * @var SettingsRepositoryInterface + */ + protected $settings; /** * A map of sort query param values to their API sort param. @@ -47,10 +52,11 @@ class UserDirectory 'least_discussions' => 'discussionCount', ]; - public function __construct(Client $api, Factory $view) + public function __construct(Client $api, Factory $view, SettingsRepositoryInterface $settings) { $this->api = $api; $this->view = $view; + $this->settings = $settings; } private function getDocument(User $actor, array $params, Request $request) @@ -68,7 +74,7 @@ public function __invoke(Document $document, Request $request): Document $queryParams = $request->getQueryParams(); $actor = RequestUtil::getActor($request); - $sort = Arr::pull($queryParams, 'sort') ?: resolve(SettingsRepositoryInterface::class)->get('fof-user-directory.default-sort'); + $sort = Arr::pull($queryParams, 'sort') ?: $this->settings->get('fof-user-directory.default-sort'); $q = Arr::pull($queryParams, 'q'); $page = Arr::pull($queryParams, 'page', 1); diff --git a/src/PermissionBasedForumSettings.php b/src/PermissionBasedForumSettings.php index 77691b6..6e85f67 100644 --- a/src/PermissionBasedForumSettings.php +++ b/src/PermissionBasedForumSettings.php @@ -30,6 +30,7 @@ public function __invoke(ForumSerializer $serializer, $model, array $attributes) { // The link is visible if the user can access the user directory AND the link was enabled in extension settings $attributes['canSeeUserDirectoryLink'] = $serializer->getActor()->can('seeUserList') && $this->settings->get('fof-user-directory-link'); + $attributes['userDirectoryDefaultSort'] = $this->settings->get('fof-user-directory.default-sort') ?: 'default'; // Only serialize if the actor has permission if ($permission = $serializer->getActor()->hasPermission('user.suspend')) { diff --git a/tests/integration/api/ForumAttributeTest.php b/tests/integration/api/ForumAttributeTest.php index 4772106..1a550dc 100644 --- a/tests/integration/api/ForumAttributeTest.php +++ b/tests/integration/api/ForumAttributeTest.php @@ -51,6 +51,10 @@ protected function guestUserDirectoryPermission() 'permission' => 'fof.user-directory.view', 'group_id' => 2, ], + [ + 'permission' => 'searchUsers', + 'group_id' => 2, + ] ], ]); }