diff --git a/system/src/Forum.php b/system/src/Forum.php
index 64b22222..6f0f2607 100644
--- a/system/src/Forum.php
+++ b/system/src/Forum.php
@@ -231,6 +231,7 @@ class Forum
if(!is_int($rows / 2)) { $bgcolor = 'ABED25'; } else { $bgcolor = '23ED25'; } $rows++;
$text = str_ireplace('[code]'.$code.'[/code]', 'Code:
', $text);
}
+
$rows = 0;
while(stripos($text, '[quote]') !== false && stripos($text, '[/quote]') !== false )
{
@@ -238,11 +239,31 @@ class Forum
if(!is_int($rows / 2)) { $bgcolor = 'AAAAAA'; } else { $bgcolor = 'CCCCCC'; } $rows++;
$text = str_ireplace('[quote]'.$quote.'[/quote]', '', $text);
}
- $rows = 0;
- while(stripos($text, '[url]') !== false && stripos($text, '[/url]') !== false )
- {
- $url = substr($text, stripos($text, '[url]')+5, stripos($text, '[/url]') - stripos($text, '[url]') - 5);
- $text = str_ireplace('[url]'.$url.'[/url]', ''.$url.'', $text);
+
+ $tagsToParse = [
+ 'url' => function ($str) {
+ return ''.$str.'';
+ },
+ 'player' => function ($str) {
+ return generateLink(getPlayerLink($str, false), $str, true);
+ },
+ 'guild' => function ($str) {
+ return generateLink(getGuildLink($str, false), $str, true);
+ },
+ 'house' => function ($str) {
+ return generateLink(getHouseLink($str, false), $str, true);
+ }
+ ];
+
+ foreach ($tagsToParse as $tag => $callback) {
+ while(stripos($text, "[$tag]") !== false && stripos($text, "[/$tag]") !== false
+ && stripos($text, "[$tag]") < stripos($text, "[/$tag]"))
+ {
+ $length = strlen("[$tag]");
+ $substr = substr($text, stripos($text, "[$tag]") + $length, stripos($text, "[/$tag]") - stripos($text, "[$tag]") - $length);
+
+ $text = str_ireplace('[' . $tag . ']' . $substr . '[/' . $tag . ']', $callback($substr), $text);
+ }
}
$xhtml = false;
@@ -252,9 +273,6 @@ class Forum
'#\[u\](.*?)\[/u\]#si' => ($xhtml ? '\\1' : '\\1'),
'#\[s\](.*?)\[/s\]#si' => ($xhtml ? '\\1' : '\\1'),
- '#\[guild\](.*?)\[/guild\]#si' => urldecode(generateLink(getGuildLink('$1', false), '$1', true)),
- '#\[house\](.*?)\[/house\]#si' => urldecode(generateLink(getHouseLink('$1', false), '$1', true)),
- '#\[player\](.*?)\[/player\]#si' => urldecode(generateLink(getPlayerLink('$1', false), '$1', true)),
// TODO: [poll] tag
'#\[color=(.*?)\](.*?)\[/color\]#si' => ($xhtml ? '\\2' : '\\2'),