diff --git a/GameEngine/Alliance.php b/GameEngine/Alliance.php index a58ef511..112d3b57 100755 --- a/GameEngine/Alliance.php +++ b/GameEngine/Alliance.php @@ -80,7 +80,7 @@ class Alliance { /** * Determines if a player can act with the forum (edit/delete/create things, etc.) * - * @param array $datas The array which contains: [aid, alliance, forum_perm, admin, owner] + * @param array $datas The array which contains: [aid, alliance, forum_perm, admin, owner, forum_owner] * @return bool Returns true if you are able to act, false otherwise */ @@ -88,9 +88,51 @@ class Alliance { global $database, $session; return (/*$database->CheckEditRes($datas['aid']) == 1 && */((($database->isAllianceOwner($session->uid) == $datas['alliance'] || - ($datas['forum_perm'] == 1 && $session->alliance == $datas['alliance'])) && + ($datas['forum_perm'] == 1 && $session->alliance == $datas['alliance'])) && $session->alliance > 0 && ($mode || (isset($datas['admin']) && !empty($datas['admin']) && $datas['admin'] == "switch_admin"))) || - $datas['owner'] == $session->uid)); + $datas['owner'] == $session->uid) || ($datas['forum_owner'] == $session->uid && $datas['alliance'] == 0)); + } + + /** + * Create two string, representing alliances ID and users ID which can see a specific forum + * + * @param int $alliancesID A list of alliances ID + * @param int $alliancesName A list of alliances Name + * @param int $usersID A list of users ID + * @param int $usersName A list of users name + * @return array Returns the two string, composed by alliances ID and users ID + */ + + public function createForumVisiblity($alliancesID, $alliancesName, $usersID, $usersName){ + global $database, $session; + + $alliances = $users = []; + + //Deduplicate alliances + if(!empty($alliancesID)){ + foreach($alliancesID as $alliance){ + if(!empty($alliance) && is_numeric($alliance) && $database->aExist($alliance, 'id') && $alliance != $session->alliance) $alliances[$alliance] = true; + } + } + if(!empty($alliancesName)){ + foreach($alliancesName as $alliance){ + if(!empty($alliance) && !empty($allianceID = $database->getAllianceID($alliance)) && $allianceID != $session->alliance) $alliances[$allianceID] = true; + } + } + + //Deduplicate users + if(!empty($usersID)){ + foreach($usersID as $user) { + if(!empty($user) && is_numeric($user) && ($userAlly = $database->getUserAllianceID($user)) > 0 && $userAlly != $session->alliance && $database->getUserField($user, 'username', 0) != "[?]" && $user != $session->uid) $users[$user] = true; + } + } + if(!empty($usersName)){ + foreach($usersName as $user){ + if(!empty($user) && !empty($userID = $database->getUserField($user, 'id', 1)) && $userID != $session->uid && ($userAlly = $database->getUserAllianceID($userID)) > 0 && $userAlly != $session->alliance) $users[$userID] = true; + } + } + + return ['alliances' => implode(',', array_keys($alliances)), 'users' => implode(',', array_keys($users))]; } /** diff --git a/GameEngine/Database.php b/GameEngine/Database.php index 7d0de786..f24de746 100755 --- a/GameEngine/Database.php +++ b/GameEngine/Database.php @@ -2517,10 +2517,10 @@ class MYSQLi_DB implements IDbConnection { return mysqli_query($this->dblink,$q); } - function UpdateEditForum($id, $name, $des, $ally) { - list($id, $name, $des, $ally) = $this->escape_input((int) $id, $name, $des, (int) $ally); + function UpdateEditForum($id, $name, $des, $ally, $alliances, $users) { + list($id, $name, $des, $ally, $alliances, $users) = $this->escape_input((int) $id, $name, $des, (int) $ally, $alliances, $users); - $q = "UPDATE " . TB_PREFIX . "forum_cat SET forum_name = '$name', forum_des = '$des' WHERE id = $id AND alliance = $ally"; + $q = "UPDATE " . TB_PREFIX . "forum_cat SET forum_name = '$name', forum_des = '$des', display_to_alliances = '$alliances', display_to_users = '$users' WHERE id = $id AND alliance = $ally"; return mysqli_query($this->dblink,$q); } @@ -2576,10 +2576,10 @@ class MYSQLi_DB implements IDbConnection { return $this->mysqli_fetch_all($result); } - function CreatForum($owner, $alli, $name, $des, $area) { - list($owner, $alli, $name, $des, $area) = $this->escape_input($owner, $alli, $name, $des, $area); + function CreatForum($owner, $alli, $name, $des, $area, $alliances, $users) { + list($owner, $alli, $name, $des, $area, $alliances, $users) = $this->escape_input($owner, $alli, $name, $des, $area, $alliances, $users); - $q = "INSERT into " . TB_PREFIX . "forum_cat values (0, 0,'$owner','$alli','$name','$des','$area')"; + $q = "INSERT into " . TB_PREFIX . "forum_cat values (0, 0,'$owner','$alli','$name','$des','$area','$alliances','$users')"; mysqli_query($this->dblink,$q); return mysqli_insert_id($this->dblink); } @@ -2870,11 +2870,7 @@ class MYSQLi_DB implements IDbConnection { $q = "SELECT $type FROM " . TB_PREFIX . "alidata where $type = '$ref'"; $result = mysqli_query($this->dblink,$q); - if(mysqli_num_rows($result)) { - return true; - } else { - return false; - } + return mysqli_num_rows($result); } function modifyPoints($aid, $points, $amt) { diff --git a/Templates/Alliance/Forum/forum_1.tpl b/Templates/Alliance/Forum/forum_1.tpl index c275b796..7bd6b01b 100644 --- a/Templates/Alliance/Forum/forum_1.tpl +++ b/Templates/Alliance/Forum/forum_1.tpl @@ -5,7 +5,10 @@ ## FIX BY RONIX ## ## TRAVIANZ ## ############################################################ -if($session->access!=BANNED){ +if($session->access == BANNED){ + header("Location: banned.php"); + exit; +} ?> - -

- \ No newline at end of file + +

\ No newline at end of file diff --git a/Templates/Alliance/Forum/forum_2.tpl b/Templates/Alliance/Forum/forum_2.tpl index 499db6f5..fb7b6aec 100644 --- a/Templates/Alliance/Forum/forum_2.tpl +++ b/Templates/Alliance/Forum/forum_2.tpl @@ -19,9 +19,10 @@ $confederation = mysqli_fetch_array(mysqli_query($database->dblink, "SELECT Coun $alliance = mysqli_fetch_array(mysqli_query($database->dblink, "SELECT Count(*) as Total FROM ".TB_PREFIX."forum_cat WHERE alliance = $ally AND forum_area = 0"), MYSQLI_ASSOC); $closed = mysqli_fetch_array(mysqli_query($database->dblink, "SELECT Count(*) as Total FROM ".TB_PREFIX."forum_cat WHERE alliance = $ally AND forum_area = 3"), MYSQLI_ASSOC); $countArray = [$alliance['Total'], $public['Total'], $confederation['Total'], $closed['Total']]; -$forumArea = ["Alliance Forum", "Public Forum", "Confederation Forum", "Closed Forum"]; +$forumArea = ["Alliance Forum(s)", "Public Forum(s)", "Confederation Forum(s)", "Closed Forum(s)"]; foreach($countArray as $index => $count){ + if($session->alliance > 0 || ($session->alliance == 0 && $index == 1)){ ?> @@ -36,15 +37,15 @@ foreach($countArray as $index => $count){ - +"; - + if($count == 0) echo ""; + } foreach($forumcat as $arr){ - if($arr['forum_area'] != $index) continue; + if($arr['forum_area'] != $index || ($session->alliance == 0 && $arr['forum_area'] != 1)) continue; $checkArray = ['aid' => $aid, 'alliance' => $arr['alliance'], 'forum_perm' => $opt['opt5'], - 'owner' => 0, 'admin' => $_GET['admin']]; + 'owner' => $arr['owner'], 'admin' => $_GET['admin'], 'forum_owner' => $arr['owner']]; $countop = $database->CountCat($arr['id']); $lpost = $owner = ""; @@ -92,10 +93,10 @@ foreach($forumcat as $arr){
 Last post 
".NO_FORUMS_YET."
".NO_FORUMS_YET."

- New forum - Toggle Admin mode'; - } - ?> +New forum'; +if(isset($opt['opt5']) && $opt['opt5'] == 1){ + echo 'Toggle Admin mode'; +} +?>

\ No newline at end of file diff --git a/Templates/Alliance/Forum/forum_3.tpl b/Templates/Alliance/Forum/forum_3.tpl index 19c238f2..fd6626f9 100644 --- a/Templates/Alliance/Forum/forum_3.tpl +++ b/Templates/Alliance/Forum/forum_3.tpl @@ -12,13 +12,13 @@ if($session->access == BANNED){ $topicID = $_GET['idt']; $showTopic = reset($database->ShowTopic($topicID)); +$forumData = reset($database->ForumCatEdit($showTopic['cat'])); $title = stripslashes($showTopic['title']); ?>
- @@ -32,8 +32,11 @@ $title = stripslashes($showTopic['title']);
Edit topicMove topic
created:
$aid, 'alliance' => $arr['alliance'], 'forum_perm' => $opt['opt5'], - 'owner' => $arr['owner'], 'admin' => $_GET['admin']]; + 'owner' => $arr['owner'], 'admin' => $_GET['admin'], 'forum_owner' => $forumData['owner']]; if(Alliance::canAct($checkArray)){ echo '
editdelete

'; @@ -146,7 +147,7 @@ if($database->checkSurvey($arr['id'])){ foreach($posts as $po){ $topic = reset($database->ShowTopic($po['topic'])); $checkArray = ['aid' => $aid, 'alliance' => $topic['alliance'], 'forum_perm' => $opt['opt5'], - 'owner' => $po['owner'], 'admin' => $_GET['admin']]; + 'owner' => $po['owner'], 'admin' => $_GET['admin'], 'forum_owner' => $forumData['owner']]; $date = date('m/d/y H:i a', $po['date']); $countAu = $database->CountTopic($po['owner']); diff --git a/Templates/Alliance/Forum/forum_8.tpl b/Templates/Alliance/Forum/forum_8.tpl index b167e3f3..01f2c612 100644 --- a/Templates/Alliance/Forum/forum_8.tpl +++ b/Templates/Alliance/Forum/forum_8.tpl @@ -11,11 +11,15 @@ if($session->access == BANNED){ } $forumData = reset($database->ForumCatEdit($_GET['idf'])); -if(empty($forumData) || $forumData['alliance'] != $session->alliance) $alliance->redirect($_GET); +if(empty($forumData) || ($forumData['alliance'] > 0 && ($forumData['alliance'] != $session->alliance || !$opt['opt5'])) || + ($forumData['alliance'] == 0 && $forumData['owner'] != $session->uid)) $alliance->redirect($_GET); + +$users = $alliances = []; $cat_name = stripslashes($forumData['forum_name']); $cat_des = stripslashes($forumData['forum_des']); - +if(!empty($forumData['display_to_alliances'])) $alliances = explode(',', $forumData['display_to_alliances']); +if(!empty($forumData['display_to_users'])) $users = explode(',', $forumData['display_to_users']); ?> + +

\ No newline at end of file diff --git a/Templates/Alliance/alli_menu.tpl b/Templates/Alliance/alli_menu.tpl index 7854a853..1f48d5d6 100644 --- a/Templates/Alliance/alli_menu.tpl +++ b/Templates/Alliance/alli_menu.tpl @@ -1,4 +1,4 @@ -alliance == $aid) { +alliance == $aid && $session->alliance > 0) { ?>
>Overview diff --git a/Templates/Alliance/forum.tpl b/Templates/Alliance/forum.tpl index 41cfeed1..7dcf2405 100644 --- a/Templates/Alliance/forum.tpl +++ b/Templates/Alliance/forum.tpl @@ -14,20 +14,32 @@ if(!isset($aid)){ $allianceinfo = $database->getAlliance($aid); $opt = $database->getAlliPermissions($session->uid, $aid); -echo "

".$allianceinfo['tag']." - ".$allianceinfo['name']."

"; +echo $aid > 0 ? "

".$allianceinfo['tag']." - ".$allianceinfo['name']."

" : "

Forum

"; include ("alli_menu.tpl"); $ids = $_GET['s']; -if(isset($_POST['new']) && $opt['opt5'] == 1 && +if(isset($_POST['new']) && isset($_POST['u1']) && !empty($_POST['u1']) && isset($_POST['u2']) && !empty($_POST['u2']) && isset($_POST['bid']) && $_POST['bid'] >= 0 && $_POST['bid'] <= 3) { + //Initialization + $forumViewable['alliances'] = $forumViewable['users'] = ""; + + //Check if the user has admin permissions or not + $cantEdit = $session->alliance == 0 || !$opt['opt5']; + if($cantEdit && $_POST['bid'] != 1) $_POST['bid'] = 1; + + //Ignore it if the forum is public + if($_POST['bid'] != 1) { + $forumViewable = $alliance->createForumVisiblity($_POST['allys_by_id'], $_POST['allys_by_name'], $_POST['users_by_id'], $_POST['users_by_name']); + } + $forum_name = $_POST['u1']; $forum_des = $_POST['u2']; $forum_owner = $session->uid; $forum_area = $_POST['bid']; - $database->CreatForum($forum_owner, $aid, $forum_name, $forum_des, $forum_area); + $database->CreatForum($forum_owner, $cantEdit ? 0 : $session->alliance, $forum_name, $forum_des, $forum_area, $forumViewable['alliances'], $forumViewable['users']); } if(isset($_POST['edittopic']) && @@ -35,27 +47,40 @@ if(isset($_POST['edittopic']) && isset($_POST['tid']) && !empty($_POST['tid']) && isset($_POST['thema']) && !empty($_POST['thema']) && Alliance::canAct(['aid' => $aid, 'alliance' => ($topic = reset($database->ShowTopic($_POST['tid'])))['alliance'], - 'forum_perm' => $opt['opt5'], 'admin' => $_GET['admin'], 'owner' => $topic['owner']], 1) && - (($forumData = reset($database->ForumCatEdit($_POST['fid'])))['alliance'] == $session->alliance || $forumData['forum_area'] == 1)) + 'forum_perm' => $opt['opt5'], 'admin' => $_GET['admin'], 'owner' => $topic['owner'], + 'forum_owner' => ($forumData = reset($database->ForumCatEdit($_POST['fid'])))['owner']], 1) && + ($forumData['alliance'] == $session->alliance || $forumData['forum_area'] == 1)) { + //Additional security checks + $oldForumData = reset($database->ForumCatEdit($topic['cat'])); + if($oldForumData['alliance'] == 0 && $oldForumData['owner'] != $forumData['owner']) $_POST['fid'] = $oldForumData['id']; + $topic_name = $_POST['thema']; $topic_cat = $_POST['fid']; $topic_id = $_POST['tid']; $database->UpdateEditTopic($topic_id, $topic_name, $topic_cat); } -if(isset($_POST['editforum']) && $opt['opt5'] == 1 && +if(isset($_POST['editforum']) && isset($_POST['fid']) && !empty($_POST['fid']) && isset($_POST['u1']) && !empty($_POST['u1']) && isset($_POST['u2']) && !empty($_POST['u2']) && - $database->ForumCatAlliance($_POST['fid']) == $session->alliance) + (($database->ForumCatAlliance($_POST['fid']) == $session->alliance && $opt['opt5'] == 1) || + ($forumData = reset($database->ForumCatEdit($_POST['fid'])))['owner'] == $session->uid && $forumData['alliance'] == 0)) { + $forumViewable['alliances'] = $forumViewable['users'] = ""; + + //Ignore it if the forum is public + if($forumData['forum_area'] != 1) { + $forumViewable = $alliance->createForumVisiblity($_POST['allys_by_id'], $_POST['allys_by_name'], $_POST['users_by_id'], $_POST['users_by_name']); + } + $forum_name = $_POST['u1']; $forum_name = htmlspecialchars($forum_name); $forum_des = $_POST['u2']; $forum_des = htmlspecialchars($forum_des); $forum_id = $_POST['fid']; - $database->UpdateEditForum($forum_id, $forum_name, $forum_des, $session->alliance); + $database->UpdateEditForum($forum_id, $forum_name, $forum_des, $session->alliance, $forumViewable['alliances'], $forumViewable['users']); } if(isset($_POST['newtopic']) && isset($_POST['thema']) && isset($_POST['text']) && isset($_POST['fid']) @@ -214,96 +239,99 @@ if(isset($_POST['newpost']) && isset($_POST['text']) && !empty($_POST['text']) & if(isset($_POST['editans']) && isset($_POST['text']) && !empty($_POST['text']) && isset($_POST['tid']) && !empty($_POST['tid']) && - Alliance::canAct(['aid' => $aid, 'alliance' => ($topic = reset($database->ShowTopic($_POST['tid'])))['alliance'], - 'forum_perm' => $opt['opt5'], 'admin' => $_GET['admin'], 'owner' => $topic['owner']], 1)){ - - $text = $_POST['text']; + Alliance::canAct(['aid' => $aid, 'alliance' => ($topic = reset($database->ShowTopic($_POST['tid'])))['alliance'], + 'forum_perm' => $opt['opt5'], 'admin' => $_GET['admin'], 'owner' => $topic['owner'], + 'forum_owner' => reset($database->ForumCatEdit($topic['cat']))['owner']], 1)) +{ + $text = $_POST['text']; $topic_id = $_POST['tid']; - + $text = preg_replace('/\[message\]/', '', $text); $text = preg_replace('/\[\/message\]/', '', $text); for($i = 0; $i <= $_POST['alliance0']; $i++){ - $text = preg_replace('/\[alliance'.$i.'\]/', '[alliance0]', $text); - $text = preg_replace('/\[\/alliance'.$i.'\]/', '[/alliance0]', $text); + $text = preg_replace('/\[alliance' . $i . '\]/', '[alliance0]', $text); + $text = preg_replace('/\[\/alliance' . $i . '\]/', '[/alliance0]', $text); } for($i = 0; $i <= $_POST['player0']; $i++){ - $text = preg_replace('/\[player'.$i.'\]/', '[player0]', $text); - $text = preg_replace('/\[\/player'.$i.'\]/', '[/player0]', $text); + $text = preg_replace('/\[player' . $i . '\]/', '[player0]', $text); + $text = preg_replace('/\[\/player' . $i . '\]/', '[/player0]', $text); } for($i = 0; $i <= $_POST['coor0']; $i++){ - $text = preg_replace('/\[coor'.$i.'\]/', '[coor0]', $text); - $text = preg_replace('/\[\/coor'.$i.'\]/', '[/coor0]', $text); + $text = preg_replace('/\[coor' . $i . '\]/', '[coor0]', $text); + $text = preg_replace('/\[\/coor' . $i . '\]/', '[/coor0]', $text); } for($i = 0; $i <= $_POST['report0']; $i++){ - $text = preg_replace('/\[report'.$i.'\]/', '[report0]', $text); - $text = preg_replace('/\[\/report'.$i.'\]/', '[/report0]', $text); + $text = preg_replace('/\[report' . $i . '\]/', '[report0]', $text); + $text = preg_replace('/\[\/report' . $i . '\]/', '[/report0]', $text); } - + if(!preg_match('/\[message\]/', $text) && !preg_match('/\[\/message\]/', $text)){ - $text = "[message]".$text."[/message]"; + $text = "[message]" . $text . "[/message]"; $alliances = $player = $coor = $report = 0; for($i = 0; $i <= $alliances; $i++){ - if(preg_match('/\[alliance'.$i.'\]/', $text) && preg_match('/\[\/alliance'.$i.'\]/', $text)){ - $alliance1 = preg_replace('/\[message\](.*?)\[\/alliance'.$i.'\]/is', '', $text); - if(preg_match('/\[alliance'.$i.'\]/', $alliance1) && preg_match('/\[\/alliance'.$i.'\]/', $alliance1)){ + if(preg_match('/\[alliance' . $i . '\]/', $text) && preg_match('/\[\/alliance' . $i . '\]/', $text)){ + $alliance1 = preg_replace('/\[message\](.*?)\[\/alliance' . $i . '\]/is', '', $text); + if(preg_match('/\[alliance' . $i . '\]/', $alliance1) && preg_match('/\[\/alliance' . $i . '\]/', $alliance1)){ $j = $i + 1; - $alliance2 = preg_replace('/\[\/alliance'.$i.'\](.*?)\[\/message\]/is', '', $text); - $alliance1 = preg_replace('/\[alliance'.$i.'\]/', '[alliance'.$j.']', $alliance1); - $alliance1 = preg_replace('/\[\/alliance'.$i.'\]/', '[/alliance'.$j.']', $alliance1); - $text = $alliance2."[/alliance".$i."]".$alliance1; + $alliance2 = preg_replace('/\[\/alliance' . $i . '\](.*?)\[\/message\]/is', '', $text); + $alliance1 = preg_replace('/\[alliance' . $i . '\]/', '[alliance' . $j . ']', $alliance1); + $alliance1 = preg_replace('/\[\/alliance' . $i . '\]/', '[/alliance' . $j . ']', $alliance1); + $text = $alliance2 . "[/alliance" . $i . "]" . $alliance1; $alliances += 1; } } } for($i = 0; $i <= $player; $i++){ - if(preg_match('/\[player'.$i.'\]/', $text) && preg_match('/\[\/player'.$i.'\]/', $text)){ - $player1 = preg_replace('/\[message\](.*?)\[\/player'.$i.'\]/is', '', $text); - if(preg_match('/\[player'.$i.'\]/', $player1) && preg_match('/\[\/player'.$i.'\]/', $player1)){ + if(preg_match('/\[player' . $i . '\]/', $text) && preg_match('/\[\/player' . $i . '\]/', $text)){ + $player1 = preg_replace('/\[message\](.*?)\[\/player' . $i . '\]/is', '', $text); + if(preg_match('/\[player' . $i . '\]/', $player1) && preg_match('/\[\/player' . $i . '\]/', $player1)){ $j = $i + 1; - $player2 = preg_replace('/\[\/player'.$i.'\](.*?)\[\/message\]/is', '', $text); - $player1 = preg_replace('/\[player'.$i.'\]/', '[player'.$j.']', $player1); - $player1 = preg_replace('/\[\/player'.$i.'\]/', '[/player'.$j.']', $player1); - $text = $player2."[/player".$i."]".$player1; + $player2 = preg_replace('/\[\/player' . $i . '\](.*?)\[\/message\]/is', '', $text); + $player1 = preg_replace('/\[player' . $i . '\]/', '[player' . $j . ']', $player1); + $player1 = preg_replace('/\[\/player' . $i . '\]/', '[/player' . $j . ']', $player1); + $text = $player2 . "[/player" . $i . "]" . $player1; $player += 1; } } } for($i = 0; $i <= $coor; $i++){ - if(preg_match('/\[coor'.$i.'\]/', $text) && preg_match('/\[\/coor'.$i.'\]/', $text)){ - $coor1 = preg_replace('/\[message\](.*?)\[\/coor'.$i.'\]/is', '', $text); - if(preg_match('/\[coor'.$i.'\]/', $coor1) && preg_match('/\[\/coor'.$i.'\]/', $coor1)){ + if(preg_match('/\[coor' . $i . '\]/', $text) && preg_match('/\[\/coor' . $i . '\]/', $text)){ + $coor1 = preg_replace('/\[message\](.*?)\[\/coor' . $i . '\]/is', '', $text); + if(preg_match('/\[coor' . $i . '\]/', $coor1) && preg_match('/\[\/coor' . $i . '\]/', $coor1)){ $j = $i + 1; - $coor2 = preg_replace('/\[\/coor'.$i.'\](.*?)\[\/message\]/is', '', $text); - $coor1 = preg_replace('/\[coor'.$i.'\]/', '[coor'.$j.']', $coor1); - $coor1 = preg_replace('/\[\/coor'.$i.'\]/', '[/coor'.$j.']', $coor1); - $text = $coor2."[/coor".$i."]".$coor1; + $coor2 = preg_replace('/\[\/coor' . $i . '\](.*?)\[\/message\]/is', '', $text); + $coor1 = preg_replace('/\[coor' . $i . '\]/', '[coor' . $j . ']', $coor1); + $coor1 = preg_replace('/\[\/coor' . $i . '\]/', '[/coor' . $j . ']', $coor1); + $text = $coor2 . "[/coor" . $i . "]" . $coor1; $coor += 1; } } } for($i = 0; $i <= $report; $i++){ - if(preg_match('/\[report'.$i.'\]/', $text) && preg_match('/\[\/report'.$i.'\]/', $text)){ - $report1 = preg_replace('/\[message\](.*?)\[\/report'.$i.'\]/is', '', $text); - if(preg_match('/\[report'.$i.'\]/', $report1) && preg_match('/\[\/report'.$i.'\]/', $report1)){ + if(preg_match('/\[report' . $i . '\]/', $text) && preg_match('/\[\/report' . $i . '\]/', $text)){ + $report1 = preg_replace('/\[message\](.*?)\[\/report' . $i . '\]/is', '', $text); + if(preg_match('/\[report' . $i . '\]/', $report1) && preg_match('/\[\/report' . $i . '\]/', $report1)){ $j = $i + 1; - $report2 = preg_replace('/\[\/report'.$i.'\](.*?)\[\/message\]/is', '', $text); - $report1 = preg_replace('/\[report'.$i.'\]/', '[report'.$j.']', $report1); - $report1 = preg_replace('/\[\/report'.$i.'\]/', '[/report'.$j.']', $report1); - $text = $report2."[/report".$i."]".$report1; + $report2 = preg_replace('/\[\/report' . $i . '\](.*?)\[\/message\]/is', '', $text); + $report1 = preg_replace('/\[report' . $i . '\]/', '[report' . $j . ']', $report1); + $report1 = preg_replace('/\[\/report' . $i . '\]/', '[/report' . $j . ']', $report1); + $text = $report2 . "[/report" . $i . "]" . $report1; $report += 1; } } } - + $database->EditUpdateTopic($topic_id, $text, $alliances, $player, $coor, $report); } + } if(isset($_POST['editpost']) && isset($_POST['text']) && !empty($_POST['text']) && isset($_POST['pod']) && !empty($_POST['pod']) && Alliance::canAct(['aid' => $aid, - 'alliance' => reset($database->ShowTopic(($post = reset($database->ShowPostEdit($_POST['pod'])))['topic']))['alliance'], - 'forum_perm' => $opt['opt5'], 'owner' => $post['owner'], 'admin' => $_GET['admin']], 1)) + 'alliance' => ($topic = reset($database->ShowTopic(($post = reset($database->ShowPostEdit($_POST['pod'])))['topic'])))['alliance'], + 'forum_perm' => $opt['opt5'], 'owner' => $post['owner'], 'admin' => $_GET['admin'], + 'forum_owner' => ($forumData = reset($database->ForumCatEdit($topic['cat'])))['owner']], 1)) { $text = $_POST['text']; @@ -401,18 +429,20 @@ if($_GET['admin'] == "switch_admin"){ } } -if($_GET['admin'] == "pos" && isset($_GET['res']) && isset($_GET['fid']) && !empty($_GET['fid']) && $opt['opt5'] == 1 && - ($forumData = reset($database->ForumCatEdit($_GET['fid'])))['alliance'] == $session->alliance) +if($_GET['admin'] == "pos" && isset($_GET['res']) && isset($_GET['fid']) && !empty($_GET['fid']) && + (($database->ForumCatAlliance($_GET['fid']) == $session->alliance && $opt['opt5'] == 1) || + ($forumData = reset($database->ForumCatEdit($_GET['fid'])))['owner'] == $session->uid && $forumData['alliance'] == 0)) { $database->moveForum($_GET['fid'], $forumData['forum_area'], $session->alliance, $_GET['res']); //Move the forum to the top/bottom of the list $alliance->redirect($_GET); } -elseif(isset($_GET['admin']) && !empty($_GET['admin']) && isset($_GET['idt']) && !empty($_GET['idt'])){ +elseif(isset($_GET['idt']) && !empty($_GET['idt'])){ //Get the post informations $topicID = $_GET['idt']; $post = reset($database->ShowTopic($topicID)); - $checkArray = ['aid' => $aid, 'alliance' => $post['alliance'], 'forum_perm' => $opt['opt5'], 'admin' => $_GET['admin'], 'owner' => $post['owner']]; + $checkArray = ['aid' => $aid, 'alliance' => $post['alliance'], 'forum_perm' => $opt['opt5'], 'admin' => $_GET['admin'], + 'owner' => $post['owner'], 'forum_owner' => reset($database->ForumCatEdit($post['cat']))['owner']]; //Exit if we've the rights to modify it if(!Alliance::canAct($checkArray, 1)) $alliance->redirect($_GET); @@ -451,9 +481,9 @@ elseif(isset($_GET['admin']) && !empty($_GET['admin']) && isset($_GET['idt']) && if($_GET['admin'] != "edittopic" && $_GET['admin'] != "editans") $alliance->redirect($_GET); } -elseif($_GET['admin'] == "delforum" && $opt['opt5'] == 1 && - !empty($catToDelete = reset($database->ForumCatEdit($_GET['idf']))) && - $catToDelete['alliance'] == $session->alliance) +elseif($_GET['admin'] == "delforum" && isset($_GET['idf']) && !empty($_GET['idf']) && + (($database->ForumCatAlliance($_GET['idf']) == $session->alliance && $opt['opt5'] == 1) || + ($forumData = reset($database->ForumCatEdit($_GET['idf'])))['owner'] == $session->uid && $forumData['alliance'] == 0)) { $database->DeleteCat($_GET['idf']); // delete forum $alliance->redirect($_GET); @@ -462,18 +492,20 @@ elseif($_GET['admin'] == "delpost" && isset($_GET['pod']) && !empty($_GET['pod'] isset($_GET['tid']) && !empty($_GET['tid']) && isset($_GET['fid2']) && !empty($_GET['fid2']) && Alliance::canAct(['aid' => $aid, 'alliance' => reset($database->ShowTopic($_GET['tid']))['alliance'], 'forum_perm' => $opt['opt5'], - 'owner' => reset($database->ShowPostEdit($_GET['pod']))['owner'], 'admin' => $_GET['admin']], 1)) + 'owner' => reset($database->ShowPostEdit($_GET['pod']))['owner'], 'admin' => $_GET['admin'], + 'forum_owner' => reset($database->ForumCatEdit($_GET['fid2']))['owner']], 1)) { $database->DeletePost($_GET['pod']); //Delete post header("Location: allianz.php?s=2&fid2=".$_GET['fid2']."&tid=".$_GET['tid']); exit; } -elseif($_GET['admin'] == "newforum" && $opt['opt5'] == 1) include("Forum/forum_1.tpl"); // new forum +elseif($_GET['admin'] == "newforum") include("Forum/forum_1.tpl"); //New forum elseif($_GET['admin'] == "editpost" && isset($_GET['pod']) && !empty($_GET['pod']) && isset($_GET['tid']) && !empty($_GET['tid']) && isset($_GET['fid']) && !empty($_GET['fid']) && Alliance::canAct(['aid' => $aid, 'alliance' => reset($database->ShowTopic($_GET['tid']))['alliance'], 'forum_perm' => $opt['opt5'], - 'owner' => reset($database->ShowPostEdit($_GET['pod']))['owner'], 'admin' => $_GET['admin']], 1)) //Edit post + 'owner' => reset($database->ShowPostEdit($_GET['pod']))['owner'], 'admin' => $_GET['admin'], + 'forum_owner' => reset($database->ForumCatEdit($_GET['fid']))['owner']], 1)) //Edit post { include("Forum/forum_10.tpl"); } @@ -481,10 +513,10 @@ elseif(isset($_GET['fid'])){ if(isset($_GET['ac'])) include("Forum/forum_5.tpl"); //New topic else include("Forum/forum_4.tpl"); //Show topics } -elseif($_GET['admin'] == "editforum" && $opt['opt5'] == 1) include("Forum/forum_8.tpl"); // edit forum +elseif($_GET['admin'] == "editforum") include("Forum/forum_8.tpl"); //Edit forum elseif(isset($_GET['tid'])){ if(isset($_GET['ac'])) include ("Forum/forum_7.tpl"); //New post - else include ("Forum/forum_6.tpl"); //Showtopic + else include ("Forum/forum_6.tpl"); //Show topic } else include("Forum/forum_2.tpl"); ?> \ No newline at end of file diff --git a/Templates/menu.tpl b/Templates/menu.tpl index 5ba5c62b..f6d37d3c 100644 --- a/Templates/menu.tpl +++ b/Templates/menu.tpl @@ -57,6 +57,7 @@ div.c1 {text-align: center} } ?>

+ alliance > 0){ +if(isset($_GET['aid']) || isset($_GET['fid']) || isset($_GET['fid2']) || + $session->alliance > 0 || ($session->alliance == 0 && isset($_GET['s']) && $_GET['s'] == 2)){ ?> <?php - - echo SERVER_NAME . ' » » » Alliance '; - - if (!empty($_GET['s'])) { - switch ($_GET['s']) { - case '2': - echo 'Forum ('.$alliance->allianceArray['tag'] . ' - ' . $alliance->allianceArray['name'].')'; - break; - - case '6': - echo 'Chat ('.$alliance->allianceArray['tag'] . ' - ' . $alliance->allianceArray['name'].')'; - break; - - case '3': - echo 'Attacks ('.$alliance->allianceArray['tag'] . ' - ' . $alliance->allianceArray['name'].')'; - break; - - case '4': - echo 'News ('.$alliance->allianceArray['tag'] . ' - ' . $alliance->allianceArray['name'].')'; - break; - - case '5': - echo 'Options ('.$alliance->allianceArray['tag'] . ' - ' . $alliance->allianceArray['name'].')'; - break; - } - } else { - echo $alliance->allianceArray['tag'] . ' - ' . $alliance->allianceArray['name']; - } + echo SERVER_NAME . ' » » » Alliance '; + + if(!empty($_GET['s'])){ + switch($_GET['s']){ + case '2' : + if($session->alliance == 0) echo 'Forum (No alliance)'; + else echo 'Forum (' . $alliance->allianceArray['tag'] . ' - ' . $alliance->allianceArray['name'] . ')'; + break; + + case '6' : + echo 'Chat (' . $alliance->allianceArray['tag'] . ' - ' . $alliance->allianceArray['name'] . ')'; + break; + + case '3' : + echo 'Attacks (' . $alliance->allianceArray['tag'] . ' - ' . $alliance->allianceArray['name'] . ')'; + break; + + case '4' : + echo 'News (' . $alliance->allianceArray['tag'] . ' - ' . $alliance->allianceArray['name'] . ')'; + break; + + case '5' : + echo 'Options (' . $alliance->allianceArray['tag'] . ' - ' . $alliance->allianceArray['name'] . ')'; + break; + } + } + else echo $alliance->allianceArray['tag'] . ' - ' . $alliance->allianceArray['name']; ?> @@ -174,112 +174,113 @@ if(isset($_GET['aid']) || isset($_GET['fid']) || isset($_GET['fid2']) || $sessio

getAlliPermissions($session->uid, $session->alliance, 0); - include ("Templates/menu.tpl"); - - if(isset($_GET['s']) && $_GET['s'] == 2) echo '
'; - else echo '
'; - - if(isset($_GET['s'])) { - if($_GET['s'] != 5 || $session->sit == 0){ - switch($_GET['s']) { - case 2: - if(isset($_POST['vote'])) $alliance->Vote($_POST); - include ("Templates/Alliance/forum.tpl"); - break; - case 3: - include ("Templates/Alliance/attacks.tpl"); - break; - case 4: - include ("Templates/Alliance/news.tpl"); - break; - case 5: - include ("Templates/Alliance/option.tpl"); - break; - case 6: - include ("Templates/Alliance/chat.tpl"); - break; - case 1: - default: - include ("Templates/Alliance/overview.tpl"); - break; + include ("Templates/menu.tpl"); + + if(isset($_GET['s']) && $_GET['s'] == 2) echo '
'; + else echo '
'; + + if(isset($_GET['s'])){ + if($_GET['s'] != 5 || $session->sit == 0){ + switch($_GET['s']){ + case 2 : + if(isset($_POST['vote'])) $alliance->Vote($_POST); + include("Templates/Alliance/forum.tpl"); + break; + case 3: + include("Templates/Alliance/attacks.tpl"); + break; + case 4: + include("Templates/Alliance/news.tpl"); + break; + case 5: + include("Templates/Alliance/option.tpl"); + break; + case 6: + include("Templates/Alliance/chat.tpl"); + break; + case 1: + default: + include("Templates/Alliance/overview.tpl"); + break; + } + // Options + }else{ + header("Location: " . $_SERVER['PHP_SELF']); + exit(); } - // Options - }else{ - header("Location: ".$_SERVER['PHP_SELF']); - exit; - }}else if(isset($_GET['delinvite'])){ - if($userPermissions['opt4'] == 0) $alliance->redirect(); + }else if(isset($_GET['delinvite'])){ + if($userPermissions['opt4'] == 0) $alliance->redirect(); include ("Templates/Alliance/invite.tpl"); - } elseif(isset($_POST['o'])) { - switch($_POST['o']) { - case 1: - if($userPermissions['opt1'] == 0) $alliance->redirect(); - if(isset($_POST['s']) == 5 && isset($_POST['a_user'])){ - $alliance->procAlliForm($_POST); - include("Templates/Alliance/changepos.tpl"); - } - else include("Templates/Alliance/assignpos.tpl"); + }elseif(isset($_POST['o'])){ + switch($_POST['o']){ + case 1 : + if($userPermissions['opt1'] == 0) $alliance->redirect(); + if(isset($_POST['s']) == 5 && isset($_POST['a_user'])){ + $alliance->procAlliForm($_POST); + include("Templates/Alliance/changepos.tpl"); + } + else include("Templates/Alliance/assignpos.tpl"); break; - case 2: - if($userPermissions['opt2'] == 0) $alliance->redirect(); - if(isset($_POST['s']) == 5 && isset($_POST['a']) == 2) $alliance->procAlliForm($_POST); - include("Templates/Alliance/kick.tpl"); + case 2 : + if($userPermissions['opt2'] == 0) $alliance->redirect(); + if(isset($_POST['s']) == 5 && isset($_POST['a']) == 2) $alliance->procAlliForm($_POST); + include("Templates/Alliance/kick.tpl"); break; - case 3: - if($userPermissions['opt3'] == 0) $alliance->redirect(); - if(isset($_POST['s']) == 5 && isset($_POST['a']) == 3) $alliance->procAlliForm($_POST); - include("Templates/Alliance/allidesc.tpl"); + case 3 : + if($userPermissions['opt3'] == 0) $alliance->redirect(); + if(isset($_POST['s']) == 5 && isset($_POST['a']) == 3) $alliance->procAlliForm($_POST); + include("Templates/Alliance/allidesc.tpl"); break; - case 4: - if($userPermissions['opt4'] == 0) $alliance->redirect(); - if(isset($_POST['s']) == 5 && isset($_POST['a']) == 4) $alliance->procAlliForm($_POST); + case 4 : + if($userPermissions['opt4'] == 0) $alliance->redirect(); + if(isset($_POST['s']) == 5 && isset($_POST['a']) == 4) $alliance->procAlliForm($_POST); include("Templates/Alliance/invite.tpl"); break; - case 5: - if($userPermissions['opt5'] == 0) $alliance->redirect(); - if(isset($_POST['f_link'])) $alliance->setForumLink($_POST); - include("Templates/Alliance/linkforum.tpl"); + case 5 : + if($userPermissions['opt5'] == 0) $alliance->redirect(); + if(isset($_POST['f_link'])) $alliance->setForumLink($_POST); + include("Templates/Alliance/linkforum.tpl"); break; - case 6: - if($userPermissions['opt6'] == 0) $alliance->redirect(); - if(isset($_POST['dipl']) && isset($_POST['a_name'])) $alliance->procAlliForm($_POST); + case 6 : + if($userPermissions['opt6'] == 0) $alliance->redirect(); + if(isset($_POST['dipl']) && isset($_POST['a_name'])) $alliance->procAlliForm($_POST); include("Templates/Alliance/chgdiplo.tpl"); break; - case 11: + case 11 : if(isset($_POST['s']) == 5 && isset($_POST['a']) == 11) $alliance->procAlliForm($_POST); include("Templates/Alliance/quitalli.tpl"); break; - case 100: - if($userPermissions['opt3'] == 0) $alliance->redirect(); - if(isset($_POST['s']) == 5 && isset($_POST['a']) == 100) $alliance->procAlliForm($_POST); - include ("Templates/Alliance/changename.tpl"); + case 100 : + if($userPermissions['opt3'] == 0) $alliance->redirect(); + if(isset($_POST['s']) == 5 && isset($_POST['a']) == 100) $alliance->procAlliForm($_POST); + include("Templates/Alliance/changename.tpl"); break; - case 101: - if($userPermissions['opt6'] == 0) $alliance->redirect(); - if(isset($_POST['id'])) $database->diplomacyCancelOffer($_POST['id'], $session->alliance); - include ("Templates/Alliance/chgdiplo.tpl"); + case 101 : + if($userPermissions['opt6'] == 0) $alliance->redirect(); + if(isset($_POST['id'])) $database->diplomacyCancelOffer($_POST['id'], $session->alliance); + include("Templates/Alliance/chgdiplo.tpl"); break; - case 102: - if($userPermissions['opt6'] == 0) $alliance->redirect(); - if(isset($_POST['id'])) $database->diplomacyInviteDenied($_POST['id'], $session->alliance); - include ("Templates/Alliance/chgdiplo.tpl"); + case 102 : + if($userPermissions['opt6'] == 0) $alliance->redirect(); + if(isset($_POST['id'])) $database->diplomacyInviteDenied($_POST['id'], $session->alliance); + include("Templates/Alliance/chgdiplo.tpl"); break; - case 103: - if($userPermissions['opt6'] == 0) $alliance->redirect(); - if(isset($_POST['id'])) $database->diplomacyInviteAccept($_POST['id'], $session->alliance); - include ("Templates/Alliance/chgdiplo.tpl"); + case 103 : + if($userPermissions['opt6'] == 0) $alliance->redirect(); + if(isset($_POST['id'])) $database->diplomacyInviteAccept($_POST['id'], $session->alliance); + include("Templates/Alliance/chgdiplo.tpl"); break; - case 104: - if($userPermissions['opt6'] == 0) $alliance->redirect(); - if(isset($_POST['id'])) $database->diplomacyCancelExistingRelationship($_POST['id'], $session->alliance); - include ("Templates/Alliance/chgdiplo.tpl"); + case 104 : + if($userPermissions['opt6'] == 0) $alliance->redirect(); + if(isset($_POST['id'])) $database->diplomacyCancelExistingRelationship($_POST['id'], $session->alliance); + include("Templates/Alliance/chgdiplo.tpl"); + break; + default : + include("Templates/Alliance/option.tpl"); break; - default: - include("Templates/Alliance/option.tpl"); - break; } - } - else include ("Templates/Alliance/overview.tpl"); + } + else include("Templates/Alliance/overview.tpl"); ?>




@@ -295,11 +296,10 @@ include("Templates/news.tpl");
+
@@ -331,7 +331,7 @@ include("Templates/news.tpl"); uid); -exit; + header("Location: spieler.php?uid=".$session->uid); + exit; } ?> \ No newline at end of file diff --git a/sql_updates.txt b/sql_updates.txt index fad2b1c8..4d627a86 100644 --- a/sql_updates.txt +++ b/sql_updates.txt @@ -1,3 +1,6 @@ +-- 19.05.2018 -> added two new columns +ALTER TABLE s1_forum_cat ADD (`display_to_alliances` text, `display_to_users` text) + -- 18.05.2018 -> added a new column ALTER TABLE s1_forum_cat ADD `sorting` int(11) NOT NULL AFTER `id` diff --git a/var/db/struct.sql b/var/db/struct.sql index 813acf8d..75b59380 100644 --- a/var/db/struct.sql +++ b/var/db/struct.sql @@ -751,6 +751,8 @@ CREATE TABLE IF NOT EXISTS `%PREFIX%forum_cat` ( `forum_name` varchar(255) DEFAULT NULL, `forum_des` text, `forum_area` varchar(255) DEFAULT NULL, + `display_to_alliances` text, + `display_to_users` text, PRIMARY KEY (`id`), KEY `alliance-forum_area` (`alliance`,`forum_area`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;