From c9732788143886b611cb2fecfb53daf3d8add48f Mon Sep 17 00:00:00 2001 From: cflip <36554078+cflip@users.noreply.github.com> Date: Wed, 24 Mar 2021 18:29:41 -0600 Subject: Show latest thread/post on pages --- category.php | 22 ++++++++++++++++++++-- index.php | 5 ++++- model/Category.php | 22 ++++++++++++++++++++++ model/Thread.php | 22 ++++++++++++++++++++++ 4 files changed, 68 insertions(+), 3 deletions(-) diff --git a/category.php b/category.php index a71029e..ad4faa6 100644 --- a/category.php +++ b/category.php @@ -28,13 +28,31 @@ if (!isset($_GET['id']) || !filter_var($_GET['id'], FILTER_VALIDATE_INT)) { Latest Post date_lastpost); + $db = strtotime($b->date_lastpost); + + if ($da == $db) return 0; + + return ($da > $db) ? -1 : 1; + } + $threads = $current->get_threads($dbc); + usort($threads, "cmp"); foreach ($threads as $thread) { + $latest_post = $thread->get_latest_post($dbc); + echo ''; echo '' . $thread->subject . '
'; - echo 'by ' . $thread->author->name . ' on ' . date('M d, Y', strtotime($thread->date_created)) . ''; - echo '' . date('M d, Y', strtotime($thread->date_lastpost)) . ''; + echo 'by ' . $thread->author->name . ' on ' . date('M d, Y', strtotime($thread->date_created)) . ''; + + if (!is_null($latest_post)) { + echo 'by ' . $latest_post->author->name . '
on ' . $latest_post->date . ''; + } else { + echo 'No posts yet!'; + } + echo ''; } ?> diff --git a/index.php b/index.php index 6c1c0c9..b4b00a1 100644 --- a/index.php +++ b/index.php @@ -38,6 +38,8 @@ usort($categories, "cmp"); foreach ($categories as $category) { + $latest_thread = $category->get_latest_thread($dbc); + echo ''; echo ''; echo '' . $category->name . ''; @@ -45,7 +47,8 @@ echo ''; echo '' . $category->thread_count . ''; echo '' . $category->post_count . ''; - echo 'my supercool thread
by cflip, 3 days ago'; + echo '' . $latest_thread->subject . '
'; + echo 'by ' . $latest_thread->author->name . ', ' . $latest_thread->date_created . ''; echo ''; } ?> diff --git a/model/Category.php b/model/Category.php index ffd903c..4e57f46 100644 --- a/model/Category.php +++ b/model/Category.php @@ -54,6 +54,28 @@ class Category { mysqli_free_result($result); return $threads; } + + function get_latest_thread($dbc) { + $sql = "SELECT thread_id FROM threads WHERE thread_category = " . $this->id . " ORDER BY thread_date_lastpost DESC LIMIT 1"; + $result = mysqli_query($dbc, $sql); + + if (!$result) { + echo 'Could not get thread from category: ' . mysqli_error($dbc); + } + + $thread = null; + + if (mysqli_num_rows($result) == 0) { + } else { + while ($row = mysqli_fetch_assoc($result)) { + $thread = new Thread(); + $thread->get_from_database($row['thread_id'], $dbc); + } + } + + mysqli_free_result($result); + return $thread; + } } function get_all_categories($dbc) { diff --git a/model/Thread.php b/model/Thread.php index ade24b5..20c6c0a 100644 --- a/model/Thread.php +++ b/model/Thread.php @@ -62,6 +62,28 @@ class Thread { 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 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) { -- cgit v1.2.3