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
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

View File

@ -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;