From 68a29558b1bff264df6c747ca8ad95d184ef4d86 Mon Sep 17 00:00:00 2001 From: Daniel Winzen Date: Mon, 19 Sep 2016 11:24:29 +0200 Subject: [PATCH] Remove up to two characters from the end of @mention to also match @mention, etc. --- CHANGELOG | 1 + chat.php | 59 ++++++++++++++++++++++++++++++++----------------------- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 7548615..8269d9b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -7,6 +7,7 @@ Add option to hide the list of chatters Make nicknames in the chatters list clickable to send PMs more easily Add better multi-byte character support - New dependency: mbstring extension Don't send messages to inbox when in incognito +Remove up to two characters from the end of @mention to also match @mention, etc. Version 1.21 - Aug. 29, 2016 Don't display empty option for system messages in delete messages by name diff --git a/chat.php b/chat.php index 472fb5e..cf8d306 100644 --- a/chat.php +++ b/chat.php @@ -2884,29 +2884,38 @@ function apply_filter(){ } $U['message']=preg_replace_callback('/\@([^\s]+)/i', function ($matched){ global $db; - //match case-sensitive present nicknames - $stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'sessions WHERE nickname=?;'); - $stmt->execute([$matched[1]]); - if($tmp=$stmt->fetch(PDO::FETCH_NUM)){ - return style_this($matched[0], $tmp[0]); - } - //match case-insensitive present nicknames - $stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'sessions WHERE LOWER(nickname)=LOWER(?);'); - $stmt->execute([$matched[1]]); - if($tmp=$stmt->fetch(PDO::FETCH_NUM)){ - return style_this($matched[0], $tmp[0]); - } - //match case-sensitive members - $stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE nickname=?;'); - $stmt->execute([$matched[1]]); - if($tmp=$stmt->fetch(PDO::FETCH_NUM)){ - return style_this($matched[0], $tmp[0]); - } - //match case-insensitive members - $stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE LOWER(nickname)=LOWER(?);'); - $stmt->execute([$matched[1]]); - if($tmp=$stmt->fetch(PDO::FETCH_NUM)){ - return style_this($matched[0], $tmp[0]); + $nick=$matched[1]; + $rest=''; + for($i=0;$i<3;++$i){ + //match case-sensitive present nicknames + $stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'sessions WHERE nickname=?;'); + $stmt->execute([$nick]); + if($tmp=$stmt->fetch(PDO::FETCH_NUM)){ + return style_this("@$nick", $tmp[0]).$rest; + } + //match case-insensitive present nicknames + $stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'sessions WHERE LOWER(nickname)=LOWER(?);'); + $stmt->execute([$nick]); + if($tmp=$stmt->fetch(PDO::FETCH_NUM)){ + return style_this("@$nick", $tmp[0]).$rest; + } + //match case-sensitive members + $stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE nickname=?;'); + $stmt->execute([$nick]); + if($tmp=$stmt->fetch(PDO::FETCH_NUM)){ + return style_this("@$nick", $tmp[0]).$rest; + } + //match case-insensitive members + $stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE LOWER(nickname)=LOWER(?);'); + $stmt->execute([$nick]); + if($tmp=$stmt->fetch(PDO::FETCH_NUM)){ + return style_this("@$nick", $tmp[0]).$rest; + } + if(strlen($nick)===1){ + break; + } + $rest=substr($nick, -1).$rest; + $nick=substr($nick, 0, -1); } return "$matched[0]"; }, $U['message']); @@ -3252,8 +3261,8 @@ function save_setup($C){ } if($_REQUEST['maxmessage']<1){ $_REQUEST['maxmessage']=1; - }elseif($_REQUEST['maxmessage']>20000){ - $_REQUEST['maxmessage']=20000; + }elseif($_REQUEST['maxmessage']>16000){ + $_REQUEST['maxmessage']=16000; } if($_REQUEST['numnotes']<1){ $_REQUEST['numnotes']=1;