searcher = $searcher; $this->url = $url; } /** * {@inheritdoc} */ protected function data(ServerRequestInterface $request, Document $document) { $actor = $request->getAttribute('actor'); $this->assertCan($actor, 'viewUserList'); $query = Arr::get($this->extractFilter($request), 'q'); $sort = $this->extractSort($request); $criteria = new SearchCriteria($actor, $query, $sort); $limit = $this->extractLimit($request); $offset = $this->extractOffset($request); $load = $this->extractInclude($request); $results = $this->searcher->search($criteria, $limit, $offset, $load); $document->addPaginationLinks( $this->url->to('api')->route('users.index'), $request->getQueryParams(), $offset, $limit, $results->areMoreResults() ? null : 0 ); return $results->getResults(); } }