diff options
author | cflip <36554078+cflip@users.noreply.github.com> | 2021-06-23 15:19:21 -0600 |
---|---|---|
committer | cflip <36554078+cflip@users.noreply.github.com> | 2021-06-23 15:19:21 -0600 |
commit | fd0c3a283153d6f2d759e5e14888e40e65dc61b7 (patch) | |
tree | 431fb27b6a87efedbc33f728d08a99c6c4c4adb4 /includes/model/Thread.php | |
parent | 4b01ac4021c26c05141f0fbeae20a1c50adbaabf (diff) |
Add latest threads to index page
Diffstat (limited to 'includes/model/Thread.php')
-rwxr-xr-x[-rw-r--r--] | includes/model/Thread.php | 272 |
1 files changed, 144 insertions, 128 deletions
diff --git a/includes/model/Thread.php b/includes/model/Thread.php index 95bd3d8..e02b4b2 100644..100755 --- a/includes/model/Thread.php +++ b/includes/model/Thread.php @@ -1,128 +1,144 @@ -<?php -include_once './includes/Database.php'; -include_once './includes/Session.php'; -include_once 'Category.php'; -include_once 'User.php'; -include_once 'Post.php'; - -class Thread -{ - public $id; - public $subject; - public $date_created = 0; - public $date_lastpost = 0; - public $category; - public $author; - - private $has_value = false; - - function __construct($id) - { - $sql = "SELECT thread_subject, thread_date_created, thread_date_lastpost, thread_category, thread_author FROM threads WHERE thread_id = ?;"; - $result = Database::get()->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']); - } -} +<?php
+include_once './includes/Database.php';
+include_once './includes/Session.php';
+include_once 'Category.php';
+include_once 'User.php';
+include_once 'Post.php';
+
+class Thread
+{
+ public $id;
+ public $subject;
+ public $date_created = 0;
+ public $date_lastpost = 0;
+ public $category;
+ public $author;
+
+ private $has_value = false;
+
+ function __construct($id)
+ {
+ $sql = "SELECT thread_subject, thread_date_created, thread_date_lastpost, thread_category, thread_author FROM threads WHERE thread_id = ?;";
+ $result = Database::get()->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']);
+ }
+}
|