2
0
mirror of https://github.com/Znote/ZnoteAAC.git synced 2025-05-06 22:29:21 +02:00
Evil Puncker b0947041ce
Small fixes imgland to imgur, achievement images and link ()
Removed dead imgland links and changed them to imgur
Changed the example achievements image links with proper ones
Changed Achievements link to tfs repo
2020-05-13 17:01:29 +02:00

1111 lines
44 KiB
PHP

<?php require_once 'engine/init.php'; include 'layout/overall/header.php';
protect_page();
error_reporting(E_ALL ^ E_NOTICE);
if (!$config['forum']['enabled']) admin_only($user_data);
/* -------------------------------
--- Znote AAC forum ---
-------------------------------
Created by Znote.
Version 1.4.
Changelog (1.0 --> 1.2):
- Updated to the new date/clock time system
- Bootstrap design support.
Changelog (1.2 --> 1.3):
- Show character outfit as avatar
- Show in-game position
Changelog (1.3 -> 1.4):
- Fix SQL query error when editing Board name.
*/
// BBCODE support:
function TransformToBBCode($string) {
$tags = array(
'[center]{$1}[/center]' => '<center>$1</center>',
'[b]{$1}[/b]' => '<b>$1</b>',
'[img]{$1}[/img]' => '<a href="$1" target="_BLANK"><img src="$1" alt="image" style="width: 100%"></a>',
'[link]{$1}[/link]' => '<a href="$1">$1</a>',
'[link={$1}]{$2}[/link]' => '<a href="$1" target="_BLANK">$2</a>',
'[url={$1}]{$2}[/url]' => '<a href="$1" target="_BLANK">$2</a>',
'[color={$1}]{$2}[/color]' => '<font color="$1">$2</font>',
'[*]{$1}[/*]' => '<li>$1</li>',
'[youtube]{$1}[/youtube]' => '<div class="youtube"><div class="aspectratio"><iframe src="//www.youtube.com/embed/$1" frameborder="0" allowfullscreen></iframe></div></div>',
);
foreach ($tags as $tag => $value) {
$code = preg_replace('/placeholder([0-9]+)/', '(.*?)', preg_quote(preg_replace('/\{\$([0-9]+)\}/', 'placeholder$1', $tag), '/'));
$string = preg_replace('/'.$code.'/i', $value, $string);
if (strpos($string, "<a href=") !== false) {
if (strpos($string, "http") === false) {
$string = substr_replace($string, "//", 9, 0);
}
}
}
return $string;
}
Function PlayerHaveAccess($yourChars, $playerName){
$access = false;
foreach($yourChars as $char) {
if ($char['name'] == $playerName) $access = true;
}
return $access;
}
// Start page init
$admin = is_admin($user_data);
if ($admin) $yourChars = mysql_select_multi("SELECT `id`, `name`, `group_id` FROM `players` WHERE `level`>='1' AND `account_id`='". $user_data['id'] ."';");
else $yourChars = mysql_select_multi("SELECT `id`, `name`, `group_id` FROM `players` WHERE `level`>='". $config['forum']['level'] ."' AND `account_id`='". $user_data['id'] ."';");
if (!$yourChars) $yourChars = array();
$charCount = count($yourChars);
$yourAccess = accountAccess($user_data['id'], $config['ServerEngine']);
if ($admin) {
if (!empty($_POST)) {
$guilds = mysql_select_multi("SELECT `id`, `name` FROM `guilds` ORDER BY `name`;");
$guilds[] = array('id' => '0', 'name' => 'No guild');
}
$yourAccess = 100;
}
// Your characters, indexed by char_id
$charData = array();
foreach ($yourChars as $char) {
$charData[$char['id']] = $char;
if (get_character_guild_rank($char['id']) > 0) {
$guild = get_player_guild_data($char['id']);
$charData[$char['id']]['guild'] = $guild['guild_id'];
$charData[$char['id']]['guild_rank'] = $guild['rank_level'];
} else $charData[$char['id']]['guild'] = '0';
}
$cooldownw = array(
$user_znote_data['cooldown'],
time(),
$user_znote_data['cooldown'] - time()
);
/////////////////
// Guild Leader & admin
$leader = false;
foreach($charData as $char) {
if ($char['guild'] > 0 && $char['guild_rank'] == 3) $leader = true;
}
if ($admin && !empty($_POST) || $leader && !empty($_POST)) {
$admin_thread_delete = getValue($_POST['admin_thread_delete']);
$admin_thread_close = getValue($_POST['admin_thread_close']);
$admin_thread_open = getValue($_POST['admin_thread_open']);
$admin_thread_sticky = getValue($_POST['admin_thread_sticky']);
$admin_thread_unstick = getValue($_POST['admin_thread_unstick']);
$admin_thread_id = getValue($_POST['admin_thread_id']);
// delete thread
if ($admin_thread_delete !== false) {
$admin_thread_id = (int)$admin_thread_id;
$access = false;
if (!$admin) {
$thread = mysql_select_single("SELECT `forum_id` FROM `znote_forum_threads` WHERE `id`='$admin_thread_id';");
$forum = mysql_select_single("SELECT `guild_id` FROM `znote_forum` WHERE `id`='". $thread['forum_id'] ."';");
foreach($charData as $char) if ($char['guild'] == $forum['guild_id'] && $char['guild_rank'] == 3) $access = true;
} else $access = true;
if ($access) {
// Delete all associated posts
mysql_delete("DELETE FROM `znote_forum_posts` WHERE `thread_id`='$admin_thread_id';");
// Delete thread itself
mysql_delete("DELETE FROM `znote_forum_threads` WHERE `id`='$admin_thread_id' LIMIT 1;");
echo '<h1>Thread and all associated posts deleted.</h1>';
} else echo '<p><b><font color="red">Permission denied.</font></b></p>';
}
// Close thread
if ($admin_thread_close !== false) {
$admin_thread_id = (int)$admin_thread_id;
$access = false;
if (!$admin) {
$thread = mysql_select_single("SELECT `forum_id` FROM `znote_forum_threads` WHERE `id`='$admin_thread_id';");
$forum = mysql_select_single("SELECT `guild_id` FROM `znote_forum` WHERE `id`='". $thread['forum_id'] ."';");
foreach($charData as $char) if ($char['guild'] == $forum['guild_id'] && $char['guild_rank'] == 3) $access = true;
} else $access = true;
if ($access) {
mysql_update("UPDATE `znote_forum_threads` SET `closed`='1' WHERE `id`='$admin_thread_id' LIMIT 1;");
//die("UPDATE `znote_forum_threads` SET `closed`='1' WHERE `id`='$admin_thread_id' LIMIT 1;");
echo '<h1>Thread has been closed.</h1>';
} else echo '<p><b><font color="red">Permission denied.</font></b></p>';
}
// open thread
if ($admin_thread_open !== false) {
$admin_thread_id = (int)$admin_thread_id;
$access = false;
if (!$admin) {
$thread = mysql_select_single("SELECT `forum_id` FROM `znote_forum_threads` WHERE `id`='$admin_thread_id';");
$forum = mysql_select_single("SELECT `guild_id` FROM `znote_forum` WHERE `id`='". $thread['forum_id'] ."';");
foreach($charData as $char) if ($char['guild'] == $forum['guild_id'] && $char['guild_rank'] == 3) $access = true;
} else $access = true;
if ($access) {
mysql_update("UPDATE `znote_forum_threads` SET `closed`='0' WHERE `id`='$admin_thread_id' LIMIT 1;");
echo '<h1>Thread has been opened.</h1>';
} else echo '<p><b><font color="red">Permission denied.</font></b></p>';
}
// stick thread
if ($admin_thread_sticky !== false) {
$admin_thread_id = (int)$admin_thread_id;
$access = false;
if (!$admin) {
$thread = mysql_select_single("SELECT `forum_id` FROM `znote_forum_threads` WHERE `id`='$admin_thread_id';");
$forum = mysql_select_single("SELECT `guild_id` FROM `znote_forum` WHERE `id`='". $thread['forum_id'] ."';");
foreach($charData as $char) if ($char['guild'] == $forum['guild_id'] && $char['guild_rank'] == 3) $access = true;
} else $access = true;
if ($access) {
mysql_update("UPDATE `znote_forum_threads` SET `sticky`='1' WHERE `id`='$admin_thread_id' LIMIT 1;");
echo '<h1>Thread has been sticked.</h1>';
} else echo '<p><b><font color="red">Permission denied.</font></b></p>';
}
// unstick thread
if ($admin_thread_unstick !== false) {
$admin_thread_id = (int)$admin_thread_id;
$access = false;
if (!$admin) {
$thread = mysql_select_single("SELECT `forum_id` FROM `znote_forum_threads` WHERE `id`='$admin_thread_id';");
$forum = mysql_select_single("SELECT `guild_id` FROM `znote_forum` WHERE `id`='". $thread['forum_id'] ."';");
foreach($charData as $char) if ($char['guild'] == $forum['guild_id'] && $char['guild_rank'] == 3) $access = true;
} else $access = true;
if ($access) {
mysql_update("UPDATE `znote_forum_threads` SET `sticky`='0' WHERE `id`='$admin_thread_id' LIMIT 1;");
echo '<h1>Thread has been unsticked.</h1>';
} else echo '<p><b><font color="red">Permission denied.</font></b></p>';
}
}
/////////////////
// ADMIN FUNCT
if ($admin && !empty($_POST)) {
$admin_post_id = getValue($_POST['admin_post_id']);
$admin_post_delete = getValue($_POST['admin_post_delete']);
$admin_category_delete = getValue($_POST['admin_category_delete']);
$admin_category_edit = getValue($_POST['admin_category_edit']);
$admin_category_id = getValue($_POST['admin_category_id']);
$admin_update_category = getValue($_POST['admin_update_category']);
$admin_category_name = getValue($_POST['admin_category_name']);
$admin_category_access = getValue($_POST['admin_category_access']);
$admin_category_closed = getValue($_POST['admin_category_closed']);
$admin_category_hidden = getValue($_POST['admin_category_hidden']);
$admin_category_guild_id = getValue($_POST['admin_category_guild_id']);
if ($admin_category_access === false) $admin_category_access = 0;
if ($admin_category_closed === false) $admin_category_closed = 0;
if ($admin_category_hidden === false) $admin_category_hidden = 0;
if ($admin_category_guild_id === false) $admin_category_guild_id = 0;
$admin_board_create_name = getValue($_POST['admin_board_create_name']);
$admin_board_create_access = getValue($_POST['admin_board_create_access']);
$admin_board_create_closed = getValue($_POST['admin_board_create_closed']);
$admin_board_create_hidden = getValue($_POST['admin_board_create_hidden']);
$admin_board_create_guild_id = getValue($_POST['admin_board_create_guild_id']);
if ($admin_board_create_access === false) $admin_board_create_access = 0;
if ($admin_board_create_closed === false) $admin_board_create_closed = 0;
if ($admin_board_create_hidden === false) $admin_board_create_hidden = 0;
if ($admin_board_create_guild_id === false) $admin_board_create_guild_id = 0;
// Create board
if ($admin_board_create_name !== false) {
// Insert data
mysql_insert("INSERT INTO `znote_forum` (`name`, `access`, `closed`, `hidden`, `guild_id`)
VALUES ('$admin_board_create_name',
'$admin_board_create_access',
'$admin_board_create_closed',
'$admin_board_create_hidden',
'$admin_board_create_guild_id');");
echo '<h1>Board has been created.</h1>';
}
//////////////////
// update category
if ($admin_update_category !== false) {
$admin_category_id = (int)$admin_category_id;
// Update the category
mysql_update("UPDATE `znote_forum` SET
`name`='$admin_category_name',
`access`='$admin_category_access',
`closed`='$admin_category_closed',
`hidden`='$admin_category_hidden',
`guild_id`='$admin_category_guild_id'
WHERE `id`='$admin_category_id' LIMIT 1;");
echo '<h1>Board has been updated successfully.</h1>';
}
//////////////////
// edit category
if ($admin_category_edit !== false) {
$admin_category_id = (int)$admin_category_id;
$category = mysql_select_single("SELECT `id`, `name`, `access`, `closed`, `hidden`, `guild_id`
FROM `znote_forum` WHERE `id`='$admin_category_id' LIMIT 1;");
if ($category !== false) {
?>
<form action="" method="post">
<input type="hidden" name="admin_category_id" value="<?php echo $category['id']; ?>">
<table class="updateTable table table-striped">
<tr>
<td><label for="admin_category_name">Board name:</label></td>
<td><input name="admin_category_name" value="<?php echo $category['name']; ?>" class="span12"></td>
</tr>
<tr>
<td><label for="admin_category_access">Required Access:</label></td>
<td>
<select name="admin_category_access" class="span12">
<?php
foreach($config['ingame_positions'] as $access => $name) {
if ($access == $category['access']) echo "<option value='$access' selected>$name</option>";
else echo "<option value='$access'>$name</option>";
}
?>
</select>
</td>
</tr>
<tr>
<td><label for="admin_category_closed">Closed:</label></td>
<td>
<select name="admin_category_closed" class="span12">
<?php
if ($category['closed'] == 1) echo '<option value="1" selected>Yes</option>';
else echo '<option value="1">Yes</option>';
if ($category['closed'] == 0) echo '<option value="0" selected>No</option>';
else echo '<option value="0">No</option>';
?>
</select>
</td>
</tr>
<tr>
<td><label for="admin_category_hidden">Hidden:</label></td>
<td>
<select name="admin_category_hidden" class="span12">
<?php
if ($category['hidden'] == 1) echo '<option value="1" selected>Yes</option>';
else echo '<option value="1">Yes</option>';
if ($category['hidden'] == 0) echo '<option value="0" selected>No</option>';
else echo '<option value="0">No</option>';
?>
</select>
</td>
</tr>
<tr>
<td><label for="admin_category_guild_id">Guild id:</label></td>
<td>
<select name="admin_category_guild_id" class="span12">
<?php foreach($guilds as $guild) {
if ($category['guild_id'] == $guild['id']) echo "<option value='". $guild['id'] ."' selected>". $guild['name'] ."</option>";
else echo "<option value='". $guild['id'] ."'>". $guild['name'] ."</option>";
} ?>
</select>
</td>
</tr>
<tr>
<td colspan="2"><input type="submit" name="admin_update_category" value="Update Board" style="width: 100%; height: 30px;" class="btn btn-success"></td>
</tr>
</table>
</form>
<?php
} else echo '<h2>Category not found.</h2>';
}
// delete category
if ($admin_category_delete !== false) {
$admin_category_id = (int)$admin_category_id;
// find all threads in category
$threads = mysql_select_multi("SELECT `id` FROM `znote_forum_threads` WHERE `forum_id`='$admin_category_id';");
// Then loop through all threads, and delete all associated posts:
foreach($threads as $thread) {
mysql_delete("DELETE FROM `znote_forum_posts` WHERE `thread_id`='". $thread['id'] ."';");
}
// Then delete all threads
mysql_delete("DELETE FROM `znote_forum_threads` WHERE `forum_id`='$admin_category_id';");
// Then delete the category
mysql_delete("DELETE FROM `znote_forum` WHERE `id`='$admin_category_id' LIMIT 1;");
echo '<h1>Board, associated threads and all their associated posts deleted.</h1>';
}
// delete post
if ($admin_post_delete !== false) {
$admin_post_id = (int)$admin_post_id;
// Delete the post
mysql_delete("DELETE FROM `znote_forum_posts` WHERE `id`='$admin_post_id' LIMIT 1;");
echo '<h1>Post has been deleted.</h1>';
}
}
// End admin function
// Fetching get values
if (!empty($_GET)) {
$getCat = getValue($_GET['cat']);
$getForum = getValue($_GET['forum']);
$getThread = getValue($_GET['thread']);
$new_thread_category = getValue($_POST['new_thread_category']);
$new_thread_cid = getValue($_POST['new_thread_cid']);
$create_thread_cid = getValue($_POST['create_thread_cid']);
$create_thread_title = getValue($_POST['create_thread_title']);
$create_thread_text = getValue($_POST['create_thread_text']);
$create_thread_category = getValue($_POST['create_thread_category']);
$update_thread_id = getValue($_POST['update_thread_id']);
$update_thread_title = getValue($_POST['update_thread_title']);
$update_thread_text = getValue($_POST['update_thread_text']);
$edit_thread = getValue($_POST['edit_thread']);
$edit_thread_id = getValue($_POST['edit_thread_id']);
$reply_thread = getValue($_POST['reply_thread']);
$reply_text = getValue($_POST['reply_text']);
$reply_cid = getValue($_POST['reply_cid']);
$edit_post = getValue($_POST['edit_post']);
$edit_post_id = getValue($_POST['edit_post_id']);
$update_post_id = getValue($_POST['update_post_id']);
$update_post_text = getValue($_POST['update_post_text']);
/////////////////////
// When you are POSTING in an existing thread
if ($reply_thread !== false && $reply_text !== false && $reply_cid !== false) {
$reply_cid = (int)$reply_cid;
if ($user_znote_data['cooldown'] < time()) {
user_update_znote_account(array('cooldown'=>(time() + $config['forum']['cooldownPost'])));
$thread = mysql_select_single("SELECT `closed` FROM `znote_forum_threads` WHERE `id`='$reply_thread' LIMIT 1;");
if ($thread['closed'] == 1 && $admin === false) $access = false;
else $access = true;
if ($access) {
mysql_insert("INSERT INTO `znote_forum_posts` (`thread_id`, `player_id`, `player_name`, `text`, `created`, `updated`) VALUES ('$reply_thread', '$reply_cid', '". $charData[$reply_cid]['name'] ."', '$reply_text', '". time() ."', '". time() ."');");
if ($config['forum']['newPostsBumpThreads']) mysql_update("UPDATE `znote_forum_threads` SET `updated`='". time() ."' WHERE `id`='$reply_thread';");
} else echo '<p><b><font color="red">You don\'t have permission to post on this thread. [Thread: Closed]</font></b></p>';
} else {
?>
<font class="forumCooldown" color="red">Antispam: You need to wait <?php echo ($user_znote_data['cooldown'] - time()); ?> seconds before you can create or post.</font>
<?php
}
}
/////////////////////
// When you ARE creating new thread
if ($create_thread_cid !== false && $create_thread_title !== false && $create_thread_text !== false && $create_thread_category !== false) {
if ($user_znote_data['cooldown'] < time()) {
user_update_znote_account(array('cooldown'=>(time() + $config['forum']['cooldownCreate'])));
$category = mysql_select_single("SELECT `access`, `closed`, `guild_id` FROM `znote_forum` WHERE `id`='$create_thread_category' LIMIT 1;");
if ($category !== false) {
$access = true;
if (!$admin) {
if ($category['access'] > $yourAccess) $access = false;
if ($category['guild_id'] > 0) {
$status = false;
foreach($charData as $char) {
if ($char['guild'] == $category['guild_id']) $status = true;
}
if (!$status) $access = false;
}
if ($category['closed'] > 0) $access = false;
}
if ($access) {
mysql_insert("INSERT INTO `znote_forum_threads`
(`forum_id`, `player_id`, `player_name`, `title`, `text`, `created`, `updated`, `sticky`, `hidden`, `closed`)
VALUES (
'$create_thread_category',
'$create_thread_cid',
'". $charData[$create_thread_cid]['name'] ."',
'$create_thread_title',
'$create_thread_text',
'". time() ."',
'". time() ."',
'0', '0', '0');");
SendGet(array('cat'=>$create_thread_category), 'forum.php');
} else echo '<p><b><font color="red">Permission to create thread denied.</font></b></p>';
} else echo 'Category does not exist.';
} else {
?>
<font class="forumCooldown" color="red">Antispam: You need to wait <?php echo ($user_znote_data['cooldown'] - time()); ?> seconds before you can create or post.</font>
<?php
}
}
/////////////////////
// When you ARE updating post
if ($update_post_id !== false && $update_post_text !== false) {
// Fetch the post data
$post = mysql_select_single("SELECT `id`, `player_name`, `text`, `thread_id` FROM `znote_forum_posts` WHERE `id`='$update_post_id' LIMIT 1;");
$thread = mysql_select_single("SELECT `closed` FROM `znote_forum_threads` WHERE `id`='". $post['thread_id'] ."' LIMIT 1;");
// Verify access
$access = PlayerHaveAccess($yourChars, $post['player_name']);
if ($thread !== false && $thread['closed'] == 1 && $admin === false) $access = false;
if ($admin) $access = true;
//if ($thread === false) $access = false;
if ($access) {
mysql_update("UPDATE `znote_forum_posts` SET `text`='$update_post_text', `updated`='". time() ."' WHERE `id`='$update_post_id';");
echo '<h1>post has been updated.</h1>';
} else echo "<p><font color='red'>Your permission to edit this post has been denied.</font></p>";
}
/////////////////////
// When you ARE updating thread
if ($update_thread_id !== false && $update_thread_title !== false && $update_thread_text !== false) {
// Fetch the thread data
$thread = mysql_select_single("SELECT `id`, `player_name`, `title`, `text`, `closed` FROM `znote_forum_threads` WHERE `id`='$update_thread_id' LIMIT 1;");
// Verify access
$access = PlayerHaveAccess($yourChars, $thread['player_name']);
if ($thread['closed'] == 1 && $admin === false) $access = false;
if ($admin) $access = true;
if ($access) {
mysql_update("UPDATE `znote_forum_threads` SET `title`='$update_thread_title', `text`='$update_thread_text' WHERE `id`='$update_thread_id';");
echo '<h1>Thread has been updated.</h1>';
} else echo "<p><font color='red'>Your permission to edit this thread has been denied.</font></p>";
}
/////////////////////
// When you want to edit a post
if ($edit_post_id !== false && $edit_post !== false) {
// Fetch the post data
$post = mysql_select_single("SELECT `id`, `thread_id`, `text`, `player_name` FROM `znote_forum_posts` WHERE `id`='$edit_post_id' LIMIT 1;");
$thread = mysql_select_single("SELECT `closed` FROM `znote_forum_threads` WHERE `id`='". $post['thread_id'] ."' LIMIT 1;");
// Verify access
$access = PlayerHaveAccess($yourChars, $post['player_name']);
if ($thread['closed'] == 1 && $admin === false) $access = false;
if ($admin) $access = true;
if ($access) {
?>
<h1>Edit Post</h1>
<form type="" method="post">
<input name="update_post_id" type="hidden" value="<?php echo $post['id']; ?>">
<textarea name="update_post_text" style="width: 610px; height: 300px"><?php echo $post['text']; ?></textarea><br>
<input type="submit" value="Update Post" class="btn btn-success">
</form>
<?php
} else echo '<p><b><font color="red">You don\'t have permission to edit this post.</font></b></p>';
} else
/////////////////////
// When you want to edit a thread
if ($edit_thread_id !== false && $edit_thread !== false) {
// Fetch the thread data
$thread = mysql_select_single("SELECT `id`, `title`, `text`, `player_name`, `closed` FROM `znote_forum_threads` WHERE `id`='$edit_thread_id' LIMIT 1;");
$access = PlayerHaveAccess($yourChars, $thread['player_name']);
if ($thread['closed'] == 1) $access = false;
if ($admin) $access = true;
if ($access) {
?>
<h1>Edit Thread</h1>
<form type="" method="post">
<input name="update_thread_id" type="hidden" value="<?php echo $thread['id']; ?>">
<input name="update_thread_title" type="text" value="<?php echo $thread['title']; ?>" style="width: 500px;"><br><br>
<textarea name="update_thread_text" style="width: 610px; height: 300px"><?php echo $thread['text']; ?></textarea><br>
<input type="submit" value="Update Thread" class="btn btn-success">
</form>
<?php
} else echo '<p><b><font color="red">Edit access denied.</font></b></p>';
} else
/////////////////////
// When you want to view a thread
if ($getThread !== false) {
$getThread = (int)$getThread;
$threadData = mysql_select_single("SELECT `id`, `forum_id`, `player_id`, `player_name`, `title`, `text`, `created`, `updated`, `sticky`, `hidden`, `closed` FROM `znote_forum_threads` WHERE `id`='$getThread' LIMIT 1;");
if ($threadData !== false) {
$category = mysql_select_single("SELECT `hidden`, `access`, `guild_id` FROM `znote_forum` WHERE `id`='". $threadData['forum_id'] ."' LIMIT 1;");
if ($category === false) die("Thread category does not exist.");
$access = true;
$leader = false;
if ($category['hidden'] == 1 || $category['access'] > 1 || $category['guild_id'] > 0) {
$access = false;
if ($category['hidden'] == 1) $access = PlayerHaveAccess($yourChars, $threadData['player_name']);
if ($category['access'] > 1 && $yourAccess >= $category['access']) $access = true;
foreach($charData as $char) {
if ($category['guild_id'] == $char['guild']) $access = true;
if ($char['guild_rank'] == 3) $leader = true;
}
if ($admin) $access = true;
}
if ($access) {
$threadPlayer = ($config['forum']['outfit_avatars'] || $config['forum']['player_position']) ? mysql_select_single("SELECT `id`, `group_id`, `sex`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`, `lookaddons` FROM `players` WHERE `id`='".$threadData['player_id']."';") : false;
?>
<font>LinkMap: <a href="forum.php">Forum</a> - <a href="?cat=<?php echo $getCat; ?>"><?php echo $getForum; ?></a></font><br>
<font size="5" id="ThreadTitle">Viewing thread: <?php echo "<a href='?forum=". $getForum ."&cat=". $getCat ."&thread=". $threadData['id'] ."'>". $threadData['title'] ."</a>"; ?></font>
<table class="znoteTable ThreadTable table table-striped">
<tr class="yellow">
<th<?php if ($threadPlayer !== false) echo ' colspan="2"'; ?>>
<?php
echo getClock($threadData['created'], true);
if ($threadPlayer === false): ?>
- Created by:
<?php
echo "<a href='characterprofile.php?name=". $threadData['player_name'] ."'>". $threadData['player_name'] ."</a>";
endif;
?>
</th>
</tr>
<tr>
<?php if ($threadPlayer !== false): ?>
<td class="avatar">
<a href='characterprofile.php?name=<?php echo $threadData['player_name']; ?>'><?php echo $threadData['player_name']; ?></a>
<?php if ($config['forum']['outfit_avatars']): ?>
<br><img src="<?php echo $config['show_outfits']['imageServer']; ?>?id=<?php echo $threadPlayer['looktype']; ?>&addons=<?php echo $threadPlayer['lookaddons']; ?>&head=<?php echo $threadPlayer['lookhead']; ?>&body=<?php echo $threadPlayer['lookbody']; ?>&legs=<?php echo $threadPlayer['looklegs']; ?>&feet=<?php echo $threadPlayer['lookfeet']; ?>" alt="img">
<?php endif; ?>
<?php if ($config['forum']['player_position']): ?>
<br><span><?php echo group_id_to_name($threadPlayer['group_id']); ?></span>
<?php endif; ?>
</td>
<?php endif; ?>
<td>
<p><?php echo nl2br(TransformToBBCode($threadData['text'])); ?></p>
</td>
</tr>
</table>
<hr class="bighr">
<?php
if ($admin || $leader) {
// PlayerHaveAccess($yourChars, $thread['player_name']) ||
// $yourChars
?>
<table class="adminTable table">
<tr>
<td>
<form action="" method="post">
<input type="hidden" name="admin_thread_id" value="<?php echo $threadData['id']; ?>">
<input type="submit" name="admin_thread_delete" value="Delete Thread" class="btn btn-danger">
</form>
</td>
<td>
<?php if ($threadData['closed'] == 0) { ?>
<form action="" method="post">
<input type="hidden" name="admin_thread_id" value="<?php echo $threadData['id']; ?>">
<input type="submit" name="admin_thread_close" value="Close Thread" class="btn btn-warning">
</form>
<?php } else { ?>
<form action="" method="post">
<input type="hidden" name="admin_thread_id" value="<?php echo $threadData['id']; ?>">
<input type="submit" name="admin_thread_open" value="Open Thread" class="btn btn-success">
</form>
<?php } ?>
</td>
<td>
<?php if ($threadData['sticky'] == 0) { ?>
<form action="" method="post">
<input type="hidden" name="admin_thread_id" value="<?php echo $threadData['id']; ?>">
<input type="submit" name="admin_thread_sticky" value="Stick thread" class="btn btn-info">
</form>
<?php } else { ?>
<form action="" method="post">
<input type="hidden" name="admin_thread_id" value="<?php echo $threadData['id']; ?>">
<input type="submit" name="admin_thread_unstick" value="Unstick thread" class="btn btn-primary">
</form>
<?php } ?>
</td>
<td>
<form action="" method="post">
<input type="hidden" name="edit_thread_id" value="<?php echo $threadData['id']; ?>">
<input type="submit" name="edit_thread" value="Edit Thread" class="btn btn-warning">
</form>
</td>
</tr>
</table>
<?php
} else {
if ($threadData['closed'] == 0 && PlayerHaveAccess($yourChars, $threadData['player_name'])) {
?>
<table class="editThread">
<tr>
<td>
<form action="" method="post">
<input type="hidden" name="edit_thread_id" value="<?php echo $threadData['id']; ?>">
<input type="submit" name="edit_thread" value="Edit Thread" class="btn btn-info">
</form>
</td>
</tr>
</table>
<?php
}
}
?>
<?php
// Display replies... (copy table above and edit each post)
$posts = mysql_select_multi("SELECT `id`, `player_id`, `player_name`, `text`, `created`, `updated` FROM `znote_forum_posts` WHERE `thread_id`='". $threadData['id'] ."' ORDER BY `created`;");
if ($posts !== false) {
// Load extra data (like outfit avatars?)
$players = array();
$extra = false;
if ($config['forum']['outfit_avatars'] || $config['forum']['player_position']) {
$extra = true;
foreach($posts as $post)
if (!isset($players[$post['player_id']]))
$players[$post['player_id']] = array();
$sql_players = mysql_select_multi("SELECT `id`, `group_id`, `sex`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`, `lookaddons` FROM `players` WHERE `id` IN (".implode(',', array_keys($players)).");");
foreach ($sql_players as $player)
$players[$player['id']] = $player;
}
foreach($posts as $post) {
?>
<table class="znoteTable ThreadTable table table-striped">
<tr class="yellow">
<th<?php if ($extra) echo ' colspan="2"'; ?>>
<?php echo getClock($post['created'], true);
if (!$extra): ?>
- Posted by:
<?php echo "<a href='characterprofile.php?name=". $post['player_name'] ."'>". $post['player_name'] ."</a>";
endif; ?>
</th>
</tr>
<tr>
<?php if ($extra): ?>
<td class="avatar">
<a href='characterprofile.php?name=<?php echo $post['player_name']; ?>'><?php echo $post['player_name']; ?></a>
<?php if ($config['forum']['outfit_avatars']): ?>
<br><img src="<?php echo $config['show_outfits']['imageServer']; ?>?id=<?php echo $players[$post['player_id']]['looktype']; ?>&addons=<?php echo $players[$post['player_id']]['lookaddons']; ?>&head=<?php echo $players[$post['player_id']]['lookhead']; ?>&body=<?php echo $players[$post['player_id']]['lookbody']; ?>&legs=<?php echo $players[$post['player_id']]['looklegs']; ?>&feet=<?php echo $players[$post['player_id']]['lookfeet']; ?>" alt="img">
<?php endif; ?>
<?php if ($config['forum']['player_position']): ?>
<br><span><?php echo group_id_to_name($players[$post['player_id']]['group_id']); ?></span>
<?php endif; ?>
</td>
<?php endif; ?>
<td>
<p><?php echo nl2br(TransformToBBCode($post['text'])); ?></p>
</td>
</tr>
</table>
<hr class="bighr">
<?php
if (PlayerHaveAccess($yourChars, $post['player_name']) || $admin) {
if ($admin) {
?>
<form action="" method="post" class="postButton">
<input type="hidden" name="admin_post_id" value="<?php echo $post['id']; ?>">
<input type="submit" name="admin_post_delete" value="Delete Post" class="btn btn-danger">
</form>
<?php
}
if ($threadData['closed'] == 0 || $admin) {
?>
<form action="" method="post" class="postButton">
<input type="hidden" name="edit_post_id" value="<?php echo $post['id']; ?>">
<input type="submit" name="edit_post" value="Edit Post" class="btn btn-info">
</form>
<?php
}
}
}
}
// Quick Reply
if ($charCount > 0) {
if ($threadData['closed'] == 0 || $yourAccess > 3) {
?>
<form action="" method="post">
<input name="reply_thread" type="hidden" value="<?php echo $threadData['id']; ?>"><br>
<p style="font-size: 13px; padding-left: 10px; padding-top: 10px; height: 5px; width: 600px; border-top: 1px solid black;"><b>[b]Bold Text[/b]</b>, [img]<a href="https://imgur.com/">Direct Image Link</a>[/img], [center]Cented Text[/center],<br> [link]<a href="http://youtube.com/" target="_BLANK">http://youtube.com/</a>[/link], [color=<font color="green">GREEN</font>]<font color="green">Green Text!</font>[/color], [*] - Dotted [/*]</p><br>
<textarea class="forumReply" name="reply_text" style="width: 610px; height: 150px"></textarea><br>
<select name="reply_cid" multiple="multiple">
<?php
foreach($yourChars as $char) {
echo "<option value='". $char['id'] ."'>". $char['name'] ."</option>";
}
?>
</select>
<input name="" type="submit" value="Post Reply" class="btn btn-primary">
</form>
<?php
} else echo '<p><b>You don\'t have permission to post on this thread. [Thread: Closed]</b></p>';
} else {
?><p>You must have a character on your account that is level <?php echo $config['forum']['level']; ?>+ to reply to this thread.</p><?php
}
} else echo "<p><font color='red'>Your permission to access this thread has been denied.</font></p>";
} else {
?>
<h1>Thread unavailable</h1>
<p>Thread is unavailable for you, or do not exist any more.
<?php
if ($_GET['cat'] > 0 && !empty($_GET['forum'])) {
$tmpCat = getValue($_GET['cat']);
$tmpCatName = getValue($_GET['forum']);
?>
<br><a href="forum.php?forum=<?php echo $tmpCatName; ?>&cat=<?php echo $tmpCat; ?>">Go back to: <?php echo $tmpCatName; ?></a></p>
<?php
} else {
?>
<br><a href="forum.php">Go back to Forum</a></p>
<?php
}
?>
<?php
}
} else
/////////////////////
// When you want to create a new thread
if ($new_thread_category !== false && $new_thread_cid !== false) {
// Verify we got access to this category
$category = mysql_select_single("SELECT `access`, `closed`, `guild_id` FROM `znote_forum` WHERE `id`='$new_thread_category' LIMIT 1;");
if ($category !== false) {
$access = true;
if (!$admin) {
if ($category['access'] > $yourAccess) $access = false;
if ($category['guild_id'] > 0) {
$status = false;
foreach($charData as $char) {
if ($char['guild'] == $category['guild_id']) $status = true;
}
if (!$status) $access = false;
}
if ($category['closed'] > 0) $access = false;
}
if ($access) {
?>
<h1>Create new thread</h1>
<form type="" method="post">
<input type="text" disabled value="<?php echo $charData[$new_thread_cid]['name']; ?>" style="width: 100px;">
<input name="create_thread_cid" type="hidden" value="<?php echo $new_thread_cid; ?>">
<input name="create_thread_category" type="hidden" value="<?php echo $new_thread_category; ?>">
<input name="create_thread_title" type="text" placeholder="Thread title" style="width: 500px;"><br><br>
<textarea name="create_thread_text" style="width: 610px; height: 300px" placeholder="Thread text"></textarea><br>
<input type="submit" value="Create Thread" class="btn btn-success">
</form>
<?php
} else echo '<p><b><font color="red">Permission to create thread denied.</font></b></p>';
}
} else
/////////////////////
// When category is specified
if ($getCat !== false) {
$getCat = (int)$getCat;
// Fetch category rules
$category = mysql_select_single("SELECT `name`, `access`, `closed`, `hidden`, `guild_id` FROM `znote_forum` WHERE `id`='$getCat' AND `access`<='$yourAccess' LIMIT 1;");
if ($category !== false && $category['guild_id'] > 0 && !$admin) {
$access = false;
foreach($charData as $char) if ($category['guild_id'] == $char['guild']) $access = true;
if ($access !== true) $category = false;
}
if ($category !== false) {
// TODO : Verify guild access
//foreach($charData)
echo "<h1><a href='forum.php'>Forum</a> Board: ". $category['name'] ."</h1>";
// Threads
// - id - forum_id - player_id - player_name - title - text - created - updated - sticky - hidden - closed
$threads = mysql_select_multi("SELECT `id`, `player_name`, `title`, `sticky`, `closed` FROM `znote_forum_threads` WHERE `forum_id`='$getCat' ORDER BY `sticky` DESC, `updated` DESC;");
///// HTML \\\\\
if ($threads !== false) {
?>
<table class="znoteTable table table-bordered table-striped table-hover" id="forumThreadTable">
<tr class="yellow">
<th width="80%">Title</th>
<th width="20%">By</th>
</tr>
<?php
foreach($threads as $thread) {
$access = true;
if ($category['hidden'] == 1) {
if (!$admin) $access = false;
$access = PlayerHaveAccess($yourChars, $thread['player_name']);
if ($yourAccess > 3) $access = true;
}
if ($access) {
?>
<tr class="special">
<?php
$url = url("forum.php?forum=". $category['name'] ."&cat=". $getCat ."&thread=". $thread['id']);
echo '<td onclick="javascript:window.location.href=\'' . $url . '\'">';
?>
<!--<td>-->
<?php
if ($thread['sticky'] == 1) echo $config['forum']['sticky'],' ';
if ($thread['closed'] == 1) echo $config['forum']['closed'],' ';
echo $thread['title'];
?>
</td>
<?php
$url = url("characterprofile.php?name=". $thread['player_name']);
echo '<td onclick="javascript:window.location.href=\'' . $url . '\'">';
?>
<!--<td>-->
<?php
echo $thread['player_name'];
?>
</td>
</tr>
<?php
}
}
?>
</table>
<?php
} else echo 'Board is empty, no threads exist yet.';
///////////
// Create thread button
if ($charCount > 0) {
if ($category['closed'] == 0 || $admin) {
?>
<form action="" method="post">
<input type="hidden" value="<?php echo $getCat; ?>" name="new_thread_category">
<select name="new_thread_cid" multiple="multiple">
<?php
foreach($yourChars as $char) {
echo "<option value='". $char['id'] ."'>". $char['name'] ."</option>";
}
?>
</select>
<input type="submit" value="Create new thread" class="btn btn-primary">
</form>
<?php
} else echo '<p>This board is closed.</p>';
} else echo "<p>You must have a character on your account that is level ". $config['forum']['level'] ."+ to create new threads.</p>";
} else echo "<p><font color='red'>Your permission to access this board has been denied.<br>If you are trying to access a Guild Board, you need level: ". $config['forum']['level'] ."+</font></p>";
}
} else {
//////////////////////
// No category specified, show list of available categories
if (!$admin) $categories = mysql_select_multi(
"SELECT `id`, `name`, `access`, `closed`, `hidden`, `guild_id` FROM `znote_forum` WHERE `access`<='$yourAccess' ORDER BY `name`;");
else $categories = mysql_select_multi("SELECT `id`, `name`, `access`, `closed`, `hidden`, `guild_id` FROM `znote_forum` ORDER BY `name`;");
$guildboard = false;
?>
<table class="znoteTable table table-striped table-hover" id="forumCategoryTable">
<tr class="yellow">
<th>Forum Boards</th>
<?php
$guild = false;
foreach($charData as $char) {
if ($char['guild'] > 0) $guild = true;
}
if ($admin || $guild) {
if (!isset($guilds)) {
$guilds = mysql_select_multi("SELECT `id`, `name` FROM `guilds` ORDER BY `name`;");
$guilds[] = array('id' => '0', 'name' => 'No guild');
}
$guildName = array();
foreach($guilds as $guild) {
$guildName[$guild['id']] = $guild['name'];
}
if ($admin) {
?>
<th>Edit</th>
<th>Delete</th>
<?php
}
}
?>
</tr>
<?php
if ($categories !== false) {
foreach ($categories as $category) {
$access = true;
if ($category['guild_id'] > 0) {
$guildboard[] = $category;
$access = false;
}
/*
if ($guild) {
foreach($charData as $char) {
if ($category['guild_id'] == $char['guild']) $access = true;
}
}
*/
if ($access) {
$url = url("forum.php?cat=". $category['id']);
echo '<tr class="special">';
echo '<td onclick="javascript:window.location.href=\'' . $url . '\'">';
if ($category['closed'] == 1) echo $config['forum']['closed'],' ';
if ($category['hidden'] == 1) echo $config['forum']['hidden'],' ';
if ($category['guild_id'] > 0) {
echo "[". $guildName[$category['guild_id']] ."] ";
}
echo $category['name'] ."</td>";
// Admin columns
if ($admin) {
?>
<td style="margin: 0px; padding: 0px; width: 100px;">
<form action="" method="post">
<input type="hidden" name="admin_category_id" value="<?php echo $category['id']; ?>">
<input type="submit" name="admin_category_edit" value="Edit" style="margin: 0px; padding: 0px; width: 50px; height: 22px;" class="btn btn-warning">
</form>
</td>
<td style="margin: 0px; padding: 0px; width: 100px;">
<form action="" method="post">
<input type="hidden" name="admin_category_id" value="<?php echo $category['id']; ?>">
<input type="submit" name="admin_category_delete" value="Delete" style="margin: 0px; padding: 0px; width: 75px; height: 22px;" class="btn btn-danger">
</form>
</td>
<?php
}
echo '</tr>';
}
}
}
?>
</table>
<hr class="bighr">
<?php
if ($guildboard !== false && $guild || $guildboard !== false && $admin) {
//
?>
<table class="table table-striped table-hover znoteTable" id="forumCategoryTable">
<tr class="yellow">
<th>Guild Boards</th>
<?php
foreach($charData as $char) {
if ($char['guild'] > 0) $guild = true;
}
if ($admin || $guild) {
if (!isset($guilds)) {
$guilds = mysql_select_multi("SELECT `id`, `name` FROM `guilds` ORDER BY `name`;");
$guilds[] = array('id' => '0', 'name' => 'No guild');
}
$guildName = array();
foreach($guilds as $guild) {
$guildName[$guild['id']] = $guild['name'];
}
if ($admin) {
?>
<th width="100">Edit</th>
<th width="100">Delete</th>
<?php
}
}
?>
</tr>
<?php
$count = 0;
foreach ($guildboard as $board) {
$access = false;
foreach($charData as $char) {
if ($board['guild_id'] == $char['guild']) {
$access = true;
$count++;
}
}
if ($access || $admin) {
$url = url("forum.php?cat=". $board['id']);
echo '<tr class="special">';
echo '<td onclick="javascript:window.location.href=\'' . $url . '\'">';
if ($board['closed'] == 1) echo $config['forum']['closed'],' ';
if ($board['hidden'] == 1) echo $config['forum']['hidden'],' ';
if ($board['guild_id'] > 0) {
echo "[". $guildName[$board['guild_id']] ."] ";
}
echo $board['name'] ."</td>";
// Admin columns
if ($admin) {
?>
<td style="margin: 0px; padding: 0px; width: 100px;">
<form action="" method="post">
<input type="hidden" name="admin_category_id" value="<?php echo $board['id']; ?>">
<input type="submit" name="admin_category_edit" value="Edit" style="margin: 0px; padding: 0px; width: 50px; height: 22px;" class="btn btn-warning">
</form>
</td>
<td style="margin: 0px; padding: 0px; width: 100px;">
<form action="" method="post">
<input type="hidden" name="admin_category_id" value="<?php echo $board['id']; ?>">
<input type="submit" name="admin_category_delete" value="Delete" style="margin: 0px; padding: 0px; width: 75px; height: 22px;" class="btn btn-danger">
</form>
</td>
<?php
}
echo '</tr>';
}
}
if ($count == 0 && !$admin) echo '<tr><td>You don\'t have access to any guildboards.</td></tr>';
?>
</table>
<?php
}
if ($admin) {
?>
<h2>Create board:</h2>
<form action="" method="post">
<input type="text" name="admin_board_create_name" placeholder="Board name"><br><br>
Required access: <select name="admin_board_create_access">
<?php
foreach($config['ingame_positions'] as $access => $name) {
echo "<option value='$access'>$name</option>";
}
?>
</select><br><br>
Board closed: <select name="admin_board_create_closed">
<option value="0">No</option>
<option value="1">Yes</option>
</select><br>
Board hidden: <select name="admin_board_create_hidden">
<option value="0">No</option>
<option value="1">Yes</option>
</select><br><br>
Guild board: <select name="admin_board_create_guild_id">
<?php
foreach($guilds as $guild) {
if ($guild['id'] == 0) echo "<option value='". $guild['id'] ."' selected>". $guild['name'] ."</option>";
else echo "<option value='". $guild['id'] ."'>". $guild['name'] ."</option>";
}
?>
</select><br><br>
<input type="submit" value="Create Board" class="btn btn-primary">
</form>
<?php
}
}
include 'layout/overall/footer.php'; ?>