mirror of
https://github.com/Shadowss/TravianZ.git
synced 2026-07-09 22:26:10 +00:00
492 lines
14 KiB
Smarty
492 lines
14 KiB
Smarty
<?php
|
|
// ###########################################################
|
|
// # TRAVIANZ FORUM MODULE #
|
|
// # ------------------------------------------------------- #
|
|
// # ORIGINAL: TTMTT #
|
|
// # FIX: RONIX #
|
|
// # MAINTENANCE / CLEAN STRUCTURE: SHADOW #
|
|
// # ------------------------------------------------------- #
|
|
// # WARNING: NO LOGIC CHANGES - ONLY STRUCTURE + COMMENTS #
|
|
// ###########################################################
|
|
|
|
|
|
/* =========================================================
|
|
* INIT ALLIANCE ID
|
|
* ========================================================= */
|
|
if (!isset($aid)) {
|
|
if (isset($_GET['fid']) && !empty($_GET['fid'])) {
|
|
$aid = $database->ForumCatAlliance($_GET['fid']);
|
|
} else if (isset($_GET['fid2']) && !empty($_GET['fid2'])) {
|
|
$aid = $database->ForumCatAlliance($_GET['fid2']);
|
|
} else {
|
|
$aid = $session->alliance;
|
|
}
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* ALLIANCE INFO + PERMISSIONS
|
|
* ========================================================= */
|
|
$allianceinfo = $database->getAlliance($aid);
|
|
$opt = $database->getAlliPermissions($session->uid, $aid);
|
|
|
|
|
|
/* =========================================================
|
|
* HEADER OUTPUT
|
|
* ========================================================= */
|
|
echo $aid > 0
|
|
? "<h1>".$allianceinfo['tag']." - ".$allianceinfo['name']."</h1>"
|
|
: "<h1>".FORUM."</h1>";
|
|
|
|
include("alli_menu.tpl");
|
|
|
|
$ids = $_GET['s'];
|
|
|
|
|
|
/* =========================================================
|
|
* CREATE FORUM
|
|
* ========================================================= */
|
|
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 &&
|
|
($session->access == 9 || ($session->alliance > 0 && $opt['opt5'] == 1))
|
|
) {
|
|
|
|
$forumViewable['alliances'] = $forumViewable['users'] = "";
|
|
|
|
// ADMIN restriction (public forums logic unchanged)
|
|
if ($session->access != ADMIN && $_POST['bid'] == 1) $_POST['bid'] = 0;
|
|
elseif ($session->access == ADMIN && $_POST['bid'] != 1) $_POST['bid'] = 1;
|
|
|
|
// visibility logic
|
|
if ($_POST['bid'] != 1) {
|
|
$forumViewable = $alliance->createForumVisiblity(
|
|
$_POST['allys_by_id'],
|
|
$_POST['allys_by_name'],
|
|
$_POST['users_by_id'],
|
|
$_POST['users_by_name']
|
|
);
|
|
}
|
|
|
|
// create forum
|
|
$forum_name = $_POST['u1'];
|
|
$forum_des = $_POST['u2'];
|
|
$forum_owner = $session->uid;
|
|
$forum_area = $_POST['bid'];
|
|
|
|
$database->CreatForum(
|
|
$forum_owner,
|
|
$session->access == ADMIN ? 0 : $session->alliance,
|
|
$forum_name,
|
|
$forum_des,
|
|
$forum_area,
|
|
$forumViewable['alliances'],
|
|
$forumViewable['users']
|
|
);
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* EDIT TOPIC
|
|
* ========================================================= */
|
|
if (
|
|
isset($_POST['edittopic']) &&
|
|
isset($_POST['fid']) && !empty($_POST['fid']) &&
|
|
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'],
|
|
'forum_owner' => ($forumData = reset($database->ForumCatEdit($_POST['fid'])))['owner']
|
|
], 1) &&
|
|
(
|
|
($forumData['forum_area'] != 1 &&
|
|
reset($database->ForumCatEdit($topic['cat']))['forum_area'] != 1 &&
|
|
$forumData['alliance'] == $session->alliance)
|
|
|| $forumData['id'] == $topic['cat']
|
|
|| ($session->access == ADMIN && $forumData['alliance'] = 0)
|
|
)
|
|
) {
|
|
|
|
$topic_name = $_POST['thema'];
|
|
$topic_cat = $_POST['fid'];
|
|
$topic_id = $_POST['tid'];
|
|
|
|
$database->UpdateEditTopic($topic_id, $topic_name, $topic_cat);
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* EDIT FORUM
|
|
* ========================================================= */
|
|
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 && $opt['opt5'] == 1)
|
|
|| $session->access == ADMIN
|
|
)
|
|
) {
|
|
|
|
$forumViewable['alliances'] = $forumViewable['users'] = "";
|
|
|
|
$forumData = reset($database->ForumCatEdit($_POST['fid']));
|
|
|
|
// visibility logic unchanged
|
|
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 = htmlspecialchars($_POST['u1']);
|
|
$forum_des = htmlspecialchars($_POST['u2']);
|
|
$forum_id = $_POST['fid'];
|
|
|
|
$database->UpdateEditForum(
|
|
$forum_id,
|
|
$forum_name,
|
|
$forum_des,
|
|
$forumViewable['alliances'],
|
|
$forumViewable['users']
|
|
);
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* NEW TOPIC
|
|
* ========================================================= */
|
|
if (
|
|
isset($_POST['newtopic']) &&
|
|
isset($_POST['thema']) && isset($_POST['text']) && isset($_POST['fid']) &&
|
|
!empty($_POST['thema']) && !empty($_POST['text']) && !empty($_POST['fid']) &&
|
|
(
|
|
(
|
|
($forumData = reset($database->ForumCatEdit($_POST['fid'])))['alliance'] == $session->alliance ||
|
|
$forumData['forum_area'] == 1 ||
|
|
$alliance->isForumAccessible($_POST['fid'])
|
|
) &&
|
|
($forumData['forum_area'] != 3 || ($forumData['forum_area'] == 3 && $opt['opt5'] == 1))
|
|
)
|
|
) {
|
|
|
|
$title = $_POST['thema'];
|
|
$text = $_POST['text'];
|
|
$cat = $_POST['fid'];
|
|
$owner = $session->uid;
|
|
$alli = $database->ForumCatAlliance($cat);
|
|
|
|
if (!preg_match('/\[message\]/', $text)) {
|
|
$text = "[message]".$text."[/message]";
|
|
}
|
|
|
|
$survey = false;
|
|
$ends = '';
|
|
|
|
if (isset($_POST['umfrage'])) {
|
|
|
|
if (isset($_POST['umfrage_ende'])) {
|
|
$ends_date = $_POST['month']."/".$_POST['day']."/".$_POST['year'];
|
|
|
|
if ($_POST['meridiem'] == 1) $_POST['hour'] += 12;
|
|
|
|
$ends_time = $_POST['hour'].":".$_POST['minute'];
|
|
$ends = strtotime($ends_date) - strtotime(date('d.m.y')) + strtotime($ends_time);
|
|
}
|
|
|
|
for ($i = 1; $i <= 8; $i++) {
|
|
if (isset($_POST['option_'.$i]) && !empty($_POST['option_'.$i])) {
|
|
$survey = true;
|
|
}
|
|
}
|
|
}
|
|
|
|
$topic_id = $database->CreatTopic($title, $text, $cat, $owner, $alli, $ends);
|
|
|
|
if ($survey) {
|
|
$database->createSurvey(
|
|
$topic_id,
|
|
$_POST['umfrage_thema'],
|
|
$_POST['option_1'],
|
|
$_POST['option_2'],
|
|
$_POST['option_3'],
|
|
$_POST['option_4'],
|
|
$_POST['option_5'],
|
|
$_POST['option_6'],
|
|
$_POST['option_7'],
|
|
$_POST['option_8'],
|
|
$ends
|
|
);
|
|
}
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* NEW POST
|
|
* ========================================================= */
|
|
if (
|
|
isset($_POST['newpost']) &&
|
|
isset($_POST['text']) && isset($_POST['tid']) && isset($_POST['fid2']) &&
|
|
!empty($_POST['text']) && !empty($_POST['tid']) && !empty($_POST['fid2']) &&
|
|
(
|
|
(
|
|
($forumData = reset($database->ForumCatEdit($_POST['fid2'])))['alliance'] == $session->alliance ||
|
|
$forumData['forum_area'] == 1 ||
|
|
$alliance->isForumAccessible($_POST['fid2'])
|
|
) &&
|
|
(
|
|
($forumData['forum_area'] != 3 && !reset($database->ShowTopic($_POST['tid']))['close'])
|
|
|| ($forumData['forum_area'] == 3 && $opt['opt5'] == 1)
|
|
)
|
|
)
|
|
) {
|
|
|
|
$text = $_POST['text'];
|
|
$tids = $_POST['tid'];
|
|
$fid2 = $_POST['fid2'];
|
|
$owner = $session->uid;
|
|
|
|
if (!preg_match('/\[message\]/', $text)) {
|
|
$text = "[message]".$text."[/message]";
|
|
}
|
|
|
|
$database->UpdatePostDate($tids);
|
|
$database->CreatPost($text, $tids, $owner, $fid2);
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* EDIT ANSWER
|
|
* ========================================================= */
|
|
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' => (!empty($_GET['admin']) ? $_GET['admin'] : ''),
|
|
'owner' => $topic['owner'],
|
|
'forum_owner' => reset($database->ForumCatEdit($topic['cat']))['owner']
|
|
], 1)
|
|
) {
|
|
|
|
$text = $_POST['text'];
|
|
$topic_id = $_POST['tid'];
|
|
|
|
if (!preg_match('/\[message\]/', $text)) {
|
|
$text = "[message]".$text."[/message]";
|
|
}
|
|
|
|
$database->EditUpdateTopic($topic_id, $text);
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* EDIT POST
|
|
* ========================================================= */
|
|
if (
|
|
isset($_POST['editpost']) &&
|
|
isset($_POST['text']) && !empty($_POST['text']) &&
|
|
isset($_POST['pod']) && !empty($_POST['pod']) &&
|
|
Alliance::canAct([
|
|
'aid' => $aid,
|
|
'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'];
|
|
$posts_id = $_POST['pod'];
|
|
|
|
$text = preg_replace('/\[message\]/', '', $text);
|
|
$text = preg_replace('/\[\/message\]/', '', $text);
|
|
|
|
$database->EditUpdatePost($posts_id, $text);
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* ADMIN SWITCH
|
|
* ========================================================= */
|
|
if (!isset($_GET['admin'])) $_GET['admin'] = null;
|
|
|
|
if ($_GET['admin'] == "switch_admin") {
|
|
if ($opt['opt5'] == 1) {
|
|
if ($database->CheckResultEdit($aid) != 1) {
|
|
$database->CreatResultEdit($aid, 1);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* MOVE FORUM POSITION
|
|
* ========================================================= */
|
|
if (
|
|
$_GET['admin'] == "pos" &&
|
|
isset($_GET['res'], $_GET['fid']) && !empty($_GET['fid']) &&
|
|
(
|
|
($database->ForumCatAlliance($_GET['fid']) == $session->alliance && $opt['opt5'] == 1) ||
|
|
($forumData = reset($database->ForumCatEdit($_GET['fid'])))['owner'] == $session->uid
|
|
&& $session->access == ADMIN
|
|
)
|
|
) {
|
|
|
|
$database->moveForum($_GET['fid'], $forumData['forum_area'], $session->alliance, $_GET['res']);
|
|
$alliance->redirect($_GET);
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* TOPIC ACTIONS
|
|
* ========================================================= */
|
|
elseif (isset($_GET['idt']) && !empty($_GET['idt'])) {
|
|
|
|
$topicID = $_GET['idt'];
|
|
$post = reset($database->ShowTopic($topicID));
|
|
|
|
$checkArray = [
|
|
'aid' => $aid,
|
|
'alliance' => $post['alliance'],
|
|
'forum_perm' => $opt['opt5'],
|
|
'admin' => $_GET['admin'],
|
|
'owner' => $post['owner'],
|
|
'forum_owner' => reset($database->ForumCatEdit($post['cat']))['owner']
|
|
];
|
|
|
|
if (!Alliance::canAct($checkArray, 1)) {
|
|
$alliance->redirect($_GET);
|
|
}
|
|
|
|
switch ($_GET['admin']) {
|
|
|
|
case "pin":
|
|
$database->StickTopic($topicID, 1);
|
|
break;
|
|
|
|
case "unpin":
|
|
$database->StickTopic($topicID, 0);
|
|
break;
|
|
|
|
case "lock":
|
|
$database->LockTopic($topicID, 1);
|
|
break;
|
|
|
|
case "unlock":
|
|
$database->LockTopic($topicID, 0);
|
|
break;
|
|
|
|
case "deltopic":
|
|
$database->DeleteTopic($topicID);
|
|
$database->DeleteSurvey($topicID);
|
|
break;
|
|
|
|
case "edittopic":
|
|
include("Forum/forum_3.tpl");
|
|
break;
|
|
|
|
case "editans":
|
|
include("Forum/forum_9.tpl");
|
|
break;
|
|
}
|
|
|
|
if ($_GET['admin'] != "edittopic" && $_GET['admin'] != "editans") {
|
|
$alliance->redirect($_GET);
|
|
}
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* DELETE FORUM
|
|
* ========================================================= */
|
|
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 && $session->access == ADMIN)
|
|
)
|
|
) {
|
|
|
|
$database->DeleteCat($_GET['idf']);
|
|
$alliance->redirect($_GET);
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* DELETE POST
|
|
* ========================================================= */
|
|
elseif (
|
|
$_GET['admin'] == "delpost" &&
|
|
isset($_GET['pod'], $_GET['tid'], $_GET['fid2']) &&
|
|
!empty($_GET['pod']) && !empty($_GET['tid']) && !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'],
|
|
'forum_owner' => reset($database->ForumCatEdit($_GET['fid2']))['owner']
|
|
], 1)
|
|
) {
|
|
|
|
$database->DeletePost($_GET['pod']);
|
|
|
|
header("Location: allianz.php?s=2&fid2=".$_GET['fid2']."&tid=".$_GET['tid']);
|
|
exit;
|
|
}
|
|
|
|
|
|
/* =========================================================
|
|
* ROUTES / TEMPLATES
|
|
* ========================================================= */
|
|
elseif ($_GET['admin'] == "newforum") include("Forum/forum_1.tpl");
|
|
|
|
elseif ($_GET['admin'] == "editpost" &&
|
|
isset($_GET['pod'], $_GET['tid'], $_GET['fid']) &&
|
|
!empty($_GET['pod']) && !empty($_GET['tid']) && !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'],
|
|
'forum_owner' => reset($database->ForumCatEdit($_GET['fid']))['owner']
|
|
], 1)
|
|
) include("Forum/forum_10.tpl");
|
|
|
|
elseif (isset($_GET['fid'])) {
|
|
if (isset($_GET['ac'])) include("Forum/forum_5.tpl");
|
|
else include("Forum/forum_4.tpl");
|
|
}
|
|
|
|
elseif ($_GET['admin'] == "editforum") include("Forum/forum_8.tpl");
|
|
|
|
elseif (isset($_GET['tid'])) {
|
|
if (isset($_GET['ac'])) include("Forum/forum_7.tpl");
|
|
else include("Forum/forum_6.tpl");
|
|
}
|
|
|
|
else include("Forum/forum_2.tpl");
|
|
|
|
?> |