summaryrefslogtreecommitdiff
path: root/includes/model/Thread.php
diff options
context:
space:
mode:
Diffstat (limited to 'includes/model/Thread.php')
-rw-r--r--includes/model/Thread.php111
1 files changed, 111 insertions, 0 deletions
diff --git a/includes/model/Thread.php b/includes/model/Thread.php
new file mode 100644
index 0000000..a9dc690
--- /dev/null
+++ b/includes/model/Thread.php
@@ -0,0 +1,111 @@
+<?php
+
+include_once 'Category.php';
+include_once 'User.php';
+include_once 'Post.php';
+
+class Thread {
+ public $id = 0;
+ public $subject = 'Unknown thread';
+ public $date_created = 0;
+ public $date_lastpost = 0;
+ public $category;
+ public $author;
+
+ function get_from_database($id, $dbc) {
+ $sql = "SELECT thread_subject, thread_date_created, thread_date_lastpost, thread_category, thread_author FROM threads WHERE thread_id = " . mysqli_real_escape_string($dbc, $id);
+ $result = mysqli_query($dbc, $sql);
+
+ if (!$result) {
+ die('Error trying to display thread page: ' . mysqli_error($dbc));
+ }
+
+ if (mysqli_num_rows($result) == 0) {
+ return 0;
+ } else {
+ while ($row = mysqli_fetch_assoc($result)) {
+ $this->id = $id;
+ $this->subject = $row['thread_subject'];
+ $this->date_created = $row['thread_date_created'];
+ $this->date_lastpost = $row['thread_date_lastpost'];
+
+ $this->category = new Category();
+ $this->category->get_from_database($row['thread_category'], $dbc);
+
+ $this->author = new User();
+ $this->author->get_by_id($row['thread_author'], $dbc);
+ }
+ }
+
+ mysqli_free_result($result);
+ return 1;
+ }
+
+ function get_posts($dbc) {
+ $sql = "SELECT post_id FROM posts WHERE post_thread = " . $this->id;
+ $result = mysqli_query($dbc, $sql);
+
+ if (!$result) {
+ echo 'Could not get posts from thread: ' . mysqli_error($dbc);
+ }
+
+ $posts = array();
+
+ if (mysqli_num_rows($result) == 0) {
+ } else {
+ while ($row = mysqli_fetch_assoc($result)) {
+ $post = new Post();
+ $post->get_from_database($row['post_id'], $dbc);
+ array_push($posts, $post);
+ }
+ }
+
+ mysqli_free_result($result);
+ return $posts;
+ }
+
+ function get_latest_post($dbc) {
+ $sql = "SELECT post_id FROM posts WHERE post_thread = " . $this->id . " ORDER BY post_date_created DESC LIMIT 1";
+ $result = mysqli_query($dbc, $sql);
+
+ if (!$result) {
+ echo 'Could not get post from category: ' . mysqli_error($dbc);
+ }
+
+ $post = null;
+
+ if (mysqli_num_rows($result) == 0) {
+ } else {
+ while ($row = mysqli_fetch_assoc($result)) {
+ $post = new Post();
+ $post->get_from_database($row['post_id'], $dbc);
+ }
+ }
+
+ mysqli_free_result($result);
+ return $post;
+ }
+}
+
+function get_all_threads($dbc) {
+ $sql = "SELECT thread_id FROM threads";
+ $result = mysqli_query($dbc, $sql);
+
+ if (!$result) {
+ echo 'Failed to get threads: ' . mysqli_error($dbc);
+ }
+
+ $threads = array();
+
+ if (mysqli_num_rows($result) == 0) {
+ } else {
+ while ($row = mysqli_fetch_assoc($result)) {
+ $thread = new Thread();
+ $thread->get_from_database($row['thread_id'], $dbc);
+ array_push($threads, $thread);
+ }
+ }
+
+ mysqli_free_result($result);
+ return $threads;
+}