101 lines
4.4 KiB
PHP
101 lines
4.4 KiB
PHP
<?php
|
|
|
|
// forum.php :: Internal forums script for the game.
|
|
|
|
namespace Forum;
|
|
|
|
use Router;
|
|
|
|
function register_routes(Router $r): Router
|
|
{
|
|
$r->get('/forum/thread/:x/:x', 'Forum\showthread');
|
|
$r->form('/forum/new', 'Forum\newthread');
|
|
$r->post('/forum/reply', 'Forum\reply');
|
|
$r->get('/forum/list/:x', 'Forum\donothing');
|
|
$r->get('/forum', 'Forum\donothing');
|
|
return $r;
|
|
}
|
|
|
|
function donothing($start = 0)
|
|
{
|
|
$query = db()->query('SELECT * FROM forum WHERE parent=0 ORDER BY newpostdate DESC LIMIT 20 OFFSET ?;', [20 * $start]);
|
|
$page = "<table width=\"100%\"><tr><td style=\"padding:1px; background-color:black;\"><table width=\"100%\" style=\"margins:0px;\" cellspacing=\"1\" cellpadding=\"3\"><tr><th colspan=\"3\" style=\"background-color:#dddddd;\"><center><a href=\"/forum/new\">New Thread</a></center></th></tr><tr><th width=\"50%\" style=\"background-color:#dddddd;\">Thread</th><th width=\"10%\" style=\"background-color:#dddddd;\">Replies</th><th style=\"background-color:#dddddd;\">Last Post</th></tr>\n";
|
|
|
|
$hasRows = false;
|
|
|
|
while ($row = $query->fetchArray(SQLITE3_ASSOC)) {
|
|
$hasRows = true;
|
|
$page .= "<tr><td style=\"background-color:#ffffff;\"><a href=\"/forum/thread/".$row["id"]."/0\">".$row["title"]."</a></td><td style=\"background-color:#ffffff;\">".$row["replies"]."</td><td style=\"background-color:#ffffff;\">".$row["newpostdate"]."</td></tr>\n";
|
|
}
|
|
|
|
if (!$hasRows) {
|
|
$page .= "<tr><td style=\"background-color:#ffffff;\" colspan=\"3\"><b>No threads in forum.</b></td></tr>\n";
|
|
}
|
|
|
|
$page .= "</table></td></tr></table>";
|
|
|
|
display($page, "Forum");
|
|
}
|
|
|
|
function showthread($id, $start)
|
|
{
|
|
$posts = db()->query('SELECT * FROM forum WHERE id=? OR parent=? ORDER BY id LIMIT 15 OFFSET ?;', [$id, $id, $start * 15]);
|
|
$title = db()->query('SELECT title FROM forum WHERE id=? LIMIT 1;', [$id])->fetchArray(SQLITE3_ASSOC);
|
|
|
|
$page = "<table width=\"100%\"><tr><td style=\"padding:1px; background-color:black;\"><table width=\"100%\" style=\"margins:0px;\" cellspacing=\"1\" cellpadding=\"3\"><tr><td colspan=\"2\" style=\"background-color:#dddddd;\"><b><a href=\"/forum\">Forum</a> :: ".$title['title']."</b></td></tr>\n";
|
|
while ($row = $posts->fetchArray(SQLITE3_ASSOC)) {
|
|
$page .= "<tr><td width=\"25%\" style=\"background-color:#ffffff; vertical-align:top;\"><span class=\"small\"><b>".$row["author"]."</b><br><br>".prettyforumdate($row["postdate"])."</td><td style=\"background-color:#ffffff; vertical-align:top;\">".nl2br($row["content"])."</td></tr>\n";
|
|
}
|
|
$page .= "</table></td></tr></table><br>";
|
|
$page .= "<table width=\"100%\"><tr><td><b>Reply To This Thread:</b><br><form action=\"/forum/reply\" method=\"post\"><input type=\"hidden\" name=\"parent\" value=\"$id\" /><input type=\"hidden\" name=\"title\" value=\"Re: ".$title["title"]."\" /><textarea name=\"content\" rows=\"7\" cols=\"40\"></textarea><br><input type=\"submit\" name=\"submit\" value=\"Submit\" /> <input type=\"reset\" name=\"reset\" value=\"Reset\" /></form></td></tr></table>";
|
|
|
|
display($page, "Forum");
|
|
}
|
|
|
|
function reply()
|
|
{
|
|
global $userrow;
|
|
|
|
$form = validate($_POST, [
|
|
'title' => [],
|
|
'content' => []
|
|
]);
|
|
|
|
if (!$form['valid']) {
|
|
exit(ul_from_validate_errors($form['errors']));
|
|
}
|
|
|
|
$form = $form['data'];
|
|
|
|
db()->query('INSERT INTO forum (author, title, content, parent) VALUES (?, ?, ?, ?);', [
|
|
$userrow['username'], $form['title'], $form['content'], $form['parent']
|
|
]);
|
|
db()->query('UPDATE forum SET newpostdate=CURRENT_TIMESTAMP, replies=replies + 1 WHERE id=?;', [$form['parent']]);
|
|
redirect("/forum/thread/{$form['parent']}/0");
|
|
}
|
|
|
|
function newthread()
|
|
{
|
|
global $userrow;
|
|
|
|
if (isset($_POST["submit"])) {
|
|
$form = validate($_POST, [
|
|
'title' => ['length:2-30'],
|
|
'content' => []
|
|
]);
|
|
|
|
if (!$form['valid']) {
|
|
exit(ul_from_validate_errors($form['errors']));
|
|
}
|
|
|
|
$form = $form['data'];
|
|
db()->query('INSERT INTO forum (author, title, content) VALUES (?, ?, ?);', [
|
|
$userrow['username'], $form['title'], $form['content']
|
|
]);
|
|
redirect('/forum');
|
|
}
|
|
|
|
$page = "<table width=\"100%\"><tr><td><b>Make A New Post:</b><br><br/ ><form action=\"/forum/new\" method=\"post\">Title:<br><input type=\"text\" name=\"title\" size=\"50\" maxlength=\"50\" /><br><br>Message:<br><textarea name=\"content\" rows=\"7\" cols=\"40\"></textarea><br><br><input type=\"submit\" name=\"submit\" value=\"Submit\" /> <input type=\"reset\" name=\"reset\" value=\"Reset\" /></form></td></tr></table>";
|
|
display($page, "Forum");
|
|
}
|