true, 'lastUser' => true, 'startPost' => false, 'lastPost' => false, 'relevantPosts' => false ]; /** * The fields that are available to be sorted by. * * @var array */ public static $sortFields = ['lastTime', 'commentsCount', 'startTime']; /** * Instantiate the action. * * @param \Flarum\Core\Search\Discussions\DiscussionSearcher $searcher */ public function __construct(DiscussionSearcher $searcher) { $this->searcher = $searcher; } /** * Get the discussion results, ready to be serialized and assigned to the * document response. * * @param \Flarum\Api\JsonApiRequest $request * @param \Tobscure\JsonApi\Document $document * @return \Illuminate\Database\Eloquent\Collection */ protected function data(JsonApiRequest $request, Document $document) { $criteria = new DiscussionSearchCriteria( $request->actor->getUser(), $request->get('q'), $request->sort ); $load = array_merge($request->include, ['state']); $results = $this->searcher->search($criteria, $request->limit, $request->offset, $load); if (($total = $results->getTotal()) !== null) { $document->addMeta('total', $total); } static::addPaginationLinks( $document, $request, route('flarum.api.discussions.index'), $total ?: $results->areMoreResults() ); return $results->getDiscussions(); } }