Handle username with dots in user mentions
This commit is contained in:
@@ -86,18 +86,23 @@ class Markdown extends Parsedown
|
||||
*/
|
||||
protected function inlineUserLink(array $Excerpt)
|
||||
{
|
||||
if (! $this->isPublicLink && preg_match('/^@([^\s,!.:?]+)/', $Excerpt['text'], $matches)) {
|
||||
$user_id = $this->container['userModel']->getIdByUsername($matches[1]);
|
||||
if (! $this->isPublicLink && preg_match('/^@([^\s,!:?]+)/', $Excerpt['text'], $matches)) {
|
||||
$username = rtrim($matches[1], '.');
|
||||
$user = $this->container['userModel']->getByUsername($username);
|
||||
|
||||
if (! empty($user_id)) {
|
||||
$url = $this->container['helper']->url->href('UserViewController', 'profile', array('user_id' => $user_id));
|
||||
if (! empty($user)) {
|
||||
$url = $this->container['helper']->url->href('UserViewController', 'profile', array('user_id' => $user['id']));
|
||||
|
||||
return array(
|
||||
'extent' => strlen($matches[0]),
|
||||
'extent' => strlen($username) + 1,
|
||||
'element' => array(
|
||||
'name' => 'a',
|
||||
'text' => $matches[0],
|
||||
'attributes' => array('href' => $url, 'class' => 'user-mention-link'),
|
||||
'name' => 'a',
|
||||
'text' => '@' . $username,
|
||||
'attributes' => array(
|
||||
'href' => $url,
|
||||
'class' => 'user-mention-link',
|
||||
'title' => $user['name'] ?: $user['username'],
|
||||
),
|
||||
),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -58,7 +58,8 @@ class UserMentionJob extends BaseJob
|
||||
{
|
||||
$users = array();
|
||||
|
||||
if (preg_match_all('/@([^\s,!.:?]+)/', $text, $matches)) {
|
||||
if (preg_match_all('/@([^\s,!:?]+)/', $text, $matches)) {
|
||||
array_walk($matches[1], function (&$username) { $username = rtrim($username, '.'); });
|
||||
$users = $this->db->table(UserModel::TABLE)
|
||||
->columns('id', 'username', 'name', 'email', 'language')
|
||||
->eq('notifications_enabled', 1)
|
||||
|
||||
Reference in New Issue
Block a user