diff --git a/extensions/mentions/src/Listeners/AddPostMentionsFormatter.php b/extensions/mentions/src/Listeners/AddPostMentionsFormatter.php index 6d842b8e9..df6143601 100755 --- a/extensions/mentions/src/Listeners/AddPostMentionsFormatter.php +++ b/extensions/mentions/src/Listeners/AddPostMentionsFormatter.php @@ -19,11 +19,16 @@ class AddPostMentionsFormatter $tagName = 'POSTMENTION'; $tag = $configurator->tags->add($tagName); + $tag->attributes->add('username'); $tag->attributes->add('number'); $tag->attributes->add('id')->filterChain->append('#uint'); + $tag->attributes['id']->required = false; + $tag->template = ''; - $tag->filterChain->prepend([static::class, 'addId'])->addParameterByName('post'); + $tag->filterChain->prepend([static::class, 'addId']) + ->addParameterByName('post') + ->setJS('function() { return true; }'); $configurator->Preg->match('/\B@(?[a-z0-9_-]+)#(?\d+)/i', $tagName); } @@ -40,8 +45,10 @@ class AddPostMentionsFormatter ->where('number', $tag->getAttribute('number')) ->pluck('id'); - $tag->setAttribute('id', $id); + if ($id) { + $tag->setAttribute('id', $id); - return true; + return true; + } } } diff --git a/extensions/mentions/src/Listeners/AddUserMentionsFormatter.php b/extensions/mentions/src/Listeners/AddUserMentionsFormatter.php index f752f76cc..a72211071 100755 --- a/extensions/mentions/src/Listeners/AddUserMentionsFormatter.php +++ b/extensions/mentions/src/Listeners/AddUserMentionsFormatter.php @@ -30,8 +30,12 @@ class AddUserMentionsFormatter $tag = $configurator->tags->add($tagName); $tag->attributes->add('username'); $tag->attributes->add('id')->filterChain->append('#uint'); + $tag->attributes['id']->required = false; + $tag->template = '@'; - $tag->filterChain->prepend([static::class, 'addId'])->addParameterByName('userRepository'); + $tag->filterChain->prepend([static::class, 'addId']) + ->addParameterByName('userRepository') + ->setJS('function() { return true; }'); $configurator->Preg->match('/\B@(?[a-z0-9_-]+)(?!#)/i', $tagName); } @@ -49,8 +53,10 @@ class AddUserMentionsFormatter public static function addId($tag, UserRepository $users) { - $tag->setAttribute('id', $users->getIdForUsername($tag->getAttribute('username'))); + if ($id = $users->getIdForUsername($tag->getAttribute('username'))) { + $tag->setAttribute('id', $id); - return true; + return true; + } } }