diff --git a/GameEngine/Database.php b/GameEngine/Database.php index b64636e4..d0b29c4f 100755 --- a/GameEngine/Database.php +++ b/GameEngine/Database.php @@ -1471,13 +1471,40 @@ class MYSQLi_DB { FORUM SUREY *************************/ - function CreatPost($post, $tids, $owner, $alliance, $player, $coor, $report) { - list($post, $tids, $owner, $alliance, $player, $coor, $report) = $this->escape_input($post, $tids, $owner, (int) $alliance, (int) $player, (int) $coor, (int) $report); + function CreatPost($post, $tids, $owner, $alliance, $player, $coor, $report, $fid2 = 0) { + global $message, $session; + list($post, $tids, $owner, $alliance, $player, $coor, $report, $fid2) = $this->escape_input($post, (int) $tids, $owner, (int) $alliance, (int) $player, (int) $coor, (int) $report, (int) $fid2); $date = time(); - $q = "INSERT into " . TB_PREFIX . "forum_post values (0,'$post','$tids','$owner','$date',$alliance,$player,$coor,$report)"; + $q = "INSERT into " . TB_PREFIX . "forum_post values (0,'$post',$tids,'$owner','$date',$alliance,$player,$coor,$report)"; mysqli_query($this->dblink,$q); - return mysqli_insert_id($this->dblink); + $postID = mysqli_insert_id($this->dblink); + + // create a message notification for each person subscribed to this topic + // ... for now it's everyone who ever posted there, there is no real un/subscription yet + if ($fid2 !== 0) { + $q = "SELECT DISTINCT owner FROM ".TB_PREFIX . "forum_post WHERE topic = $tids"; + $result = mysqli_query($this->dblink, $q); + if ($result->num_rows) { + while ($row = mysqli_fetch_assoc($result)) { + if ($row['owner'] != $owner) { + $this->sendMessage( + (int) $row['owner'], + 2, + 'New Message in Alliance Forum', + "Hi!\n\n".$this->escape($session->username)." posted a new message into your common topic. Here\\'s a link that will get you there: forum link\n\nYours sincerely,\nServer Robot :)", + 0, + 0, + 0, + 0, + 0, + true); + } + } + } + } + + return $postID; } function UpdatePostDate($id) { @@ -2206,8 +2233,10 @@ class MYSQLi_DB { return mysqli_query($this->dblink,$q); } - function sendMessage($client, $owner, $topic, $message, $send, $alliance, $player, $coor, $report) { - list($client, $owner, $topic, $message, $send, $alliance, $player, $coor, $report) = $this->escape_input((int) $client, (int) $owner, $topic, $message, (int) $send, (int) $alliance, (int) $player, (int) $coor, (int) $report); + function sendMessage($client, $owner, $topic, $message, $send, $alliance, $player, $coor, $report, $skip_escaping = false) { + if (!$skip_escaping) { + list($client, $owner, $topic, $message, $send, $alliance, $player, $coor, $report) = $this->escape_input((int) $client, (int) $owner, $topic, $message, (int) $send, (int) $alliance, (int) $player, (int) $coor, (int) $report); + } $time = time(); $q = "INSERT INTO " . TB_PREFIX . "mdata values (0,$client,$owner,'$topic','$message',0,0,$send,$time,0,0,$alliance,$player,$coor,$report)"; diff --git a/GameEngine/Message.php b/GameEngine/Message.php index 7f5a2a46..24ec6969 100755 --- a/GameEngine/Message.php +++ b/GameEngine/Message.php @@ -418,17 +418,19 @@ class Message { } } - private function sendMessage($recieve, $topic, $text) { + private function sendMessage($recieve, $topic, $text, $security_check = true) { global $session, $database; $user = $database->getUserField($recieve, "id", 1); // Vulnerability closed by Shadow - $q = "SELECT * FROM ".TB_PREFIX."mdata WHERE owner='".$session->uid."' AND time > ".time()." - 60"; - $res = mysqli_query($GLOBALS['link'],$q) or die(mysqli_error($database->dblink). " query ".$q); - $flood = mysqli_num_rows($res); - if($flood > 5) - return; //flood + if ($security_check) { + $q = "SELECT * FROM ".TB_PREFIX."mdata WHERE owner='".$session->uid."' AND time > ".time()." - 60"; + $res = mysqli_query($GLOBALS['link'],$q) or die(mysqli_error($database->dblink). " query ".$q); + $flood = mysqli_num_rows($res); + if($flood > 5) + return; //flood + } // Vulnerability closed by Shadow diff --git a/README b/README index c9ab9155..c340fed8 100644 --- a/README +++ b/README @@ -51,7 +51,8 @@ martinambrus changes: 39. not allowing installation if old data are still in database to prevent multiple worlds generation and game misbehavior 40. fixed quest 1 to reload the page and allow for immediate completion of the woodcutter 41. NPC links added to units in Hero Mansion -42. fixed random attacks attacker tribe (Natars) when building Wonder of the World +42. fixed random attacks attacker tribe (Natars) when building Wonder of the World +43. players who post in an Alliance forum are now notified of each subsequent post in that topic via messages Shadowss changes: diff --git a/Templates/Alliance/Forum/forum_7.tpl b/Templates/Alliance/Forum/forum_7.tpl index 55004893..0133bc95 100644 --- a/Templates/Alliance/Forum/forum_7.tpl +++ b/Templates/Alliance/Forum/forum_7.tpl @@ -11,6 +11,7 @@ foreach($topics as $arr) { +