prepare('INSERT INTO `fmf_posts` (`cat_id`, `topic_id`, `user_id`, `post_type`, `post_text`) VALUES (:category, :topic, :user, :type, :text)'); $createPost->bindValue('category', $category); $createPost->bindValue('topic', $topic); $createPost->bindValue('user', $user); $createPost->bindValue('type', $type); $createPost->bindValue('text', $data); $createPost->execute(); return (int)$pdo->lastInsertId(); } function posts_in_topic(int $topic): array { global $pdo; if($topic < 1) return []; $getTopics = $pdo->prepare('SELECT *, UNIX_TIMESTAMP(`post_created`) AS `post_created`, UNIX_TIMESTAMP(`post_edited`) AS `post_edited`, UNIX_TIMESTAMP(`post_deleted`) AS `post_deleted` FROM `fmf_posts` WHERE `topic_id` = :topic ORDER BY `post_created`'); $getTopics->bindValue('topic', $topic); $topics = $getTopics->execute() ? $getTopics->fetchAll(PDO::FETCH_ASSOC) : false; return $topics ? $topics : []; } function post_info(?int $post): array { global $pdo; static $posts = []; if($post < 1) return []; if(!empty($posts[$post])) return $posts[$post]; $getPost = $pdo->prepare('SELECT *, UNIX_TIMESTAMP(`post_created`) AS `post_created`, UNIX_TIMESTAMP(`post_edited`) AS `post_edited`, UNIX_TIMESTAMP(`post_deleted`) AS `post_deleted` FROM `fmf_posts` WHERE `post_id` = :post'); $getPost->bindValue('post', $post); $postInfo = $getPost->execute() ? $getPost->fetch(PDO::FETCH_ASSOC) : false; return $posts[$post] = ($postInfo ? $postInfo : []); } function post_delete(int $post, bool $hard = false): void { global $pdo; if($post < 1) return; $delete = $pdo->prepare($hard ? 'DELETE FROM `fmf_posts` WHERE `post_id` = :post' : 'UPDATE `fmf_posts` SET `post_deleted` = NOW() WHERE `post_id` = :post'); $delete->bindValue('post', $post); $delete->execute(); } function post_restore(int $post): void { global $pdo; if($post < 1) return; $restore = $pdo->prepare('UPDATE `fmf_posts` SET `post_deleted` = NULL WHERE `post_id` = :post'); $restore->bindValue('post', $post); $restore->execute(); } function post_anonymize(int $post): void { global $pdo; if($post < 1) return; $restore = $pdo->prepare('UPDATE `fmf_posts` SET `user_id` = NULL WHERE `post_id` = :post'); $restore->bindValue('post', $post); $restore->execute(); } function post_update(int $post, string $text): void { global $pdo; if($post < 1) return; $restore = $pdo->prepare('UPDATE `fmf_posts` SET `post_text` = :text, `post_edited` = NOW() WHERE `post_id` = :post'); $restore->bindValue('text', $text); $restore->bindValue('post', $post); $restore->execute(); }