From: Alexander Ebert Date: Tue, 3 Mar 2015 17:47:35 +0000 (+0100) Subject: Fixed mention parser discarding second word if only the first matched X-Git-Tag: 2.1.1~3 X-Git-Url: https://git.stricted.de/?a=commitdiff_plain;h=28773f9271771d43fba7eeccf8d3043ebe3d80d8;p=GitHub%2FWoltLab%2FWCF.git Fixed mention parser discarding second word if only the first matched --- diff --git a/wcfsetup/install/files/lib/system/event/listener/PreParserAtUserListener.class.php b/wcfsetup/install/files/lib/system/event/listener/PreParserAtUserListener.class.php index fa7e080831..9acc7e5959 100644 --- a/wcfsetup/install/files/lib/system/event/listener/PreParserAtUserListener.class.php +++ b/wcfsetup/install/files/lib/system/event/listener/PreParserAtUserListener.class.php @@ -82,7 +82,7 @@ class PreParserAtUserListener implements IParameterizedEventListener { $userRegex->match($text, true, Regex::ORDER_MATCH_BY_SET); $matches = $userRegex->getMatches(); - + // if (!empty($matches)) { $usernames = array(); foreach ($matches as $match) { @@ -108,6 +108,7 @@ class PreParserAtUserListener implements IParameterizedEventListener { $text = $userRegex->replace($text, new Callback(function ($matches) use ($users) { // containing the full match $usernames = array($matches[1]); + // containing only the part before the first space if (isset($matches[2])) $usernames[] = $matches[2]; @@ -119,7 +120,15 @@ class PreParserAtUserListener implements IParameterizedEventListener { 'appendSession' => false, 'object' => $users[$username] )); - return "[url='".$link."']@".$users[$username]->username.'[/url]'; + + $mention = "[url='".$link."']@".$users[$username]->username.'[/url]'; + + // check if only the part before the first space matched, in that case append the second word + if (isset($matches[2]) && $matches[2] == $username) { + $mention .= mb_substr($matches[1], strlen($matches[2])); + } + + return $mention; } return $matches[0];