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 --- includes/model/Thread.php | 272 ++++++++++++++++++++++++---------------------- 1 file changed, 144 insertions(+), 128 deletions(-) mode change 100644 => 100755 includes/model/Thread.php (limited to 'includes/model/Thread.php') 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']); + } +} -- cgit v1.2.3