public function apply($string, SearcherInterface $searcher) { $posts = $this->posts->findByContent($string, $searcher->user); $discussions = []; foreach ($posts as $post) { $discussions[] = $id = $post->discussion_id; $searcher->addRelevantPost($id, $post->id); } $discussions = array_unique($discussions); $searcher->query()->whereIn('id', $discussions); $searcher->setDefaultSort(['id' => $discussions]); }
protected function conditions($matches, SearcherInterface $searcher) { $user = $searcher->user; if ($user->exists) { $readIds = $this->discussions->getReadIds($user); if ($matches[1] === 'true') { $searcher->query()->whereNotIn('id', $readIds)->where('last_time', '>', $user->read_time ?: 0); } else { $searcher->query()->whereIn('id', $readIds)->orWhere('last_time', '<=', $user->read_time ?: 0); } } }
public function conditions($matches, SearcherInterface $searcher) { $username = trim($matches[1], '"'); $id = $this->users->getIdForUsername($username); $searcher->query()->where('start_user_id', $id); }
public function apply($string, SearcherInterface $searcher) { $users = $this->users->getIdsForUsername($string, $searcher->user); $searcher->query()->whereIn('id', $users); $searcher->setDefaultSort(['id' => $users]); }