summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcflip <36554078+cflip@users.noreply.github.com>2021-04-24 09:40:20 -0600
committercflip <36554078+cflip@users.noreply.github.com>2021-04-24 09:40:20 -0600
commit7c3f2e348c015ea93563d866f89ec8cea9159ea0 (patch)
treeb7b6b18cf9087f42300f621d15101628a8d214e4
parent6c9369ad85f2fb3dc61234b54db7e7079cdc0c4e (diff)
Refactoring part 2
Starting to move some functionality such as the session and database connection into singleton classes to manage them. Functions for modifying posts and threads are being put in one place as well.
-rw-r--r--create_thread.php68
-rw-r--r--includes/Database.php39
-rw-r--r--includes/Session.php8
-rw-r--r--includes/functions_insert.php35
-rw-r--r--includes/functions_post.php69
-rw-r--r--includes/functions_thread.php51
-rw-r--r--includes/model/User.php36
-rw-r--r--includes/templates/header.php8
-rw-r--r--manage_post.php86
-rw-r--r--moderate.php25
-rw-r--r--register.php26
-rw-r--r--search.php114
-rw-r--r--signin.php31
-rw-r--r--viewthread.php11
-rw-r--r--viewuser.php16
15 files changed, 333 insertions, 290 deletions
diff --git a/create_thread.php b/create_thread.php
index 4598ce2..534b0ab 100644
--- a/create_thread.php
+++ b/create_thread.php
@@ -1,63 +1,61 @@
-<?php session_start()?>
+<?php session_start() ?>
<!DOCTYPE html>
-<html>
+<html lang="en">
<head>
- <title>Create a thread - cflip.net forum</title>
- <link rel="stylesheet" href="styles/style.css">
+ <title>Create a thread - cflip.net forum</title>
+ <link rel="stylesheet" href="styles/style.css">
</head>
<body>
-<?php include_once 'templates/header.php' ?>
+<?php include_once 'includes/templates/header.php' ?>
<h2>Create a new thread</h2>
<?php
-if (!isset($_SESSION['signed_in'])) {
- die('You must be <a href="signin.php">signed in</a> to create a thread.');
-}
+include_once 'includes/Session.php';
+if (!Session::get()->is_signed_in()) {
+ trigger_error('You must be <a href="signin.php">signed in</a> to create a thread.');
+ exit();
+}
?>
-<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
- <label for="thread_subject">Subject: </label><br>
- <input type="text" name="thread_subject"><br>
- <label for="thread_cat">Category: </label><br>
+<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
+ <label for="thread_subject">Subject: </label><br>
+ <input type="text" name="thread_subject"><br>
+ <label for="thread_cat">Category: </label><br>
<?php
- include_once 'includes/db_inc.php';
- include_once 'model/Category.php';
+ include_once './includes/db_inc.php';
+ include_once './includes/model/Category.php';
- $categories = get_all_categories($dbc);
+ $categories = get_all_categories($dbc);
- if (count($categories) == 0) {
- echo 'There are no categories to post to!';
- } else {
- echo '<select name="thread_cat">';
+ if (count($categories) == 0) {
+ echo 'There are no categories to post to!';
+ } else {
+ echo '<select name="thread_cat">';
- foreach ($categories as $category) {
- echo '<option value="' . $category->id . '">' . $category->name . '</option>';
- }
-
- echo '</select><br>';
+ foreach ($categories as $category) {
+ echo '<option value="' . $category->id . '">' . $category->name . '</option>';
}
+
+ echo '</select><br>';
+ }
?>
- <label for="post_content">Write your post: </label><br>
- <textarea name="post_content"></textarea><br>
- <input type="submit" name="submit">
+ <label for="post_content">Write your post: </label><br>
+ <textarea name="post_content"></textarea><br>
+ <input type="submit" name="submit">
</form>
<?php
-include_once 'includes/db_inc.php';
-include_once 'includes/functions_insert.php';
+include_once 'includes/functions_post.php';
+include_once 'includes/functions_thread.php';
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$post_content = filter_input(INPUT_POST, 'post_content', FILTER_SANITIZE_STRING);
$thread_subject = filter_input(INPUT_POST, 'thread_subject', FILTER_SANITIZE_STRING);
$thread_cat = filter_input(INPUT_POST, 'thread_cat', FILTER_SANITIZE_NUMBER_INT);
- $user_id = filter_var($_SESSION['user_id'], FILTER_SANITIZE_NUMBER_INT);
if (empty($thread_subject) or !$thread_subject) {
echo 'Thread subject cannot be empty';
} else {
- insert_thread($dbc, $thread_subject, $thread_cat, $user_id);
- $thread_id = mysqli_insert_id($dbc);
- insert_post($dbc, $post_content, $thread_id, $user_id, $thread_cat);
+ $thread_id = create_thread($thread_subject, $thread_cat);
+ create_post($post_content, $thread_id, $thread_cat);
- $sql = "UPDATE categories SET `cat_thread_count` = `cat_thread_count` + '1' WHERE cat_id = " . $thread_cat . ";";
- mysqli_query($dbc, $sql);
header("Location: viewthread.php?id=" . $thread_id);
}
diff --git a/includes/Database.php b/includes/Database.php
index 3308e4c..cdaa0f8 100644
--- a/includes/Database.php
+++ b/includes/Database.php
@@ -21,7 +21,7 @@ class Database
}
}
- public static function get(): ?Database
+ public static function get()
{
if (self::$instance == null) {
self::$instance = new Database();
@@ -30,8 +30,41 @@ class Database
return self::$instance;
}
- public function query(string $sql)
+ public function query(string $sql, string $types = "", ...$vars): array
{
- mysqli_query($this->sql_connection, $sql);
+ $stmt = mysqli_stmt_init($this->sql_connection);
+
+ if (!mysqli_stmt_prepare($stmt, $sql)) {
+ trigger_error('Could not create post due to internal error: ' . mysqli_error($this->sql_connection));
+ }
+
+ mysqli_stmt_bind_param($stmt, $types, ...$vars);
+ mysqli_stmt_execute($stmt);
+
+ $result = array();
+ $db_result = mysqli_stmt_get_result($stmt);
+
+ if (mysqli_num_rows($db_result) > 0) {
+ while ($row = mysqli_fetch_assoc($db_result)) {
+ array_push($result, $row);
+ }
+ }
+
+ mysqli_free_result($db_result);
+ mysqli_stmt_close($stmt);
+
+ return $result;
+ }
+
+ /**
+ * Returns the auto generated ID of the last query.
+ * This function is just a wrapper for mysqli_insert_id.
+ * In the future, it might be better to return different
+ * values in the query function depending on the type of
+ * SQL query.
+ */
+ public function get_last_id()
+ {
+ return mysqli_insert_id($this->sql_connection);
}
} \ No newline at end of file
diff --git a/includes/Session.php b/includes/Session.php
index d97e7c5..7e17527 100644
--- a/includes/Session.php
+++ b/includes/Session.php
@@ -9,10 +9,8 @@ class Session
session_start();
}
- public static function get(): ?Session
+ public static function get()
{
- session_start();
-
if (self::$instance == null) {
self::$instance = new Session();
}
@@ -25,7 +23,7 @@ class Session
$_SESSION['signed_in'] = true;
}
- public function is_signed_in()
+ public function is_signed_in(): bool
{
return isset($_SESSION['signed_in']);
}
@@ -42,7 +40,7 @@ class Session
$result = new User();
if (isset($_SESSION['user_id'])) {
- $result->get_by_id($_GET['id'], $dbc);
+ $result->get_by_id($_SESSION['user_id']);
} else {
$result = null;
}
diff --git a/includes/functions_insert.php b/includes/functions_insert.php
deleted file mode 100644
index 4f60701..0000000
--- a/includes/functions_insert.php
+++ /dev/null
@@ -1,35 +0,0 @@
-<?php
-
-// This file may be replaced by a MVC controller later on
-
-function insert_thread($dbc, $thread_subject, $thread_cat, $thread_author) {
- $sql = "INSERT INTO threads(thread_subject, thread_date_created, thread_date_lastpost, thread_category, thread_author) VALUES (?, CONVERT_TZ(NOW(), 'SYSTEM', '+00:00'), CONVERT_TZ(NOW(), 'SYSTEM', '+00:00'), ?, ?);";
- $stmt = mysqli_stmt_init($dbc);
-
- if (!mysqli_stmt_prepare($stmt, $sql)) {
- die('Could not create thread due to internal error: ' . mysqli_error($dbc));
- }
-
- mysqli_stmt_bind_param($stmt, "sii", $thread_subject, $thread_cat, $thread_author);
- mysqli_stmt_execute($stmt);
- mysqli_stmt_close($stmt);
-}
-
-function insert_post($dbc, $post_content, $post_thread, $post_author, $post_category) {
- $sql = "INSERT INTO posts(post_content, post_date_created, post_thread, post_author) VALUES (?, CONVERT_TZ(NOW(), 'SYSTEM', '+00:00'), ?, ?);";
- $stmt = mysqli_stmt_init($dbc);
-
- if (!mysqli_stmt_prepare($stmt, $sql)) {
- die('Could not create post due to internal error: ' . mysqli_error($dbc));
- }
-
- mysqli_stmt_bind_param($stmt, "sii", $post_content, $post_thread, $post_author);
- mysqli_stmt_execute($stmt);
- mysqli_stmt_close($stmt);
-
- $sql = "UPDATE categories SET `cat_post_count` = `cat_post_count` + '1' WHERE cat_id = " . $post_category . ";";
- mysqli_query($dbc, $sql);
-
- $sql = "UPDATE threads SET thread_date_lastpost = CONVERT_TZ(NOW(), 'SYSTEM', '+00:00') WHERE thread_id = " . $post_thread . ";";
- mysqli_query($dbc, $sql);
-}
diff --git a/includes/functions_post.php b/includes/functions_post.php
index 5bc8c2a..0176c76 100644
--- a/includes/functions_post.php
+++ b/includes/functions_post.php
@@ -1,57 +1,72 @@
<?php
-include_once 'Session.php';
-include_once 'model/User.php';
+include_once './includes/Session.php';
+include_once './includes/Database.php';
+include_once './includes/model/User.php';
-function delete_post($post)
+function create_post($post_content, $post_thread, $post_category)
{
// User must be signed in
if (!Session::get()->is_signed_in()) {
- trigger_error('You must be signed in to delete a post!');
+ trigger_error('You must be signed in to create a post');
+ return;
}
- // User must have permission to delete the post
- $current_user = Session::get()->get_current_user();
- if ($current_user->id == $post->author->id || $current_user->level != USER_LEVEL_MODERATOR) {
- trigger_error("You don't have sufficient permissions to delete this post.");
- }
+ $user = Session::get()->get_current_user();
- // TODO: The post must not be locked
+ // Insert the post into the database
+ $sql = "INSERT INTO posts(post_content, post_date_created, post_thread, post_author) VALUES (?, CONVERT_TZ(NOW(), 'SYSTEM', '+00:00'), ?, ?);";
+ Database::get()->query($sql, "sii", $post_content, $post_thread, $user->id);
- // TODO: The post must have not been around for a certain amount of time
+ // Increment the category's post count
+ $sql = "UPDATE categories SET `cat_post_count` = `cat_post_count` + '1' WHERE cat_id = ?;";
+ Database::get()->query($sql, "i", $post_category);
- // Delete the post from the database
- Database::get()->query("DELETE FROM posts WHERE post_id = $post->id");
-
- // Decrement the post count of the category
- $sql = "UPDATE categories SET `cat_post_count` = `cat_post_count` - '1' WHERE cat_id = " . $post->thread->category->id . ";";
- mysqli_query($dbc, $sql);
+ // Set the last post date of the parent thread
+ $sql = "UPDATE threads SET thread_date_lastpost = CONVERT_TZ(NOW(), 'SYSTEM', '+00:00') WHERE thread_id = ?;";
+ Database::get()->query($sql, "i", $post_thread);
}
-function edit_post($post, $post_content)
+function edit_post(Post $post, string $post_content)
{
// User must be signed in
if (!Session::get()->is_signed_in()) {
trigger_error('You must be signed in to edit this post!');
+ return;
}
// User must have permission to edit the post
$current_user = Session::get()->get_current_user();
- if ($current_user->id == $post->author->id || $current_user->level != USER_LEVEL_MODERATOR) {
+ if ($current_user->id != $post->author->id) {
trigger_error("You don't have sufficient permissions to edit this post.");
+ return;
}
// Set the post content and the post edit date
$sql = "UPDATE posts SET post_content = ?, post_date_edited = CONVERT_TZ(NOW(), 'SYSTEM', '+00:00') WHERE post_id = ?;";
- $stmt = mysqli_stmt_init($dbc);
+ Database::get()->query($sql, "si", $post_content, $post->id);
+}
- if (!mysqli_stmt_prepare($stmt, $sql)) {
- trigger_error('Could not create post due to internal error: ' . mysqli_error($dbc));
+function delete_post(Post $post)
+{
+ // User must be signed in
+ if (!Session::get()->is_signed_in()) {
+ trigger_error('You must be signed in to delete a post!');
+ return;
+ }
+
+ // User must have permission to delete the post
+ $current_user = Session::get()->get_current_user();
+ if ($current_user->id != $post->author->id || $current_user->level != USER_LEVEL_MODERATOR) {
+ trigger_error("You don't have sufficient permissions to delete this post.");
+ return;
}
- mysqli_stmt_bind_param($stmt, "si", $post_content, $id);
- mysqli_stmt_execute($stmt);
- mysqli_stmt_close($stmt);
+ // TODO: The post must not be locked
+ // TODO: The post must have not been around for a certain amount of time
+
+ // Delete the post from the database
+ Database::get()->query("DELETE FROM posts WHERE post_id = ?", "i", $post->id);
- // Redirect to the post's thread page
- header("Location: /viewthread.php?id=" . $post->thread->id);
+ // Decrement the post count of the category
+ Database::get()->query("UPDATE categories SET `cat_post_count` = `cat_post_count` - '1' WHERE cat_id = ?", "i", $post->thread->category->id);
}
diff --git a/includes/functions_thread.php b/includes/functions_thread.php
new file mode 100644
index 0000000..62efca9
--- /dev/null
+++ b/includes/functions_thread.php
@@ -0,0 +1,51 @@
+<?php
+include_once './includes/Database.php';
+include_once './includes/Session.php';
+
+function create_thread($subject, $category)
+{
+ if (!Session::get()->is_signed_in()) {
+ trigger_error('You must be signed in to create a thread');
+ return 0;
+ }
+
+ $user = Session::get()->get_current_user();
+
+ // Insert the new thread into the database
+ $sql = "INSERT INTO threads(thread_subject, thread_date_created, thread_date_lastpost, thread_category, thread_author) VALUES (?, CONVERT_TZ(NOW(), 'SYSTEM', '+00:00'), CONVERT_TZ(NOW(), 'SYSTEM', '+00:00'), ?, ?);";
+ Database::get()->query($sql, "sii", $subject, $category, $user->id);
+
+ // Get the ID of the thread we just created
+ $thread_id = Database::get()->get_last_id();
+
+ // Increment the category's thread count
+ $sql = "UPDATE categories SET `cat_thread_count` = `cat_thread_count` + '1' WHERE cat_id = ?;";
+ Database::get()->query($sql, "i", $category);
+
+ return $thread_id;
+}
+
+function delete_thread($thread)
+{
+ // User must be signed in
+ if (!Session::get()->is_signed_in()) {
+ trigger_error('You must be signed in to delete a thread.');
+ return;
+ }
+
+ // User must be a moderator to delete a thread
+ $current_user = Session::get()->get_current_user();
+ if ($current_user->level != USER_LEVEL_MODERATOR) {
+ trigger_error("You must be a moderator to delete this post.");
+ return;
+ }
+
+ // TODO: The post must not be locked
+ // TODO: The post must have not been around for a certain amount of time
+
+ // Delete the thread from the database
+ Database::get()->query("DELETE FROM threads WHERE thread_id = ?", "i", $thread->id);
+
+ // Decrement the thread count of the category
+ Database::get()->query("UPDATE categories SET `cat_thread_count` = `cat_thread_count` - '1' WHERE cat_id = ?", "i", $thread->category->id);
+} \ No newline at end of file
diff --git a/includes/model/User.php b/includes/model/User.php
index 1c48afb..c780ff0 100644
--- a/includes/model/User.php
+++ b/includes/model/User.php
@@ -1,14 +1,17 @@
<?php
+include_once './includes/Database.php';
const USER_LEVEL_MODERATOR = 1;
-class User {
+class User
+{
public $id;
public $name = 'Unknown';
public $date = 0;
public $level = 0;
- function get_by_name($name, $dbc) {
+ function get_by_name($name, $dbc)
+ {
$sql = "SELECT user_id, user_date, user_level FROM users WHERE user_name = ?";
$stmt = mysqli_stmt_init($dbc);
@@ -35,25 +38,14 @@ class User {
mysqli_stmt_close($stmt);
}
- function get_by_id($id, $dbc) {
- $sql = "SELECT user_name, user_date, user_level FROM users WHERE user_id = " . mysqli_real_escape_string($dbc, $id);
- $result = mysqli_query($dbc, $sql);
-
- if (!$result) {
- echo 'Failed to get user: ' . mysqli_error($dbc);
- }
-
- if (mysqli_num_rows($result) == 0) {
- } else {
- while ($row = mysqli_fetch_assoc($result)) {
- $this->id = $id;
- $this->name = $row['user_name'];
- $this->date = $row['user_date'];
- $this->level = $row['user_level'];
- }
- }
-
- mysqli_free_result($result);
- }
+ function get_by_id($id)
+ {
+ $sql = "SELECT user_name, user_date, user_level FROM users WHERE user_id = ?;";
+ $result = Database::get()->query($sql, "i", $id);
+ $this->id = $id;
+ $this->name = $result[0]['user_name'];
+ $this->date = $result[0]['user_date'];
+ $this->level = $result[0]['user_level'];
+ }
} \ No newline at end of file
diff --git a/includes/templates/header.php b/includes/templates/header.php
index 4eb17e3..35d9848 100644
--- a/includes/templates/header.php
+++ b/includes/templates/header.php
@@ -5,8 +5,12 @@
[<a href="/create_thread.php">Create a thread</a>]
<span style="float:right;">
<?php
- if (isset($_SESSION['signed_in'])) {
- echo '[<a href="viewuser.php?id='. $_SESSION['user_id'] .'">' . $_SESSION['user_name'] . '\'s Profile</a>] [<a href="includes/signout_inc.php">Log out</a>]';
+ include_once './includes/Session.php';
+ include_once './includes/model/User.php';
+
+ if (Session::get()->is_signed_in()) {
+ $user = Session::get()->get_current_user();
+ echo '[<a href="viewuser.php?id=' . $user->id . '">' . $user->name . '\'s Profile</a>] [<a href="includes/signout_inc.php">Log out</a>]';
} else {
echo '[<a href="signin.php">Sign in</a>] or [<a href="register.php">Register an account</a>]';
}
diff --git a/manage_post.php b/manage_post.php
index 3f9a9b3..9e04dd4 100644
--- a/manage_post.php
+++ b/manage_post.php
@@ -10,13 +10,13 @@ if ($_SERVER['REQUEST_METHOD'] == 'GET') {
if (!isset($_GET['id']) || !filter_var($_GET['id'], FILTER_VALIDATE_INT)) {
http_response_code(404);
- include_once 'templates/404.php';
+ include_once './includes/templates/404.php';
die();
} else {
$result = $current->get_from_database($_GET['id'], $dbc);
if ($result == 0) {
http_response_code(404);
- include_once 'templates/404.php';
+ include_once './includes/templates/404.php';
die();
}
}
@@ -28,68 +28,54 @@ if ($_SERVER['REQUEST_METHOD'] == 'GET') {
$post = new Post();
$post->get_from_database($id, $dbc);
- if (!isset($_SESSION['signed_in'])) {
- echo 'You must be <a href="signin.php">signed in</a> to manage a post.';
- goto end;
- }
-
- if ($_SESSION['user_id'] != $post->author->id) {
- echo "You can't manage another user's post!";
- goto end;
- }
-
if (strcasecmp($delete, "on") == 0) {
- delete_post($dbc, $post);
+ delete_post($post);
} else {
- edit_post();
+ edit_post($post, $post_content);
}
- end:
header("Location: /viewthread.php?id=" . $post->thread->id);
}
?>
<!DOCTYPE html>
-<html>
+<html lang="en">
<head>
- <title>Manage a post - cflip.net forum</title>
- <link rel="stylesheet" href="/styles/style.css">
+ <title>Manage a post - cflip.net forum</title>
+ <link rel="stylesheet" href="/styles/style.css">
</head>
<body>
- <?php include_once 'templates/header.php' ?>
- <h1>Manage a post</h1>
- <?php
- $current->display_content($dbc);
- echo '<hr>';
+<?php include('includes/templates/header.php'); ?>
+<h1>Manage a post</h1>
+<?php
+$current->display_content($dbc);
+echo '<hr>';
- $id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT);
+$id = filter_input(INPUT_GET, 'id', FILTER_SANITIZE_NUMBER_INT);
- if (!isset($_SESSION['signed_in'])) {
- echo 'You must be <a href="signin.php">signed in</a> to manage a post.';
- return;
- }
-
- $current_user = new User();
- $current_user->get_by_id($_SESSION['user_id'], $dbc);
+if (!Session::get()->is_signed_in()) {
+ echo '<p class="error">You must be <a href="signin.php">signed in</a> to manage a post.</p>';
+ return;
+}
- // Admin users should be able to delete posts, but they should not be able to edit them
- // Or should they??
- if ($current_user->id != $current->author->id/* && $current_user->level < 1*/) {
- echo "You can't manage another user's post!";
- return;
- }
+// Admin users should be able to delete posts, but they should not be able to edit them
+// Or should they??
+if (Session::get()->get_current_user()->id != $current->author->id) {
+ echo '<p class="error">You can\'t manage another user\'s post!</p>';
+ return;
+}
- // TODO: Disallow editing/deleting posts if they have been around for a while
- ?>
- <form action="manage_post.php" method="post">
- <h3>Edit post</h3>
- <input type="hidden" name="id" value="<?= $current->id ?>">
- <textarea name="post_content" rows="10" cols="50"><?= $current->content; ?></textarea>
- <p>Edited posts will show a timestamp above the post showing when the last edit was made.</p>
- <p>
- <input type="checkbox" id="delete" name="delete">
- <label for="delete">Delete this post</label>
- </p>
- <input type="submit" value="Apply Changes">
- </form>
+// TODO: Disallow editing/deleting posts if they have been around for a while
+?>
+<form action="manage_post.php" method="post">
+ <h3>Edit post</h3>
+ <input type="hidden" name="id" value="<?= $current->id ?>">
+ <textarea name="post_content" rows="10" cols="50"><?= $current->content; ?></textarea>
+ <p>Edited posts will show a timestamp above the post showing when the last edit was made.</p>
+ <p>
+ <input type="checkbox" id="delete" name="delete">
+ <label for="delete">Delete this post</label>
+ </p>
+ <input type="submit" value="Apply Changes">
+</form>
</body>
</html>
diff --git a/moderate.php b/moderate.php
index afeefa1..3b8d05d 100644
--- a/moderate.php
+++ b/moderate.php
@@ -1,25 +1,22 @@
<?php
-
-include_once 'includes/db_inc.php';
-include_once 'model/User.php';
+include_once './includes/db_inc.php';
+include_once './includes/functions_thread.php';
+include_once './includes/Session.php';
+include_once './includes/model/User.php';
session_start();
-function delete_thread($dbc, $thread_id) {
- $sql = "DELETE FROM threads WHERE thread_id = $thread_id;";
- mysqli_query($dbc, $sql);
-}
-
-if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_SESSION['signed_in'])) {
+if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$thread_id = filter_input(INPUT_POST, 'id', FILTER_SANITIZE_NUMBER_INT);
$delete = filter_input(INPUT_POST, "delete", FILTER_SANITIZE_STRING);
-
- $user = new User();
- $user->get_by_id($_SESSION['user_id'], $dbc);
- if ($user->level > 0) {
+ $user = Session::get()->get_current_user();
+
+ if ($user->level == USER_LEVEL_MODERATOR) {
if (strcasecmp($delete, "on") == 0) {
- delete_thread($dbc, $thread_id);
+ $thread = new Thread();
+ $thread->get_from_database($thread_id, $dbc);
+ delete_thread($thread);
header("Location: /");
exit();
diff --git a/register.php b/register.php
index 03eac6b..050878e 100644
--- a/register.php
+++ b/register.php
@@ -1,27 +1,29 @@
+<?php session_start() ?>
<!DOCTYPE html>
-<html>
+<html lang="en">
<head>
- <title>Register an account - cflip.net forum</title>
- <link rel="stylesheet" href="styles/style.css">
+ <title>Register an account - cflip.net forum</title>
+ <link rel="stylesheet" href="styles/style.css">
</head>
<body>
-<?php include_once 'templates/header.php' ?>
+<?php include './includes/templates/header.php' ?>
<h2>Register an account</h2>
<form action="register.php" method="post">
- <label for="user_name">Username: </label><br>
- <input type="text" name="user_name"><br>
- <label for="user_pass">Password: </label><br>
- <input type="password" name="user_pass"><br>
- <label for="user_pass_check">Re-enter password: </label><br>
- <input type="password" name="user_pass_check"><br>
- <input type="submit" name="submit">
+ <label for="user_name">Username: </label><br>
+ <input type="text" name="user_name"><br>
+ <label for="user_pass">Password: </label><br>
+ <input type="password" name="user_pass"><br>
+ <label for="user_pass_check">Re-enter password: </label><br>
+ <input type="password" name="user_pass_check"><br>
+ <input type="submit" name="submit">
</form>
<br>
<?php
include_once 'includes/db_inc.php';
-function username_exists($dbc, $user_name) {
+function username_exists($dbc, $user_name)
+{
$sql = "SELECT * FROM users WHERE user_name = ?;";
$stmt = mysqli_stmt_init($dbc);
diff --git a/search.php b/search.php
index c09ae53..0732129 100644
--- a/search.php
+++ b/search.php
@@ -1,65 +1,65 @@
-<?php session_start()?>
+<?php session_start() ?>
<!DOCTYPE html>
-<html>
+<html lang="en">
<head>
- <title>Search - cflip.net forum</title>
- <link rel="stylesheet" href="styles/style.css">
+ <title>Search - cflip.net forum</title>
+ <link rel="stylesheet" href="styles/style.css">
</head>
<body>
- <?php include_once 'templates/header.php'; ?>
- <h2>Search cflip.net forum</h2>
- <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="get">
- Type:
- <select name="type">
- <option value="thread">Thread</option>
- <option value="post">Post</option>
- <option value="user">User</option>
- </select>
- Sort By:
- <select name="sort">
- <option value="lr">Last Reply</option>
- <option value="cd">Creation Date</option>
- <option value="rc">Reply Count</option>
- </select>
- With Name:
- <input type="text" name="query">
- <input type="submit" value="Search!">
- </form>
- <hr>
- <?php
- include_once 'includes/db_inc.php';
- include_once 'model/Thread.php';
- include_once 'model/Post.php';
+<?php include_once './includes/templates/header.php'; ?>
+<h2>Search cflip.net forum</h2>
+<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="get">
+ <label for="type">Type:</label>
+ <select id="type" name="type">
+ <option value="thread">Thread</option>
+ <option value="post">Post</option>
+ <option value="user">User</option>
+ </select>
+ <label for="sort">Sort By:</label>
+ <select id="sort" name="sort">
+ <option value="lr">Last Reply</option>
+ <option value="cd">Creation Date</option>
+ <option value="rc">Reply Count</option>
+ </select>
+ <label for="text">With Name:</label>
+ <input id="text" type="text" name="query">
+ <input type="submit" value="Search!">
+</form>
+<hr>
+<?php
+include_once './includes/db_inc.php';
+include_once './includes/model/Thread.php';
+include_once './includes/model/Post.php';
- if (!isset($_GET['type'])) {
- echo 'Specify a type to search.';
- } else {
- switch ($_GET['type']) {
- case 'thread':
- $threads = get_all_threads($dbc);
- foreach ($threads as $thread) {
- echo '<p>';
- echo '<td><b><a href="viewthread.php?id=' . $thread->id . '">' . $thread->subject . '</a></b>';
- echo '<small> created by <b><a href="viewuser.php?id=' . $thread->author->id . '">' . $thread->author->name . '</a></b> on ' . date('M d, Y', strtotime($thread->date_created)) . '</small></td>';
- echo '</p>';
- }
- break;
- case 'post':
- $posts = get_all_posts($dbc);
-
- foreach ($posts as $post) {
- echo '<h3>From <a href="viewthread.php?id=' . $post->thread->id . '">' . $post->thread->subject . '</a></h3>';
- $post->display_content($dbc);
- echo '<hr>';
- }
- break;
- case 'user':
- break;
- default:
- echo '<h3>Could not search: Invalid type!</h3>';
- break;
+if (!isset($_GET['type'])) {
+ echo 'Specify a type to search.';
+} else {
+ switch ($_GET['type']) {
+ case 'thread':
+ $threads = get_all_threads($dbc);
+ foreach ($threads as $thread) {
+ echo '<p>';
+ echo '<td><b><a href="viewthread.php?id=' . $thread->id . '">' . $thread->subject . '</a></b>';
+ echo '<small> created by <b><a href="viewuser.php?id=' . $thread->author->id . '">' . $thread->author->name . '</a></b> on ' . date('M d, Y', strtotime($thread->date_created)) . '</small></td>';
+ echo '</p>';
}
- }
- ?>
+ break;
+ case 'post':
+ $posts = get_all_posts($dbc);
+
+ foreach ($posts as $post) {
+ echo '<h3>From <a href="viewthread.php?id=' . $post->thread->id . '">' . $post->thread->subject . '</a></h3>';
+ $post->display_content($dbc);
+ echo '<hr>';
+ }
+ break;
+ case 'user':
+ break;
+ default:
+ echo '<h3>Could not search: Invalid type!</h3>';
+ break;
+ }
+}
+?>
</body>
</html>
diff --git a/signin.php b/signin.php
index cf41645..9017d37 100644
--- a/signin.php
+++ b/signin.php
@@ -1,26 +1,27 @@
-<?php session_start()?>
+<?php session_start() ?>
<!DOCTYPE html>
-<html>
+<html lang="en">
<head>
- <title>Sign in - cflip.net forum</title>
- <link rel="stylesheet" href="styles/style.css">
+ <title>Sign in - cflip.net forum</title>
+ <link rel="stylesheet" href="styles/style.css">
</head>
<body>
- <?php include_once 'templates/header.php' ?>
- <h2>Sign in</h2>
- <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
- <label for="user_name">Username: </label><br>
- <input type="text" name="user_name"><br>
- <label for="user_pass">Password: </label><br>
- <input type="password" name="user_pass"><br>
- <input type="submit" name="submit">
- </form>
+<?php include_once './includes/templates/header.php' ?>
+<h2>Sign in</h2>
+<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
+ <label for="user_name">Username: </label><br>
+ <input type="text" name="user_name"><br>
+ <label for="user_pass">Password: </label><br>
+ <input type="password" name="user_pass"><br>
+ <input type="submit" name="submit">
+</form>
<?php
include_once 'includes/db_inc.php';
-function validate($data) {
+function validate($data)
+{
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
@@ -29,7 +30,7 @@ function validate($data) {
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$errors = array();
-
+
if (empty($_POST['user_name'])) {
$errors[] = 'Please provide a username.';
} else {
diff --git a/viewthread.php b/viewthread.php
index ae08090..cc2d221 100644
--- a/viewthread.php
+++ b/viewthread.php
@@ -34,11 +34,10 @@ in <b><?= $current->category->name; ?></b>
<?php
include_once('includes/model/User.php');
-if (isset($_SESSION['signed_in'])) {
- $user = new User();
- $user->get_by_id($_SESSION['user_id'], $dbc);
+if (Session::get()->is_signed_in()) {
+ $user = Session::get()->get_current_user();
- if ($user->level > 0) {
+ if ($user->level == USER_LEVEL_MODERATOR) {
echo '
<form action="moderate.php" method="post">
<p>
@@ -75,6 +74,8 @@ foreach ($posts as $post) {
</body>
</html>
<?php
+include_once 'includes/functions_post.php';
+
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (!isset($_SESSION['signed_in'])) {
echo 'You must be <a href="signin.php">signed in</a> to reply to this thread.';
@@ -87,7 +88,7 @@ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
if (empty($post_content) or !$post_content) {
echo 'Thread subject cannot be empty';
} else {
- insert_post($dbc, $post_content, $current->id, $user_id, $current->category->id);
+ create_post($post_content, $current->id, $current->category->id);
}
}
?>
diff --git a/viewuser.php b/viewuser.php
index 3a33de0..155b814 100644
--- a/viewuser.php
+++ b/viewuser.php
@@ -1,6 +1,6 @@
<?php
include_once 'includes/db_inc.php';
-include_once 'model/User.php';
+include_once 'includes/model/User.php';
session_start();
@@ -8,18 +8,18 @@ $current = new User();
if (!isset($_GET['id'])) {
} else {
- $current->get_by_id($_GET['id'], $dbc);
+ $current->get_by_id($_GET['id']);
}
?>
<!DOCTYPE html>
-<html>
+<html lang="en">
<head>
- <title><?= $current->name; ?>'s Profile - cflip.net forum</title>
- <link rel="stylesheet" href="styles/style.css">
+ <title><?= $current->name; ?>'s Profile - cflip.net forum</title>
+ <link rel="stylesheet" href="styles/style.css">
</head>
<body>
- <?php include_once "templates/header.php" ?>
- <h1><?= $current->name; ?></h1>
- member since <?= date('M d, Y', strtotime($current->date)); ?>
+<?php include_once "includes/templates/header.php" ?>
+<h1><?= $current->name; ?></h1>
+member since <?= date('M d, Y', strtotime($current->date)); ?>
</body>
</html>