diff --git a/GameEngine/BBCode.php b/GameEngine/BBCode.php
index 343fb3e2..3fa82100 100755
--- a/GameEngine/BBCode.php
+++ b/GameEngine/BBCode.php
@@ -188,19 +188,28 @@ $replace[85] = "
";
$replace[87] = "
";
$replace[88] = "
";
-for($i=0;$i<=$alliance;$i++){
+
+// TODO: all of the following is fundamentally broken and needs refactoring
+// ... it effectively searches tags and user IDs like this:
+// SELECT id FROM s1_alidata WHERE tag ='[message]abcd[/message]'
+// ... which can never find anything and generates invalid and BIG SQL queries
+
+/*for($i=0;$i<=$alliance;$i++){
$pattern[89+$i] = "/\[alliance".$i."\](.*?)\[\/alliance".$i."\]/is";
-${'bbcoded1_'.$i} = preg_replace($pattern[89+$i], "$1", $input);
-${'bbcoded1_'.$i} = preg_replace('/\[\/alliance'.$i.'\](.*?)\[\/message\]/is', '', $input);
-${'bbcoded1_'.$i} = preg_replace('/\[message\](.*?)\[alliance'.$i.'\]/is', '', ${'bbcoded1_'.$i});
-$aname = $database->getAllianceID(${'bbcoded1_'.$i});
-if($aname != ""){
-$replace[89+$i] = "$1";
+
+$aid = preg_match($pattern[89+$i], $input, $matches);
+$aname = $database->getAllianceID($matches[0]);
+if($aname){
+ $replace[89+$i] = "".$matches[0]."";
}else{
-$replace[89+$i] = "alliance not exist";
+ $replace[89+$i] = "alliance not exist";
}
+
+${'bbcoded1_'.$i} = preg_replace($pattern[89+$i], $replace[89+$i], $input);
+${'bbcoded1_'.$i} = preg_replace('/\[message\](.*?)\[alliance'.$i.'\]/is', '', ${'bbcoded1_'.$i});
$rep1 = 90+$i;
}
+
for($i=0;$i<=$player;$i++){
$pattern[$rep1+$i] = "/\[player".$i."\](.*?)\[\/player".$i."\]/is";
${'bbcoded2_'.$i} = preg_replace($pattern[$rep1+$i], "$1", $input);
@@ -214,6 +223,7 @@ $replace[$rep1+$i] = "player not exist";
}
$rep2 = $rep1+$i+1;
}
+
for($i=0;$i<=$report;$i++){
$pattern[$rep2+$i] = "/\[report".$i."\](.*?)\[\/report".$i."\]/is";
${'bbcoded3_'.$i} = preg_replace($pattern[$rep2+$i], "$1", $input);
@@ -229,6 +239,7 @@ $replace[$rep2+$i] = "report not exist";
}
$rep3 = $rep2+$i+1;
}
+
for($i=0;$i<=$coor;$i++){
$pattern[$rep3+$i] = "/\[coor".$i."\](.*?)\[\/coor".$i."\]/is";
${'bbcoded4_'.$i} = preg_replace($pattern[$rep3+$i], "$1", $input);
@@ -240,12 +251,14 @@ $xx = 1;
$cx = $x;
}
}
+
for($x = 0; $x > -401; $x--) {
if(preg_match('/^'.$x.'/', ${'bbcoded4_'.$i})){
$xx = 1;
$cx = $x;
}
}
+
for($y = 0; $y < 401; $y++) {
if(preg_match('/-'.$y.'$/', ${'bbcoded4_'.$i})){
$yy = 1;
@@ -255,24 +268,28 @@ $yy = 1;
$cy = $y;
}
}
+
if(preg_match('/|/', ${'bbcoded4_'.$i}) && $xx == 1 && $yy == 1){
-$wref = $database->getVilWref($cx,$cy);
-$cwref = $generator->getMapCheck($wref);
-if($wref != ""){
-$wref1 = $database->getVillageType3($wref);
-if($wref1['oasistype'] == 0 && $wref1['occupied'] == 1){
-$vname = $database->getVillageField($wref,"name");
-}else if($wref1['oasistype'] == 0 && $wref1['occupied'] == 0){
-$vname = "Abandoned valley";
-}else if($wref1['oasistype'] != 0 && $wref1['occupied'] == 1){
-$vname = "Occupied Oasis";
-}else if($wref1['oasistype'] != 0 && $wref1['occupied'] == 0){
-$vname = "Unoccupied Oasis";
-}
-$replace[$rep3+$i] = "$vname($cx|$cy)";
-}
-}
+ $wref = $database->getVilWref($cx,$cy);
+ $cwref = $generator->getMapCheck($wref);
+
+ if($wref != ""){
+ $wref1 = $database->getVillageType3($wref);
+ if($wref1['oasistype'] == 0 && $wref1['occupied'] == 1){
+ $vname = $database->getVillageField($wref,"name");
+ }else if($wref1['oasistype'] == 0 && $wref1['occupied'] == 0){
+ $vname = "Abandoned valley";
+ }else if($wref1['oasistype'] != 0 && $wref1['occupied'] == 1){
+ $vname = "Occupied Oasis";
+ }else if($wref1['oasistype'] != 0 && $wref1['occupied'] == 0){
+ $vname = "Unoccupied Oasis";
+ }
+ $replace[$rep3+$i] = "$vname($cx|$cy)";
+ }
}
+
+}*/
+
$input = preg_replace('/\[message\]/', '', $input);
$input = preg_replace('/\[\/message\]/', '', $input);
$bbcoded = preg_replace($pattern, $replace, $input);