Remove up to two characters from the end of @mention to also match @mention, etc.

This commit is contained in:
Daniel Winzen
2016-09-19 11:24:29 +02:00
parent 9156af26e5
commit 68a29558b1
2 changed files with 35 additions and 25 deletions

View File

@ -7,6 +7,7 @@ Add option to hide the list of chatters
Make nicknames in the chatters list clickable to send PMs more easily Make nicknames in the chatters list clickable to send PMs more easily
Add better multi-byte character support - New dependency: mbstring extension Add better multi-byte character support - New dependency: mbstring extension
Don't send messages to inbox when in incognito 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 Version 1.21 - Aug. 29, 2016
Don't display empty option for system messages in delete messages by name Don't display empty option for system messages in delete messages by name

View File

@ -2884,29 +2884,38 @@ function apply_filter(){
} }
$U['message']=preg_replace_callback('/\@([^\s]+)/i', function ($matched){ $U['message']=preg_replace_callback('/\@([^\s]+)/i', function ($matched){
global $db; global $db;
$nick=$matched[1];
$rest='';
for($i=0;$i<3;++$i){
//match case-sensitive present nicknames //match case-sensitive present nicknames
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'sessions WHERE nickname=?;'); $stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'sessions WHERE nickname=?;');
$stmt->execute([$matched[1]]); $stmt->execute([$nick]);
if($tmp=$stmt->fetch(PDO::FETCH_NUM)){ if($tmp=$stmt->fetch(PDO::FETCH_NUM)){
return style_this($matched[0], $tmp[0]); return style_this("@$nick", $tmp[0]).$rest;
} }
//match case-insensitive present nicknames //match case-insensitive present nicknames
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'sessions WHERE LOWER(nickname)=LOWER(?);'); $stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'sessions WHERE LOWER(nickname)=LOWER(?);');
$stmt->execute([$matched[1]]); $stmt->execute([$nick]);
if($tmp=$stmt->fetch(PDO::FETCH_NUM)){ if($tmp=$stmt->fetch(PDO::FETCH_NUM)){
return style_this($matched[0], $tmp[0]); return style_this("@$nick", $tmp[0]).$rest;
} }
//match case-sensitive members //match case-sensitive members
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE nickname=?;'); $stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE nickname=?;');
$stmt->execute([$matched[1]]); $stmt->execute([$nick]);
if($tmp=$stmt->fetch(PDO::FETCH_NUM)){ if($tmp=$stmt->fetch(PDO::FETCH_NUM)){
return style_this($matched[0], $tmp[0]); return style_this("@$nick", $tmp[0]).$rest;
} }
//match case-insensitive members //match case-insensitive members
$stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE LOWER(nickname)=LOWER(?);'); $stmt=$db->prepare('SELECT style FROM ' . PREFIX . 'members WHERE LOWER(nickname)=LOWER(?);');
$stmt->execute([$matched[1]]); $stmt->execute([$nick]);
if($tmp=$stmt->fetch(PDO::FETCH_NUM)){ if($tmp=$stmt->fetch(PDO::FETCH_NUM)){
return style_this($matched[0], $tmp[0]); 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]"; return "$matched[0]";
}, $U['message']); }, $U['message']);
@ -3252,8 +3261,8 @@ function save_setup($C){
} }
if($_REQUEST['maxmessage']<1){ if($_REQUEST['maxmessage']<1){
$_REQUEST['maxmessage']=1; $_REQUEST['maxmessage']=1;
}elseif($_REQUEST['maxmessage']>20000){ }elseif($_REQUEST['maxmessage']>16000){
$_REQUEST['maxmessage']=20000; $_REQUEST['maxmessage']=16000;
} }
if($_REQUEST['numnotes']<1){ if($_REQUEST['numnotes']<1){
$_REQUEST['numnotes']=1; $_REQUEST['numnotes']=1;