function prune($forum_id, $prune_date, $prune_all = false) { global $db, $lang; $prune_all = $prune_all ? '' : 'AND t.topic_vote = 0 AND t.topic_type <> ' . POST_ANNOUNCE; // // Those without polls and announcements ... unless told otherwise! // $sql = "SELECT t.topic_id \n\t\tFROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t\n\t\tWHERE t.forum_id = {$forum_id}\n\t\t\t{$prune_all} \n\t\t\tAND ( p.post_id = t.topic_last_post_id \n\t\t\t\tOR t.topic_last_post_id = 0 )"; if ($prune_date != '') { $sql .= " AND p.post_time < {$prune_date}"; } if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not obtain lists of topics to prune', '', __LINE__, __FILE__, $sql); } $sql_topics = ''; while ($row = $db->sql_fetchrow($result)) { $sql_topics .= ($sql_topics != '' ? ', ' : '') . $row['topic_id']; } $db->sql_freeresult($result); if ($sql_topics != '') { $sql = "SELECT post_id\n\t\t\tFROM " . POSTS_TABLE . " \n\t\t\tWHERE forum_id = {$forum_id} \n\t\t\t\tAND topic_id IN ({$sql_topics})"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not obtain list of posts to prune', '', __LINE__, __FILE__, $sql); } $sql_post = ''; while ($row = $db->sql_fetchrow($result)) { $sql_post .= ($sql_post != '' ? ', ' : '') . $row['post_id']; } $db->sql_freeresult($result); if ($sql_post != '') { $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . " \n\t\t\t\tWHERE topic_id IN ({$sql_topics})"; if (!$db->sql_query($sql, BEGIN_TRANSACTION)) { message_die(GENERAL_ERROR, 'Could not delete watched topics during prune', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . TOPICS_TABLE . " \n\t\t\t\tWHERE topic_id IN ({$sql_topics})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete topics during prune', '', __LINE__, __FILE__, $sql); } $pruned_topics = $db->sql_affectedrows(); $sql = "DELETE FROM " . POSTS_TABLE . " \n\t\t\t\tWHERE post_id IN ({$sql_post})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete post_text during prune', '', __LINE__, __FILE__, $sql); } $pruned_posts = $db->sql_affectedrows(); $sql = "DELETE FROM " . POSTS_TEXT_TABLE . " \n\t\t\t\tWHERE post_id IN ({$sql_post})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete post during prune', '', __LINE__, __FILE__, $sql); } remove_search_post($sql_post); prune_attachments($sql_post); return array('topics' => $pruned_topics, 'posts' => $pruned_posts); } } return array('topics' => 0, 'posts' => 0); }
function prune($forum_id, $prune_date, $prune_all = false) { global $db, $lang; $prune_all = $prune_all ? '' : 'AND t.topic_vote = 0 AND t.topic_type <> ' . POST_ANNOUNCE; // // Those without polls and announcements ... unless told otherwise! // $sql = "SELECT t.topic_id FROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t\n\t\tWHERE t.forum_id = {$forum_id}\n\t\t\t{$prune_all}\n\t\t\tAND ( p.post_id = t.topic_last_post_id OR t.topic_last_post_id = 0 )"; if ($prune_date != '') { $sql .= " AND p.post_time < {$prune_date}"; } $result = $db->sql_query($sql); $sql_topics = ''; while ($row = $db->sql_fetchrow($result)) { $sql_topics .= ($sql_topics != '' ? ', ' : '') . $row['topic_id']; } $db->sql_freeresult($result); if ($sql_topics != '') { $sql = "SELECT post_id FROM " . POSTS_TABLE . "\n\t\t\tWHERE forum_id = {$forum_id} AND topic_id IN ({$sql_topics})"; $result = $db->sql_query($sql); $sql_post = ''; while ($row = $db->sql_fetchrow($result)) { $sql_post .= ($sql_post != '' ? ', ' : '') . $row['post_id']; } $db->sql_freeresult($result); if ($sql_post != '') { $db->sql_query("DELETE FROM " . TOPICS_WATCH_TABLE . " WHERE topic_id IN ({$sql_topics})"); $db->sql_query("DELETE FROM " . TOPICS_TABLE . " WHERE topic_id IN ({$sql_topics})"); $pruned_topics = $db->sql_affectedrows(); $db->sql_query("DELETE FROM " . POSTS_TABLE . " WHERE post_id IN ({$sql_post})"); $pruned_posts = $db->sql_affectedrows(); $db->sql_query("DELETE FROM " . POSTS_TEXT_TABLE . " WHERE post_id IN ({$sql_post})"); remove_search_post($sql_post); // if (defined('BBAttach_mod')) { delete_attachment($sql_post); return array('topics' => $pruned_topics, 'posts' => $pruned_posts); } } return array('topics' => 0, 'posts' => 0); }
function delete_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id) { global $board_config, $lang, $db, $phpbb_root_path, $phpEx; global $userdata, $user_ip; if ($mode != 'poll_delete') { include $phpbb_root_path . 'includes/functions_search.' . $phpEx; $sql = "DELETE FROM " . POSTS_TABLE . " \r\n\t\t\tWHERE post_id = {$post_id}"; if (!$db->sql_query($sql)) { $db->clear_cache('posts_'); message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . POSTS_TEXT_TABLE . " \r\n\t\t\tWHERE post_id = {$post_id}"; if (!$db->sql_query($sql)) { $db->clear_cache('posts_'); message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } if ($post_data['last_post']) { if ($post_data['first_post']) { $forum_update_sql .= ', forum_topics = forum_topics - 1'; $sql = "DELETE FROM " . TOPICS_TABLE . " \r\n\t\t\t\t\tWHERE topic_id = {$topic_id} \r\n\t\t\t\t\t\tOR topic_moved_id = {$topic_id}"; if (!$db->sql_query($sql)) { $db->clear_cache('posts_'); message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "\r\n\t\t\t\t\tWHERE topic_id = {$topic_id}"; if (!$db->sql_query($sql)) { $db->clear_cache('posts_'); message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } } } remove_search_post($post_id); } if ($mode == 'poll_delete' || $mode == 'delete' && $post_data['first_post'] && $post_data['last_post'] && $post_data['has_poll'] && $post_data['edit_poll']) { $sql = "DELETE FROM " . VOTE_DESC_TABLE . " \r\n\t\t\tWHERE topic_id = {$topic_id}"; if (!$db->sql_query($sql)) { $db->clear_cache('posts_'); message_die(GENERAL_ERROR, 'Error in deleting poll', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . VOTE_RESULTS_TABLE . " \r\n\t\t\tWHERE vote_id = {$poll_id}"; if (!$db->sql_query($sql)) { $db->clear_cache('posts_'); message_die(GENERAL_ERROR, 'Error in deleting poll', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . VOTE_USERS_TABLE . " \r\n\t\t\tWHERE vote_id = {$poll_id}"; if (!$db->sql_query($sql)) { $db->clear_cache('posts_'); message_die(GENERAL_ERROR, 'Error in deleting poll', '', __LINE__, __FILE__, $sql); } } if ($mode == 'delete' && $post_data['first_post'] && $post_data['last_post']) { $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewforum.{$phpEx}?" . POST_FORUM_URL . '=' . $forum_id) . '">'; $message = $lang['Deleted']; } else { $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.{$phpEx}?" . POST_TOPIC_URL . '=' . $topic_id) . '">'; $message = ($mode == 'poll_delete' ? $lang['Poll_delete'] : $lang['Deleted']) . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid("viewtopic.{$phpEx}?" . POST_TOPIC_URL . "={$topic_id}") . '">', '</a>'); } if ($board_config['points_post'] && !$post_info['points_disabled'] && ($mode == 'delete' || $mode == 'poll_delete')) { if ($userdata['user_id'] == $post_data['first_post'] && ($userdata['user_id'] != ANONYMOUS && $userdata['admin_allow_points'])) { subtract_points($userdata['user_id'], $board_config['points_topic']); } else { if ($userdata['user_id'] != ANONYMOUS && $userdata['admin_allow_points']) { subtract_points($userdata['user_id'], $board_config['points_reply']); } } } $message .= '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.{$phpEx}?" . POST_FORUM_URL . "={$forum_id}") . '">', '</a>'); $db->clear_cache('posts_'); $db->clear_cache('topics_recent_'); return; }
function delete_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id) { global $board_config, $lang, $db, $phpbb_root_path, $phpEx; global $userdata, $user_ip; if ($mode != 'poll_delete') { include "includes/functions_search.php"; $sql = "DELETE FROM " . POSTS_TABLE . "\r\n WHERE post_id = '{$post_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . POSTS_TEXT_TABLE . "\r\n WHERE post_id = '{$post_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } if ($post_data['last_post']) { if ($post_data['first_post']) { $forum_update_sql .= ', forum_topics = forum_topics - 1'; $sql = "DELETE FROM " . TOPICS_TABLE . "\r\n WHERE topic_id = '{$topic_id}'\r\n OR topic_moved_id = '{$topic_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "\r\n WHERE topic_id = '{$topic_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } } } remove_search_post($post_id); } if ($mode == 'poll_delete' || $mode == 'delete' && $post_data['first_post'] && $post_data['last_post'] && $post_data['has_poll'] && $post_data['edit_poll']) { $sql = "DELETE FROM " . VOTE_DESC_TABLE . "\r\n WHERE topic_id = '{$topic_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting poll', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . VOTE_RESULTS_TABLE . "\r\n WHERE vote_id = '{$poll_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting poll', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . VOTE_USERS_TABLE . "\r\n WHERE vote_id = '{$poll_id}'"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting poll', '', __LINE__, __FILE__, $sql); } } if ($mode == 'delete' && $post_data['first_post'] && $post_data['last_post']) { $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewforum.{$phpEx}?" . POST_FORUM_URL . '=' . $forum_id) . '">'; $message = $lang['Deleted']; } else { $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.{$phpEx}?" . POST_TOPIC_URL . '=' . $topic_id) . '">'; $message = ($mode == 'poll_delete' ? $lang['Poll_delete'] : $lang['Deleted']) . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid("viewtopic.{$phpEx}?" . POST_TOPIC_URL . "={$topic_id}") . '">', '</a>'); } $message .= '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.{$phpEx}?" . POST_FORUM_URL . "={$forum_id}") . '">', '</a>'); return; }
// Got all required info so go ahead and start deleting everything // $sql = "DELETE \n\t\t\t\tFROM " . TOPICS_TABLE . " \n\t\t\t\tWHERE topic_id IN ({$topic_id_sql}) \n\t\t\t\t\tOR topic_moved_id IN ({$topic_id_sql})"; if (!$db->sql_query($sql, BEGIN_TRANSACTION)) { message_die(GENERAL_ERROR, 'Could not delete topics', '', __LINE__, __FILE__, $sql); } if ($post_id_sql != '') { $sql = "DELETE \n\t\t\t\t\tFROM " . POSTS_TABLE . " \n\t\t\t\t\tWHERE post_id IN ({$post_id_sql})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete posts', '', __LINE__, __FILE__, $sql); } $sql = "DELETE \n\t\t\t\t\tFROM " . POSTS_TEXT_TABLE . " \n\t\t\t\t\tWHERE post_id IN ({$post_id_sql})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete posts text', '', __LINE__, __FILE__, $sql); } remove_search_post($post_id_sql); } if ($vote_id_sql != '') { $sql = "DELETE \n\t\t\t\t\tFROM " . VOTE_DESC_TABLE . " \n\t\t\t\t\tWHERE vote_id IN ({$vote_id_sql})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete vote descriptions', '', __LINE__, __FILE__, $sql); } $sql = "DELETE \n\t\t\t\t\tFROM " . VOTE_RESULTS_TABLE . " \n\t\t\t\t\tWHERE vote_id IN ({$vote_id_sql})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete vote results', '', __LINE__, __FILE__, $sql); } $sql = "DELETE \n\t\t\t\t\tFROM " . VOTE_USERS_TABLE . " \n\t\t\t\t\tWHERE vote_id IN ({$vote_id_sql})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete vote users', '', __LINE__, __FILE__, $sql); } }
function phpbb_edit_post($post_id = null, $subject = null, $message = null) { global $CFG, $userdata, $phpbb_root_path, $phpEx; include_once $phpbb_root_path . 'includes/functions_post.' . $phpEx; include_once $phpbb_root_path . 'includes/functions_search.' . $phpEx; if (empty($subject)) { phpbb_raise_error('Subject must not be empty.'); } if (empty($message)) { phpbb_raise_error('Message must not be empty.'); } if (empty($post_id)) { phpbb_raise_error('Post does not exists.'); } $sql = 'SELECT * FROM ' . POSTS_TABLE . ' WHERE post_id = ' . $post_id; $result = phpbb_fetch_row($sql); if ($result) { $topic_id = $result['topic_id']; } else { phpbb_raise_error('Post does not exists.', __FILE__, __LINE__, $sql); } $sql = 'SELECT * FROM ' . TOPICS_TABLE . ' WHERE topic_id = ' . $topic_id; $topic_info = phpbb_fetch_row($sql); remove_search_post($post_id); if ($post_id == $topic_info['topic_first_post_id']) { $sql = 'UPDATE ' . TOPICS_TABLE . ' SET topic_title = \'' . str_replace("\\'", "''", $subject) . '\' WHERE topic_id = ' . $topic_id; phpbb_query($sql); } $sql = 'UPDATE ' . POSTS_TEXT_TABLE . ' SET post_text = \'' . str_replace("\\'", "''", $message) . '\', post_subject = \'' . str_replace("\\'", "''", $subject) . '\' WHERE post_id = ' . $post_id; phpbb_query($sql); add_search_words('single', $post_id, stripslashes($message), stripslashes($subject)); }
function post_delete($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id) { global $db, $cache, $config, $lang, $user; $poll_deleted = false; $bin_mode = false; $bin_forum_id = intval($config['bin_forum']); if ($mode == 'delete' && !empty($bin_forum_id) && $bin_forum_id != $forum_id) { $bin_mode = true; } if ($mode != 'poll_delete') { // MG Cash MOD For IP - BEGIN if (!empty($config['plugins']['cash']['enabled'])) { $GLOBALS['cm_posting']->update_delete($mode, $post_data, $forum_id, $topic_id, $post_id); } // MG Cash MOD For IP - END if ($post_data['first_post'] && $post_data['last_post']) { if (!empty($bin_mode)) { $this->topic_recycle(array($topic_id), $forum_id); } else { $this->topic_delete($topic_id, $forum_id); $poll_deleted = true; } } else { if (!empty($bin_mode)) { $new_topic_id = $this->post_recycle($post_id, $forum_id, $topic_id, $post_data['topic_title'], false); } else { $sql = "DELETE FROM " . POSTS_TABLE . " WHERE post_id = {$post_id}"; $db->sql_query($sql); // Event Registration - BEGIN if ($post_data['first_post']) { $sql = "DELETE FROM " . REGISTRATION_TABLE . " WHERE topic_id = {$topic_id}"; $db->sql_query($sql); $sql = "DELETE FROM " . REGISTRATION_DESC_TABLE . " WHERE topic_id = {$topic_id}"; $db->sql_query($sql); } // Event Registration - END // UPI2DB - BEGIN $sql = "DELETE FROM " . UPI2DB_LAST_POSTS_TABLE . " WHERE post_id = {$post_id}"; $db->sql_query($sql); $sql = "DELETE FROM " . UPI2DB_UNREAD_POSTS_TABLE . " WHERE post_id = {$post_id}"; $db->sql_query($sql); // UPI2DB - END $sql = "DELETE FROM " . POSTS_LIKES_TABLE . " WHERE post_id = {$post_id}"; $db->sql_query($sql); if (!function_exists('remove_search_post')) { include IP_ROOT_PATH . 'includes/functions_search.' . PHP_EXT; } remove_search_post($post_id); } } } if ($post_data['has_poll'] && $post_data['edit_poll'] && ($mode == 'poll_delete' || $mode == 'delete' && $post_data['first_post'] && $post_data['last_post'])) { if (empty($bin_mode) && empty($poll_deleted)) { $this->topic_poll_delete($topic_id); } } if ($mode == 'delete' && $post_data['first_post'] && $post_data['last_post']) { $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid(CMS_PAGE_VIEWFORUM . '?' . POST_FORUM_URL . '=' . $forum_id) . '">'; $message = $lang['Deleted']; } else { $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid(CMS_PAGE_VIEWTOPIC . '?' . POST_TOPIC_URL . '=' . $topic_id) . '">'; $message = ($mode == 'poll_delete' ? $lang['Poll_delete'] : $lang['Deleted']) . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid(CMS_PAGE_VIEWTOPIC . '?' . POST_TOPIC_URL . '=' . $topic_id) . '">', '</a>'); } $message .= '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid(CMS_PAGE_VIEWFORUM . '?' . POST_FORUM_URL . '=' . $forum_id) . '">', '</a>'); if (!empty($forum_id)) { $this->sync('forum', $forum_id); } // LIKES - BEGIN @(include_once IP_ROOT_PATH . 'includes/class_topics.' . PHP_EXT); $class_topics = new class_topics(); $class_topics->topics_posts_likes_resync(); // LIKES - END $this->sync_cache(0, 0); board_stats(); cache_tree(true); return true; }
function delete_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id) { global $ft_cfg, $lang; global $userdata, $user_ip; if ($mode != 'poll_delete') { require FT_ROOT . 'includes/functions_search.php'; $sql = "DELETE FROM " . POSTS_TABLE . "\n\t\t\tWHERE post_id = {$post_id}"; if (!DB()->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . POSTS_TEXT_TABLE . "\n\t\t\tWHERE post_id = {$post_id}"; if (!DB()->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } if ($post_data['last_post']) { if ($post_data['first_post']) { $forum_update_sql .= ', forum_topics = forum_topics - 1'; $sql = "DELETE FROM " . TOPICS_TABLE . "\n\t\t\t\t\tWHERE topic_id = {$topic_id}\n\t\t\t\t\t\tOR topic_moved_id = {$topic_id}"; if (!DB()->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . "\n\t\t\t\t\tWHERE topic_id = {$topic_id}"; if (!DB()->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } //bt $sql = 'DELETE FROM ' . BT_USR_DL_STAT_TABLE . "\n\t\t\t\t\tWHERE topic_id = {$topic_id}"; if (!DB()->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting post', '', __LINE__, __FILE__, $sql); } //bt end } } remove_search_post($post_id); } if ($mode == 'poll_delete' || $mode == 'delete' && $post_data['first_post'] && $post_data['last_post'] && $post_data['has_poll'] && $post_data['edit_poll']) { $sql = "DELETE FROM " . VOTE_DESC_TABLE . "\n\t\t\tWHERE topic_id = {$topic_id}"; if (!DB()->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting poll', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . VOTE_RESULTS_TABLE . "\n\t\t\tWHERE vote_id = {$poll_id}"; if (!DB()->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting poll', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . VOTE_USERS_TABLE . "\n\t\t\tWHERE vote_id = {$poll_id}"; if (!DB()->sql_query($sql)) { message_die(GENERAL_ERROR, 'Error in deleting poll', '', __LINE__, __FILE__, $sql); } } if ($mode == 'delete' && $post_data['first_post'] && $post_data['last_post']) { $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewforum.php?" . POST_FORUM_URL . '=' . $forum_id) . '">'; $message = $lang['Deleted']; } else { $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid("viewtopic.php?" . POST_TOPIC_URL . '=' . $topic_id) . '">'; $message = ($mode == 'poll_delete' ? $lang['Poll_delete'] : $lang['Deleted']) . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . append_sid("viewtopic.php?" . POST_TOPIC_URL . "={$topic_id}") . '">', '</a>'); } $message .= '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid("viewforum.php?" . POST_FORUM_URL . "={$forum_id}") . '">', '</a>'); return; }
function prune($forum_id, $prune_date, $prune_all = false) { global $db, $lang, $class_mcp; if (!class_exists('class_mcp')) { include IP_ROOT_PATH . 'includes/class_mcp.' . PHP_EXT; } if (empty($class_mcp)) { $class_mcp = new class_mcp(); } // Before pruning, lets try to clean up the invalid topic entries $sql = 'SELECT topic_id FROM ' . TOPICS_TABLE . ' WHERE topic_last_post_id = 0'; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $class_mcp->sync('topic', $row['topic_id']); } $db->sql_freeresult($result); $prune_all = $prune_all ? '' : 'AND t.poll_start = 0 AND t.topic_type <> ' . POST_ANNOUNCE; // Those without polls and announcements... unless told otherwise! $sql = "SELECT t.topic_id\n\t\tFROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t\n\t\tWHERE t.forum_id = {$forum_id}\n\t\t\t{$prune_all}\n\t\t\tAND p.post_id = t.topic_last_post_id"; if ($prune_date != '') { $sql .= " AND p.post_time < {$prune_date}"; } $result = $db->sql_query($sql); $sql_topics = ''; while ($row = $db->sql_fetchrow($result)) { $sql_topics .= ($sql_topics != '' ? ', ' : '') . $row['topic_id']; } $db->sql_freeresult($result); if ($sql_topics != '') { $sql = "SELECT post_id\n\t\t\tFROM " . POSTS_TABLE . "\n\t\t\tWHERE forum_id = {$forum_id}\n\t\t\t\tAND topic_id IN ({$sql_topics})"; $result = $db->sql_query($sql); $sql_post = ''; while ($row = $db->sql_fetchrow($result)) { $sql_post .= ($sql_post != '' ? ', ' : '') . $row['post_id']; } $db->sql_freeresult($result); if ($sql_post != '') { $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . " WHERE topic_id IN ({$sql_topics})"; $db->sql_transaction('begin'); $db->sql_query($sql); $sql = "DELETE FROM " . TOPICS_TABLE . " WHERE topic_id IN ({$sql_topics})"; $db->sql_query($sql); $pruned_topics = $db->sql_affectedrows(); // Event Registration - BEGIN $sql = "DELETE FROM " . REGISTRATION_TABLE . " WHERE topic_id IN ({$sql_topics})"; $db->sql_query($sql); // Event Registration - END $sql = "DELETE FROM " . BOOKMARK_TABLE . " WHERE topic_id IN ({$sql_topics})"; $db->sql_query($sql); $sql = "DELETE FROM " . POSTS_TABLE . " WHERE post_id IN ({$sql_post})"; $db->sql_query($sql); $pruned_posts = $db->sql_affectedrows(); $db->sql_transaction('commit'); remove_search_post($sql_post); // UPI2DB - BEGIN prune_upi2db($sql_post); // UPI2DB - END prune_attachments($sql_post); return array('topics' => $pruned_topics, 'posts' => $pruned_posts); } } return array('topics' => 0, 'posts' => 0); }
function prune($forum_id, $prune_date, $prune_all = false) { global $db, $lang; // Before pruning, lets try to clean up the invalid topic entries $sql = 'SELECT topic_id FROM ' . TOPICS_TABLE . ' WHERE topic_last_post_id = 0'; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not obtain lists of topics to sync', '', __LINE__, __FILE__, $sql); } while ($row = $db->sql_fetchrow($result)) { sync('topic', $row['topic_id']); } $db->sql_freeresult($result); $prune_all = $prune_all ? '' : 'AND t.topic_vote = 0 AND t.topic_type <> ' . POST_ANNOUNCE; // // Those without polls and announcements ... unless told otherwise! // $sql = "SELECT t.topic_id \n\t\tFROM " . POSTS_TABLE . " p, " . TOPICS_TABLE . " t\n\t\tWHERE t.forum_id = {$forum_id}\n\t\t\t{$prune_all} \n\t\t\tAND p.post_id = t.topic_last_post_id"; if ($prune_date != '') { $sql .= " AND p.post_time < {$prune_date}"; } if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not obtain lists of topics to prune', '', __LINE__, __FILE__, $sql); } $sql_topics = ''; while ($row = $db->sql_fetchrow($result)) { $sql_topics .= ($sql_topics != '' ? ', ' : '') . $row['topic_id']; } $db->sql_freeresult($result); if ($sql_topics != '') { $sql = "SELECT post_id\n\t\t\tFROM " . POSTS_TABLE . " \n\t\t\tWHERE forum_id = {$forum_id} \n\t\t\t\tAND topic_id IN ({$sql_topics})"; if (!($result = $db->sql_query($sql))) { message_die(GENERAL_ERROR, 'Could not obtain list of posts to prune', '', __LINE__, __FILE__, $sql); } $sql_post = ''; while ($row = $db->sql_fetchrow($result)) { $sql_post .= ($sql_post != '' ? ', ' : '') . $row['post_id']; } $db->sql_freeresult($result); if ($sql_post != '') { $sql = "DELETE FROM " . TOPICS_WATCH_TABLE . " \n\t\t\t\tWHERE topic_id IN ({$sql_topics})"; if (!$db->sql_query($sql, BEGIN_TRANSACTION)) { message_die(GENERAL_ERROR, 'Could not delete watched topics during prune', '', __LINE__, __FILE__, $sql); } $sql = "DELETE FROM " . TOPICS_TABLE . " \n\t\t\t\tWHERE topic_id IN ({$sql_topics})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete topics during prune', '', __LINE__, __FILE__, $sql); } $pruned_topics = $db->sql_affectedrows(); $sql = "DELETE FROM " . POSTS_TABLE . " \n\t\t\t\tWHERE post_id IN ({$sql_post})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete post_text during prune', '', __LINE__, __FILE__, $sql); } $pruned_posts = $db->sql_affectedrows(); $sql = "DELETE FROM " . POSTS_TEXT_TABLE . " \n\t\t\t\tWHERE post_id IN ({$sql_post})"; if (!$db->sql_query($sql)) { message_die(GENERAL_ERROR, 'Could not delete post during prune', '', __LINE__, __FILE__, $sql); } remove_search_post($sql_post); /* -- mod : File Attachment Mod v2 Version 2.4.3 ---------------------------------------------------- */ if (!intval($attach_config['disable_mod'])) { prune_attachments($sql_post); } /* -- fin : File Attachment Mod v2 Version 2.4.3 ---------------------------------------------------- */ return array('topics' => $pruned_topics, 'posts' => $pruned_posts); } } return array('topics' => 0, 'posts' => 0); }
function submit_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$topic_type, &$bbcode_on, &$html_on, &$acro_auto_on, &$smilies_on, &$attach_sig, $post_username, $post_subject, $topic_title_clean, $topic_tags, $post_message, $poll_title, &$poll_options, &$poll_data, &$reg_active, &$reg_reset, &$reg_max_option1, &$reg_max_option2, &$reg_max_option3, &$reg_length, &$news_category, &$topic_show_portal, &$mark_edit, &$topic_desc, $topic_calendar_time = 0, $topic_calendar_duration = 0) { global $db, $cache, $config, $user, $lang; // CrackerTracker v5.x if (($mode == 'newtopic' || $mode == 'reply') && ($config['ctracker_spammer_blockmode'] > 0 || $config['ctracker_spam_attack_boost'] == 1) && $user->data['user_level'] != ANONYMOUS) { include_once IP_ROOT_PATH . 'includes/ctracker/classes/class_ct_userfunctions.' . PHP_EXT; $login_functions = new ct_userfunctions(); $login_functions->handle_postings(); unset($login_functions); } // CrackerTracker v5.x // BEGIN cmx_slash_news_mod if (isset($news_category) && is_numeric($news_category)) { $news_id = intval($news_category); //$topic_type = POST_NEWS; } else { $news_id = 0; } // END cmx_slash_news_mod include IP_ROOT_PATH . 'includes/functions_search.' . PHP_EXT; $current_time = time(); if ($user->data['user_level'] != ADMIN && (!empty($config['force_large_caps_mods']) || $user->data['user_level'] != MOD)) { //$post_subject = strtolower($post_subject); $post_subject = ucwords($post_subject); } // Flood control if ($user->data['user_level'] != ADMIN && $user->data['user_level'] != MOD) { if (!function_exists('check_flood_posting')) { include_once IP_ROOT_PATH . 'includes/functions_flood.' . PHP_EXT; } check_flood_posting(false); } if ($mode == 'editpost') { remove_search_post($post_id); } if ($mode == 'newtopic' || $mode == 'editpost' && $post_data['first_post']) { $topic_vote = !empty($poll_title) && sizeof($poll_options) >= 2 ? 1 : 0; $topic_show_portal = $topic_show_portal == true ? 1 : 0; $topic_calendar_duration = $topic_calendar_duration == '' ? 0 : $topic_calendar_duration; // Event Registration - BEGIN $topic_reg = 0; if ($reg_active == 1) { $topic_reg = 1; } // Event Registration - END $sql = $mode != 'editpost' ? "INSERT INTO " . TOPICS_TABLE . " (topic_title, topic_desc, topic_tags, topic_poster, topic_time, forum_id, news_id, topic_status, topic_type, topic_calendar_time, topic_calendar_duration, topic_reg, topic_show_portal) VALUES ('" . $db->sql_escape($post_subject) . "', '" . $db->sql_escape($topic_desc) . "', " . $db->sql_validate_value($topic_tags) . ", " . $user->data['user_id'] . ", {$current_time}, {$forum_id}, {$news_id}, " . TOPIC_UNLOCKED . ", {$topic_type}, {$topic_calendar_time}, {$topic_calendar_duration}, {$topic_reg}, {$topic_show_portal})" : "UPDATE " . TOPICS_TABLE . " SET topic_title = '" . $db->sql_escape($post_subject) . "', news_id = {$news_id}, topic_desc = '" . $db->sql_escape($topic_desc) . "', topic_tags = " . $db->sql_validate_value($topic_tags) . ", topic_type = {$topic_type}, topic_calendar_time = {$topic_calendar_time}, topic_calendar_duration = {$topic_calendar_duration}, topic_reg = {$topic_reg}" . ", topic_show_portal = {$topic_show_portal}\n\t\tWHERE topic_id = {$topic_id}"; $db->sql_query($sql); if ($mode == 'newtopic') { $topic_id = $db->sql_nextid(); } else { // Event Registration - BEGIN if ($reg_reset) { $sql = "DELETE FROM " . REGISTRATION_TABLE . " WHERE topic_id = " . $topic_id; $db->sql_query($sql); } // Event Registration - END } if (!function_exists('create_clean_topic_title')) { @(include_once IP_ROOT_PATH . 'includes/functions_topics.' . PHP_EXT); } create_clean_topic_title($topic_id, $forum_id, $topic_title_clean, ''); @(include_once IP_ROOT_PATH . 'includes/class_topics_tags.' . PHP_EXT); $class_topics_tags = new class_topics_tags(); $topic_tags_array = $class_topics_tags->create_tags_array($topic_tags); $update_tags = $mode == 'editpost' ? true : false; $class_topics_tags->submit_tags($topic_id, $forum_id, $topic_tags_array, $update_tags); unset($class_topics_tags); // Empty the similar id cache for guests every time we create a new topic or edit the first post in a topic if ($config['similar_topics']) { $clear_result = clear_similar_topics(); } } // Poll management - BEGIN if (($mode == 'newtopic' || $mode == 'editpost' && $post_data['edit_poll']) && !empty($poll_title) && sizeof($poll_options) >= 2) { $poll_title = !empty($poll_title) ? trim($poll_title) : (isset($poll_data['title']) ? trim($poll_data['title']) : ''); $poll_start = !empty($poll_data['start']) ? $poll_data['start'] : $current_time; $poll_length = isset($poll_data['length']) ? max(0, intval($poll_data['length'])) : 0; $poll_max_options = isset($poll_data['max_options']) ? max(1, intval($poll_data['max_options'])) : 1; $poll_last_vote = !empty($post_data['poll_last_vote']) ? $post_data['poll_last_vote'] : 0; $poll_change = !empty($poll_data['change']) ? 1 : 0; $sql_ary = array('poll_title' => $poll_title, 'poll_start' => $poll_start, 'poll_length' => $poll_length, 'poll_max_options' => $poll_max_options, 'poll_last_vote' => $poll_last_vote, 'poll_vote_change' => $poll_change); $sql_poll_update = $db->sql_build_insert_update($sql_ary, false); $sql = "UPDATE " . TOPICS_TABLE . " SET " . $sql_poll_update . " WHERE topic_id = " . $topic_id; $db->sql_query($sql); $delete_option_sql = ''; $old_poll_result = array(); if ($mode == 'editpost' && $post_data['has_poll']) { $sql = "SELECT *\n\t\t\t\tFROM " . POLL_OPTIONS_TABLE . "\n\t\t\t\tWHERE topic_id = {$topic_id}\n\t\t\t\tORDER BY poll_option_id ASC"; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { $old_poll_result[$row['poll_option_id']] = $row['poll_option_total']; if (!isset($poll_options[$row['poll_option_id']])) { $delete_option_sql .= ($delete_option_sql != '' ? ', ' : '') . $row['poll_option_id']; } } } $poll_option_id = 1; @reset($poll_options); while (list($option_id, $option_text) = each($poll_options)) { if (!empty($option_text)) { $option_insert = $mode != 'editpost' || !isset($old_poll_result[$option_id]) ? true : false; $poll_result = $option_insert ? 0 : $old_poll_result[$option_id]; $poll_option_id = $option_insert ? $poll_option_id : $option_id; $sql_tmp_option_ary = array('poll_option_id' => $poll_option_id, 'topic_id' => $topic_id, 'poll_option_text' => $option_text, 'poll_option_total' => $poll_result); $sql_tmp_option = $db->sql_build_insert_update($sql_tmp_option_ary, $option_insert); if ($option_insert) { $sql = "INSERT INTO " . POLL_OPTIONS_TABLE . " " . $sql_tmp_option; } else { $sql = "UPDATE " . POLL_OPTIONS_TABLE . " SET " . $sql_tmp_option . " WHERE poll_option_id = {$option_id} AND topic_id = {$topic_id}"; } $db->sql_query($sql); $poll_option_id++; } } if ($delete_option_sql != '') { $sql = "DELETE FROM " . POLL_OPTIONS_TABLE . "\n\t\t\t\tWHERE poll_option_id IN ({$delete_option_sql})\n\t\t\t\t\tAND topic_id = {$topic_id}"; $db->sql_query($sql); } } // Poll management - END // Event Registration - BEGIN if (($mode == 'newtopic' || $mode == 'editpost') && $topic_reg == 1) { if ($mode == 'editpost') { $sql = "SELECT count(1) chk_reg FROM " . REGISTRATION_DESC_TABLE . " WHERE topic_id = {$topic_id}"; $result = $db->sql_query($sql); $chk_reg = $db->sql_fetchfield('chk_reg', 0, $result) != 0 ? true : false; } $sql = $mode != 'editpost' || $mode == 'editpost' && $chk_reg == false ? "INSERT INTO " . REGISTRATION_DESC_TABLE . " (topic_id, reg_active, reg_max_option1, reg_max_option2, reg_max_option3, reg_start, reg_length) VALUES ({$topic_id}, {$reg_active}, {$reg_max_option1}, {$reg_max_option2}, {$reg_max_option3}, {$current_time}, " . $reg_length * 86400 . ")" : "UPDATE " . REGISTRATION_DESC_TABLE . " SET reg_active = {$reg_active}, reg_max_option1 = {$reg_max_option1}, reg_max_option2 = {$reg_max_option2}, reg_max_option3 = {$reg_max_option3}, reg_length = " . $reg_length * 86400 . " WHERE topic_id = {$topic_id}"; $db->sql_query($sql); } // Event Registration - END // To show also admins modifications decomment this line!!! //if( ($user->data['user_level'] == ADMIN) && !$config['always_show_edit_by'] ) if ($user->data['user_level'] == ADMIN) { $edited_sql = ''; } else { // Original phpBB "Edit By" //$edited_sql = ($mode == 'editpost' && !$post_data['last_post'] && $post_data['poster_post']) ? ", post_edit_time = $current_time, post_edit_count = post_edit_count + 1 " : ""; $edited_sql = ", post_edit_time = '" . $current_time . "', post_edit_count = (post_edit_count + 1), post_edit_id = '" . $user->data['user_id'] . "' "; if ($config['always_show_edit_by'] == true) { $edited_sql = $mode == 'editpost' ? $edited_sql : ''; } else { $edited_sql = $mode == 'editpost' && !$post_data['last_post'] ? $edited_sql : ''; } } $lock_post = request_boolean_var('post_locked', false); $sql = $mode != 'editpost' ? "INSERT INTO " . POSTS_TABLE . " (topic_id, forum_id, poster_id, post_username, post_subject, post_text, post_time, poster_ip, enable_bbcode, enable_html, enable_smilies, enable_autolinks_acronyms, enable_sig, post_locked, post_images) VALUES (" . $topic_id . ", " . $forum_id . ", " . $user->data['user_id'] . ", '" . $db->sql_escape($post_username) . "', '" . $db->sql_escape($post_subject) . "', '" . $db->sql_escape($post_message) . "', " . $current_time . ", '" . $db->sql_escape($user->ip) . "', " . $bbcode_on . ", " . $html_on . ", " . $smilies_on . ", " . $acro_auto_on . ", " . $attach_sig . ", " . (!empty($lock_post) ? '1' : '0') . ", '" . $db->sql_escape($post_data['post_images']) . "')" : "UPDATE " . POSTS_TABLE . " SET post_username = '******', post_text = '" . $db->sql_escape($post_message) . "', post_text_compiled = '', post_subject = '" . $db->sql_escape($post_subject) . "', enable_bbcode = " . $bbcode_on . ", enable_html = " . $html_on . ", enable_smilies = " . $smilies_on . ", enable_autolinks_acronyms = " . $acro_auto_on . ", enable_sig = " . $attach_sig . ", post_locked = " . (!empty($lock_post) ? '1' : '0') . ", post_images = '" . $db->sql_escape($post_data['post_images']) . "' " . $edited_sql . " WHERE post_id = " . $post_id; //die($sql); $db->sql_transaction('begin'); $db->sql_query($sql); if ($mode != 'editpost') { $post_id = $db->sql_nextid(); } // UPI2DB - BEGIN if ($config['upi2db_on']) { $mark_edit = $user->data['user_level'] == ADMIN || $user->data['user_level'] == MOD ? $mark_edit : true; if ($mode != 'editpost' || $mode == 'editpost' && $post_data['last_post'] && $config['upi2db_last_edit_as_new'] && $mark_edit || $mode == 'editpost' && !$post_data['last_post'] && $config['upi2db_edit_as_new'] && $mark_edit || $mode == 'reply') { $sql = "SELECT post_id FROM " . UPI2DB_LAST_POSTS_TABLE . "\n\t\t\t\tWHERE post_id = " . $post_id; $result = $db->sql_query($sql); $id_vorhanden = $db->sql_numrows($result); $db->sql_freeresult($result); if ($id_vorhanden == 0) { $pt_or_pet = $mode != 'editpost' ? "post_time" : "post_edit_time"; $sql = "INSERT INTO " . UPI2DB_LAST_POSTS_TABLE . " (post_id, topic_id, forum_id, poster_id, " . $pt_or_pet . ", topic_type, post_edit_by) VALUES ('{$post_id}', '{$topic_id}', '{$forum_id}', '" . $user->data['user_id'] . "', '{$current_time}', '{$topic_type}', '" . $user->data['user_id'] . "')"; } else { $sql = "UPDATE " . UPI2DB_LAST_POSTS_TABLE . " SET post_edit_time = '" . $current_time . "', topic_type = '" . $topic_type . "', post_edit_by = '" . $user->data['user_id'] . "' WHERE post_id = " . $post_id; } $db->sql_query($sql); } // Edited By Mighty Gorgon - BEGIN if ($user->data['user_level'] != ADMIN && $user->data['user_level'] != MOD) { if ($topic_type == POST_STICKY || $topic_type == POST_ANNOUNCE || $topic_type == POST_GLOBAL_ANNOUNCE) { $sql = "DELETE FROM " . UPI2DB_ALWAYS_READ_TABLE . "\n\t\t\t\t\tWHERE forum_id = " . $forum_id; $db->sql_query($sql); } } // Edited By Mighty Gorgon - END } // UPI2DB - END add_search_words('single', $post_id, $post_message, $post_subject); // DOWNLOADS - BEGIN if (!empty($config['plugins']['downloads']['enabled'])) { setup_extra_lang(array('lang_downloads'), IP_ROOT_PATH . PLUGINS_PATH . $config['plugins']['downloads']['dir'] . 'language/'); include IP_ROOT_PATH . PLUGINS_PATH . $config['plugins']['downloads']['dir'] . 'classes/class_dlmod.' . PHP_EXT; $dl_mod = new dlmod(); $dl_config = $dl_mod->get_config(); if ($dl_config['enable_post_dl_traffic']) { if (!$dl_config['delay_post_traffic'] || (time() - $user->data['user_regdate']) / 84600 > $dl_config['delay_post_traffic']) { $dl_traffic = 0; if ($mode == 'newtopic') { $dl_traffic = $dl_config['newtopic_traffic']; } elseif ($mode == 'reply' || $mode == 'quote') { $dl_traffic = $dl_config['reply_traffic']; } if ($dl_traffic > 0) { $sql = "UPDATE " . USERS_TABLE . "\n\t\t\t\t\t\tSET user_traffic = user_traffic + {$dl_traffic}\n\t\t\t\t\t\tWHERE user_id = " . $user->data['user_id']; $db->sql_query($sql); } } } } // DOWNLOADS - END // ReSync last topic title if needed if ($mode == 'editpost' && $post_data['first_post']) { $sql = "UPDATE " . FORUMS_TABLE . " f\n\t\t\tSET f.forum_last_post_subject = '" . $db->sql_escape($post_subject) . "'\n\t\t\tWHERE f.forum_last_topic_id = " . $topic_id; $result = $db->sql_query($sql); } $db->sql_transaction('commit'); empty_cache_folders(POSTS_CACHE_FOLDER); empty_cache_folders(FORUMS_CACHE_FOLDER); board_stats(); cache_tree(true); $cash_string = ''; // MG Cash MOD For IP - BEGIN if (!empty($config['plugins']['cash']['enabled'])) { $cash_message = $GLOBALS['cm_posting']->update_post($mode, $post_data, $forum_id, $topic_id, $post_id, $topic_type, $post_username, $post_message); $cash_string = '<br />' . $cash_message; } // MG Cash MOD For IP - END $meta = '<meta http-equiv="refresh" content="3;url=' . append_sid(CMS_PAGE_VIEWTOPIC . '?' . POST_POST_URL . '=' . $post_id) . '#p' . $post_id . '">'; $message = $lang['Stored'] . $cash_string . '<br /><br />' . sprintf($lang['Click_view_message'], '<a href="' . append_sid(CMS_PAGE_VIEWTOPIC . '?' . POST_POST_URL . '=' . $post_id) . '#p' . $post_id . '">', '</a>') . '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . append_sid(CMS_PAGE_VIEWFORUM . '?' . POST_FORUM_URL . '=' . $forum_id) . '">', '</a>'); return false; }
function delete_post($mode, &$post_data, &$message, &$meta, &$forum_id, &$topic_id, &$post_id, &$poll_id) { global $board_config, $lang, $db, $phpbb_root_path; global $userdata; if ($mode != 'poll_delete') { include "includes/phpBB/functions_search.php"; $db->sql_query("DELETE FROM " . POSTS_TABLE . " WHERE post_id = {$post_id}"); $db->sql_query("DELETE FROM " . POSTS_TEXT_TABLE . " WHERE post_id = {$post_id}"); if ($post_data['last_post']) { if ($post_data['first_post']) { $forum_update_sql .= ', forum_topics = forum_topics - 1'; $sql = "DELETE FROM " . TOPICS_TABLE . "\n\t\t\t\t WHERE topic_id = {$topic_id} OR topic_moved_id = {$topic_id}"; $db->sql_query($sql); $db->sql_query("DELETE FROM " . TOPICS_WATCH_TABLE . " WHERE topic_id = {$topic_id}"); } } remove_search_post($post_id); } if ($mode == 'poll_delete' || $mode == 'delete' && $post_data['first_post'] && $post_data['last_post'] && $post_data['has_poll'] && $post_data['edit_poll']) { $db->sql_query("DELETE FROM " . VOTE_DESC_TABLE . " WHERE topic_id = {$topic_id}"); $db->sql_query("DELETE FROM " . VOTE_RESULTS_TABLE . " WHERE vote_id = {$poll_id}"); $db->sql_query("DELETE FROM " . VOTE_USERS_TABLE . " WHERE vote_id = {$poll_id}"); } if ($mode == 'delete' && $post_data['first_post'] && $post_data['last_post']) { URL::refresh(URL::index("&file=viewforum&" . POST_FORUM_URL . "={$forum_id}")); $message = $lang['Deleted']; } else { URL::refresh(URL::index("&file=viewtopic&" . POST_TOPIC_URL . "={$topic_id}")); $message = ($mode == 'poll_delete' ? $lang['Poll_delete'] : $lang['Deleted']) . '<br /><br />' . sprintf($lang['Click_return_topic'], '<a href="' . URL::index("&file=viewtopic&" . POST_TOPIC_URL . "={$topic_id}") . '">', '</a>'); } $message .= '<br /><br />' . sprintf($lang['Click_return_forum'], '<a href="' . URL::index("&file=viewforum&" . POST_FORUM_URL . "={$forum_id}") . '">', '</a>'); return; }