diff --git a/CHANGELOG b/CHANGELOG
index 6b70a08..20d8ea9 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,5 @@
+Version 1.15.3 - Mar. 6, 2016
+Allow using html tags in linkfilter without breaking dereferrer or image embed
Added French translation
Added 2 Spanish translations.
diff --git a/chat.php b/chat.php
index dd709f8..d80e160 100644
--- a/chat.php
+++ b/chat.php
@@ -2647,7 +2647,7 @@ function apply_linkfilter(){
}
}
foreach($filters as $filter){
- $U['message']=preg_replace_callback("/([^<]+)<\/a>/i",
+ $U['message']=preg_replace_callback("/(.*?(?=<\/a>))<\/a>/i",
function ($matched) use(&$filter){
return "".preg_replace("/$filter[match]/i", $filter['replace'], $matched[2]).'';
}
@@ -2655,7 +2655,7 @@ function apply_linkfilter(){
}
$redirect=get_setting('redirect');
if(get_setting('imgembed')){
- $U['message']=preg_replace_callback('/\[img\]\s?([^<]+)<\/a>/i',
+ $U['message']=preg_replace_callback('/\[img\]\s?(.*?(?=<\/a>))<\/a>/i',
function ($matched){
return str_ireplace('[/img]', '', "

");
}
@@ -2665,15 +2665,15 @@ function apply_linkfilter(){
$redirect="$_SERVER[SCRIPT_NAME]?action=redirect&url=";
}
if(get_setting('forceredirect')){
- $U['message']=preg_replace_callback('/([^<]+)<\/a>/',
+ $U['message']=preg_replace_callback('/(.*?(?=<\/a>))<\/a>/',
function ($matched) use($redirect){
return "$matched[2]";
}
, $U['message']);
- }elseif(preg_match_all('/([^<]+)<\/a>/', $U['message'], $matches)){
+ }elseif(preg_match_all('/(.*?(?=<\/a>))<\/a>/', $U['message'], $matches)){
foreach($matches[1] as $match){
if(!preg_match('~^http(s)?://~', $match)){
- $U['message']=preg_replace_callback('/([^<]+)<\/a>/',
+ $U['message']=preg_replace_callback('/(.*?(?=<\/a>))<\/a>/',
function ($matched) use($redirect){
return "$matched[2]";
}
@@ -2837,7 +2837,7 @@ function print_messages($delstatus=''){
$message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', $C['encryptkey'], 0, '1234567890123456');
}
if($injectRedirect){
- $message['text']=preg_replace_callback('/([^<]+)<\/a>/',
+ $message['text']=preg_replace_callback('/(.*?(?=<\/a>))<\/a>/',
function ($matched) use ($redirect){
return "$matched[2]";
}
@@ -2871,7 +2871,7 @@ function print_messages($delstatus=''){
$message['text']=openssl_decrypt($message['text'], 'aes-256-cbc', $C['encryptkey'], 0, '1234567890123456');
}
if($injectRedirect){
- $message['text']=preg_replace_callback('/([^<]+)<\/a>/',
+ $message['text']=preg_replace_callback('/(.*?(?=<\/a>))<\/a>/',
function ($matched) use($redirect) {
return "$matched[2]";
}
@@ -3375,7 +3375,7 @@ function load_lang(){
function load_config(){
global $C;
$C=array(
- 'version' =>'1.15.2', // Script version
+ 'version' =>'1.15.3', // Script version
'dbversion' =>14, // Database version
'keeplimit' =>3, // Amount of messages to keep in the database (multiplied with max messages displayed) - increase if you have many private messages
'msgencrypted' =>false, // Store messages encrypted in the database to prevent other database users from reading them - true/false - visit the setup page after editing!