From fd0c3a283153d6f2d759e5e14888e40e65dc61b7 Mon Sep 17 00:00:00 2001 From: cflip <36554078+cflip@users.noreply.github.com> Date: Wed, 23 Jun 2021 15:19:21 -0600 Subject: Add latest threads to index page --- img/favicon.png | Bin 0 -> 612 bytes includes/model/Thread.php | 272 +++++++++++++++++++++++--------------------- includes/templates/head.php | 4 + index.php | 115 ++++++++++--------- 4 files changed, 208 insertions(+), 183 deletions(-) create mode 100755 img/favicon.png mode change 100644 => 100755 includes/model/Thread.php create mode 100755 includes/templates/head.php mode change 100644 => 100755 index.php diff --git a/img/favicon.png b/img/favicon.png new file mode 100755 index 0000000..db45531 Binary files /dev/null and b/img/favicon.png differ diff --git a/includes/model/Thread.php b/includes/model/Thread.php old mode 100644 new mode 100755 index 95bd3d8..e02b4b2 --- a/includes/model/Thread.php +++ b/includes/model/Thread.php @@ -1,128 +1,144 @@ -query($sql, "i", $id); - - if (empty($result)) { - return; - } - - $this->id = $id; - $this->subject = $result[0]['thread_subject']; - $this->date_created = $result[0]['thread_date_created']; - $this->date_lastpost = $result[0]['thread_date_lastpost']; - $this->category = new Category($result[0]['thread_category']); - - $this->author = new User(); - $this->author->get_by_id($result[0]['thread_author']); - - $this->has_value = true; - } - - public static function create($subject, $category): int - { - 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; - } - - public static function delete($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; - } - - // 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); - } - - public function has_value() - { - return $this->has_value; - } - - public static function get_all(): array - { - $sql = "SELECT thread_id FROM threads"; - $result = Database::get()->query($sql); - - $threads = array(); - - foreach ($result as $row) { - $thread = new Thread($row['thread_id']); - if ($thread->has_value()) - array_push($threads, $thread); - } - - return $threads; - } - - public function get_posts(): array - { - $sql = "SELECT post_id FROM posts WHERE post_thread = ?"; - $result = Database::get()->query($sql, "i", $this->id); - - $posts = array(); - - foreach ($result as $row) { - $post = new Post($row['post_id']); - if ($post->has_value()) - array_push($posts, $post); - } - - return $posts; - } - - public function get_latest_post(): Post - { - $sql = "SELECT post_id FROM posts WHERE post_thread = ? ORDER BY post_date_created DESC LIMIT 1"; - $result = Database::get()->query($sql, "i", $this->id); - return new Post($result[0]['post_id']); - } -} +query($sql, "i", $id); + + if (empty($result)) { + return; + } + + $this->id = $id; + $this->subject = $result[0]['thread_subject']; + $this->date_created = $result[0]['thread_date_created']; + $this->date_lastpost = $result[0]['thread_date_lastpost']; + $this->category = new Category($result[0]['thread_category']); + + $this->author = new User(); + $this->author->get_by_id($result[0]['thread_author']); + + $this->has_value = true; + } + + public static function create($subject, $category): int + { + 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; + } + + public static function delete($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; + } + + // 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); + } + + public function has_value() + { + return $this->has_value; + } + + public static function get_all(): array + { + $sql = "SELECT thread_id FROM threads"; + $result = Database::get()->query($sql); + + $threads = array(); + + foreach ($result as $row) { + $thread = new Thread($row['thread_id']); + if ($thread->has_value()) + array_push($threads, $thread); + } + + return $threads; + } + + public static function get_latest(): array + { + $sql = "SELECT thread_id FROM threads ORDER BY thread_date_lastpost DESC LIMIT 10"; + $result = Database::get()->query($sql); + + $threads = array(); + + foreach ($result as $row) { + $thread = new Thread($row['thread_id']); + if ($thread->has_value()) + array_push($threads, $thread); + } + + return $threads; + } + + public function get_posts(): array + { + $sql = "SELECT post_id FROM posts WHERE post_thread = ?"; + $result = Database::get()->query($sql, "i", $this->id); + + $posts = array(); + + foreach ($result as $row) { + $post = new Post($row['post_id']); + if ($post->has_value()) + array_push($posts, $post); + } + + return $posts; + } + + public function get_latest_post(): Post + { + $sql = "SELECT post_id FROM posts WHERE post_thread = ? ORDER BY post_date_created DESC LIMIT 1"; + $result = Database::get()->query($sql, "i", $this->id); + return new Post($result[0]['post_id']); + } +} diff --git a/includes/templates/head.php b/includes/templates/head.php new file mode 100755 index 0000000..d7c5758 --- /dev/null +++ b/includes/templates/head.php @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/index.php b/index.php old mode 100644 new mode 100755 index ac2dd3e..3b3f21b --- a/index.php +++ b/index.php @@ -1,55 +1,60 @@ - - - - - cflip.net forum - - - - - - -

Welcome to the cflip.net forum!

-

- This is the beta test of the forum website, so there are lots of features missing. Since there are no moderation - features built into the website, - for the most part I don't care that much about what is posted here. Some links and buttons may not have any - functionality either! -

-

- If you notice a problem or have an idea for a feature that is missing, reply to this thread! -

-

Categories

- - - - - - - - - - - - -get_latest_thread(); if ($latest_thread->has_value()): ?> - - - - - - -
CategoryThreadsPostsLatest Thread
- name ?> -
description ?> -
thread_count ?>post_count ?> - subject ?> -
- by author->name ?>, date_created ?> -
No threads yet!
- - + + + + + cflip.net forum + + + + +

Categories

+ + + + + + + + +get_latest_thread(); if ($latest_thread->has_value()): ?> + + + + + + +
CategoryLatest Thread
+ name ?> +
description ?> +
+ subject ?> +
+ by author->name ?>, date_created ?> +
No threads yet!
+

Latest Threads

+ + + + + + + + + + +get_latest_post(); if ($latest_post->has_value()): ?> + + + + + + +
ThreadCategoryLatest Post
+ subject ?> + on date_created)); ?> + category->name ?> + by author->name ?> + on date_created ?> + No posts yet!
+ + -- cgit v1.2.3