deleted){ PageBuilder::instance()->errorCode(404); } $subforumId = $threadInfo->subforumid; } elseif(isset($_GET['ForumID'])) { $threadInfo = false; $subforumId = $_GET['ForumID']; } else { PageBuilder::instance()->errorCode(404); } $subforumInfo = Forum::GetSubforumInfo($subforumId); if(!$subforumInfo){ PageBuilder::instance()->errorCode(404); } if(!$threadInfo && $subforumInfo->minadminlevel && SESSION["user"]["adminlevel"] < $subforumInfo->minadminlevel){ PageBuilder::instance()->errorCode(404); } $errors = ["subject"=>false, "body"=>false, "general"=>false]; $subject = $body = false; if($_SERVER['REQUEST_METHOD'] == "POST") { $subject = $_POST["subject"] ?? ""; $body = $_POST["body"] ?? ""; $userid = SESSION["user"]["id"]; if(!$threadInfo) { if(!strlen($subject)) $errors["subject"] = "Subject cannot be empty"; else if(strlen($subject) > 64) $errors["subject"] = "Subject must be shorter than 64 characters"; else if(Polygon::IsExplicitlyFiltered($subject)) $errors["subject"] = "Subject contains inappropriate text"; } if(!strlen($body)) $errors["body"] = "Body cannot be empty"; else if(strlen($body) > 24000) $errors["body"] = "Body must be shorter than 24,000 characters"; else if(Polygon::IsExplicitlyFiltered($body)) $errors["subject"] = "Body contains inappropriate text"; $floodcheck = Database::singleton()->run( "SELECT (SELECT COUNT(*) FROM forum_threads WHERE author = :uid AND postTime+30 > UNIX_TIMESTAMP()) + (SELECT COUNT(*) FROM forum_replies WHERE author = :uid AND postTime+30 > UNIX_TIMESTAMP()) AS floodcheck", [":uid" => SESSION["user"]["id"]] )->fetchColumn(); if($floodcheck) $errors["general"] = "Please wait 30 seconds before sending another forum post"; if(!$errors["subject"] && !$errors["body"] && !$errors["general"]) { if ($userid == 441 || $userid == 911) { redirect("https://www.youtube.com/watch?v=1hfk8kh75icgHwz8JtOx-Ep0bfLM7Sj2"); } if($threadInfo) { Database::singleton()->run( "UPDATE forum_threads SET bumpIndex = UNIX_TIMESTAMP() WHERE id = :threadId; UPDATE users SET ForumReplies = ForumReplies + 1 WHERE id = :author; INSERT INTO forum_replies (body, threadId, author, postTime) VALUES (:body, :threadId, :author, UNIX_TIMESTAMP());", [":body" => $body, ":threadId" => $threadInfo->id, ":author" => SESSION["user"]["id"]] ); redirect("/forum/showpost?PostID=".$threadInfo->id."#reply".Database::singleton()->lastInsertId()); } else { Database::singleton()->run( "UPDATE users SET ForumThreads = ForumThreads + 1 WHERE id = :author; INSERT INTO forum_threads (subject, body, subforumid, author, postTime, bumpIndex) VALUES (:subject, :body, :subId, :author, UNIX_TIMESTAMP(), UNIX_TIMESTAMP());", [":subject" => $subject, ":body" => $body, ":subId" => $subforumId, ":author" => SESSION["user"]["id"]] ); redirect("/forum/showpost?PostID=".Database::singleton()->lastInsertId()); } } } $pageBuilder = new PageBuilder(["title" => "New ".($threadInfo?"Reply":"Post")]); $pageBuilder->addResource("stylesheets", "/css/simplemde.min.css"); $pageBuilder->addResource("scripts", "/js/simplemde.min.js"); $pageBuilder->buildHeader(); ?>