query($sql, "i", $id); $reply = $result[0]; if (empty($reply)) { return '
This post has been deleted'; } return '
Quote from ' . $reply['user_name'] . ''; } function format_post_content(string $post_content) { $post_content = preg_replace_callback('/>#\d+/', function ($matches) { $result = ""; foreach ($matches as $match) { $id = (int) filter_var($match, FILTER_SANITIZE_NUMBER_INT); $result .= create_quote($id); } return $result; }, $post_content); $result = $post_content; // Replace newline characters with HTML
' . $reply['post_content'] . '
#' . $this->id . ''; $result .= ' Posted by ' . $author->name . ''; $result .= ' on ' . date('m/d/Y g:ia', strtotime($this->date_created)); if (Session::get()->is_signed_in() && Session::get()->get_current_user()->level == USER_LEVEL_MODERATOR) { $result .= '[Options]'; } $result .= '
'; // Append the formatted post content $result .= '' . format_post_content($this->content) . ''; return $result; } function set_content(string $post_content) { // User must be signed in if (!Session::get()->is_signed_in()) { trigger_error('You must be signed in to edit this post!'); return; } // User must have permission to edit the post $current_user = Session::get()->get_current_user(); if ($current_user->id != $this->author_id) { trigger_error("You don't have sufficient permissions to edit this post."); return; } // Set the post content and the post edit date $sql = "UPDATE posts SET post_content = ? WHERE post_id = ?;"; Database::get()->query($sql, "si", $post_content, $this->id); } function delete() { // User must be signed in if (!Session::get()->is_signed_in()) { trigger_error('You must be signed in to delete a post!'); return; } // User must have permission to delete the post if (Session::get()->get_current_user()->level != USER_LEVEL_MODERATOR) { trigger_error("You don't have sufficient permissions to delete this post."); return; } // Delete the post from the database Database::get()->query("DELETE FROM posts WHERE post_id = ?", "i", $this->id); // Decrement the post count of the category Database::get()->query("UPDATE categories SET `category_post_count` = `category_post_count` - '1' WHERE category_id = ?", "i", $this->get_parent_thread()->category_id); } public static function create($post_content, $post_thread, $post_category) { // User must be signed in if (!Session::get()->is_signed_in()) { trigger_error('You must be signed in to create a post'); return; } $user = Session::get()->get_current_user(); // Insert the post into the database $sql = "INSERT INTO posts(post_content, post_date_created, post_thread, post_author) VALUES (?, CONVERT_TZ(NOW(), 'SYSTEM', '+00:00'), ?, ?);"; Database::get()->query($sql, "sii", $post_content, $post_thread, $user->id); // Increment the category's post count $sql = "UPDATE categories SET `category_post_count` = `category_post_count` + '1' WHERE category_id = ?;"; Database::get()->query($sql, "i", $post_category); // Set the last post date of the parent thread $sql = "UPDATE threads SET thread_last_post_date = CONVERT_TZ(NOW(), 'SYSTEM', '+00:00') WHERE thread_id = ?;"; Database::get()->query($sql, "i", $post_thread); } public static function get_all_posts(): array { $sql = "SELECT post_id FROM posts"; $result = Database::get()->query($sql); $posts = array(); foreach ($result as $row) { $post = new Post($row['post_id']); array_push($posts, $post); } return $posts; } }