From 7ef208fc1ae5a24d7b3cd2e22e969285fbf7262a Mon Sep 17 00:00:00 2001 From: cflip <36554078+cflip@users.noreply.github.com> Date: Sun, 21 Mar 2021 17:29:58 -0600 Subject: Add additional classes and functions --- model/Category.php | 48 ++++++++++++++++++++++++++++++-- model/Post.php | 82 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ model/Thread.php | 55 +++++++++++++++++++++++++++++++++++- model/User.php | 54 +++++++++++++++++++++++++++++++++++ 4 files changed, 236 insertions(+), 3 deletions(-) create mode 100644 model/Post.php create mode 100644 model/User.php (limited to 'model') diff --git a/model/Category.php b/model/Category.php index d98b08b..ffd903c 100644 --- a/model/Category.php +++ b/model/Category.php @@ -1,5 +1,7 @@ id; + $result = mysqli_query($dbc, $sql); + + if (!$result) { + echo 'Could not get threads from category: ' . 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; + } +} + +function get_all_categories($dbc) { + $sql = "SELECT cat_id FROM categories"; + $result = mysqli_query($dbc, $sql); + + if (!$result) { + echo 'Failed to get categories: ' . mysqli_error($dbc); } + + $categories = array(); + + if (mysqli_num_rows($result) == 0) { + } else { + while ($row = mysqli_fetch_assoc($result)) { + $category = new Category(); + $category->get_from_database($row['cat_id'], $dbc); + array_push($categories, $category); + } + } + + mysqli_free_result($result); + return $categories; } \ No newline at end of file diff --git a/model/Post.php b/model/Post.php new file mode 100644 index 0000000..bcaff29 --- /dev/null +++ b/model/Post.php @@ -0,0 +1,82 @@ +id = $id; + $this->content = $row['post_content']; + $this->date = $row['post_date']; + + $this->thread = new Thread(); + $this->thread->get_from_database($row['post_thread'], $dbc); + + $this->author = new User(); + $this->author->get_by_id($row['post_author'], $dbc); + } + } + + mysqli_free_result($result); + } + + function display_content() { + echo '
#' . $this->id . ' Posted by ' . $this->author->name . ' on ' . date('m/d/Y g:ia', strtotime($this->date)) . '
'; + + $post_content = $this->content; + + // $post_content = preg_replace_callback('/>#\d+/', function($matches) use($thread_id, $dbc) { + // return add_quote($dbc, $thread_id, $matches); + // }, $post_content); + + // Replace YouTube URLs with embedded YouTube videos. + $post_content = preg_replace( + "/\s*[a-zA-Z\/\/:\.]*youtu(be.com\/watch\?v=|.be\/)([a-zA-Z0-9\-_]+)([a-zA-Z0-9\/\*\-\_\?\&\;\%\=\.]*)/i", + '
', $post_content); + // Replace Image URLs with embedded images. + $post_content = preg_replace('@\b(http(s)?://)([^\s]*?(?:\.[a-z\d?=/_-]+)+(?:\.jpg|\.png|\.gif))(?![^<]*?(?:|/?>))@i', 'http$2://$3', $post_content); + // Replace other URLs with links. + $post_content = preg_replace('@\b(http(s)?://)([^\s]*?(?:\.[a-z\d?=/_-]+)+)(?![^<]*?(?:|/?>))@i', '$0', $post_content); + + echo $post_content; + } +} + +function get_all_posts($dbc) { + $sql = "SELECT post_id FROM posts"; + $result = mysqli_query($dbc, $sql); + + if (!$result) { + echo 'Failed to get posts: ' . 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; +} \ No newline at end of file diff --git a/model/Thread.php b/model/Thread.php index 78d2614..ade24b5 100644 --- a/model/Thread.php +++ b/model/Thread.php @@ -1,6 +1,8 @@ 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); + } + + 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_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; } \ No newline at end of file diff --git a/model/User.php b/model/User.php new file mode 100644 index 0000000..89a14a5 --- /dev/null +++ b/model/User.php @@ -0,0 +1,54 @@ +id = $row['user_id']; + $this->name = $name; + $this->date = $row['user_date']; + } + } + + mysqli_free_result($result); + mysqli_stmt_close($stmt); + } + + function get_by_id($id, $dbc) { + $sql = "SELECT user_name, user_date FROM users WHERE user_id = " . mysqli_real_escape_string($dbc, $id); + $result = mysqli_query($dbc, $sql); + + if (!$result) { + echo 'Failed to get user: ' . mysqli_error($dbc); + } + + if (mysqli_num_rows($result) == 0) { + } else { + while ($row = mysqli_fetch_assoc($result)) { + $this->id = $id; + $this->name = $row['user_name']; + $this->date = $row['user_date']; + } + } + + mysqli_free_result($result); + } + +} \ No newline at end of file -- cgit v1.2.3