The previous regex didn't correctly match users with . ' or - Signed-off-by: Joas Schilling <coding@schilljs.com>tags/v22.0.0beta1
@@ -213,17 +213,11 @@ class Provider implements IProvider { | |||
continue; | |||
} | |||
$pattern = '/(^|\s)(' . '@' . $mention['id'] . ')(\b)/'; | |||
if (strpos($mention['id'], ' ') !== false) { | |||
$pattern = '/(^|\s)(' . '@"' . $mention['id'] . '"' . ')(\b)?/'; | |||
$message = str_replace('@"' . $mention['id'] . '"', '{mention' . $mentionCount . '}', $message); | |||
if (strpos($mention['id'], ' ') === false && strpos($mention['id'], 'guest/') !== 0) { | |||
$message = str_replace('@' . $mention['id'], '{mention' . $mentionCount . '}', $message); | |||
} | |||
$message = preg_replace( | |||
$pattern, | |||
//'${1}' . $this->regexSafeUser($mention['id'], $displayName) . '${3}', | |||
'${1}' . '{mention' . $mentionCount . '}' . '${3}', | |||
$message | |||
); | |||
$mentions['mention' . $mentionCount] = $this->generateUserParameter($mention['id']); | |||
$mentionCount++; | |||
} |
@@ -195,7 +195,11 @@ class Notifier implements INotifier { | |||
// could contain characters like '@' for user IDs) but a one-based | |||
// index of the mentions of that type. | |||
$mentionParameterId = 'mention-' . $mention['type'] . $mentionTypeCount[$mention['type']]; | |||
$message = str_replace('@' . $mention['id'], '{' . $mentionParameterId . '}', $message); | |||
$message = str_replace('@"' . $mention['id'] . '"', '{' . $mentionParameterId . '}', $message); | |||
if (strpos($mention['id'], ' ') === false && strpos($mention['id'], 'guest/') !== 0) { | |||
$message = str_replace('@' . $mention['id'], '{' . $mentionParameterId . '}', $message); | |||
} | |||
try { | |||
$displayName = $this->commentsManager->resolveDisplayName($mention['type'], $mention['id']); | |||
} catch (\OutOfBoundsException $e) { |
@@ -233,6 +233,7 @@ class Comment implements IComment { | |||
return []; | |||
} | |||
$uids = array_unique($mentions[0]); | |||
usort($uids, 'mb_strlen'); | |||
$result = []; | |||
foreach ($uids as $uid) { | |||
$cleanUid = trim(substr($uid, 1), '"'); |