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']); } }