/** * {@inheritdoc} */ protected function conditions(AbstractSearch $search, array $matches, $negate) { if (!$search instanceof DiscussionSearch) { throw new LogicException('This gambit can only be applied on a DiscussionSearch'); } $username = trim($matches[1], '"'); $id = $this->users->getIdForUsername($username); $search->getQuery()->where('start_user_id', $negate ? '!=' : '=', $id); }
/** * {@inheritdoc} */ protected function data(ServerRequestInterface $request, Document $document) { $id = array_get($request->getQueryParams(), 'id'); if (!is_numeric($id)) { $id = $this->users->getIdForUsername($id); } $actor = $request->getAttribute('actor'); if ($actor->id == $id) { $this->serializer = 'Flarum\\Api\\Serializer\\CurrentUserSerializer'; } return $this->users->findOrFail($id, $actor); }
/** * {@inheritdoc} */ protected function conditions(AbstractSearch $search, array $matches, $negate) { if (!$search instanceof DiscussionSearch) { throw new LogicException('This gambit can only be applied on a DiscussionSearch'); } $usernames = trim($matches[1], '"'); $usernames = explode(',', $usernames); $ids = []; foreach ($usernames as $username) { $ids[] = $this->users->getIdForUsername($username); } $search->getQuery()->whereIn('start_user_id', $ids, 'and', $negate); }
/** * @param $tag * @param UserRepository $users * @return bool */ public static function addId($tag, UserRepository $users) { if ($id = $users->getIdForUsername(rawurlencode($tag->getAttribute('username')))) { $tag->setAttribute('id', $id); return true; } }