diff options
author | Meik Sievertsen <acydburn@phpbb.com> | 2003-04-19 10:28:37 +0000 |
---|---|---|
committer | Meik Sievertsen <acydburn@phpbb.com> | 2003-04-19 10:28:37 +0000 |
commit | 68deb6cbfd82aab32c348a1ee40ea9dcba096b33 (patch) | |
tree | 2e3bf8216dafdd14917b91896f91db03e5e47fd3 /phpBB/includes/functions_posting.php | |
parent | 92141c3e356f38c25830239a1449b5013e8b9a4c (diff) | |
download | forums-68deb6cbfd82aab32c348a1ee40ea9dcba096b33.tar forums-68deb6cbfd82aab32c348a1ee40ea9dcba096b33.tar.gz forums-68deb6cbfd82aab32c348a1ee40ea9dcba096b33.tar.bz2 forums-68deb6cbfd82aab32c348a1ee40ea9dcba096b33.tar.xz forums-68deb6cbfd82aab32c348a1ee40ea9dcba096b33.zip |
do not use the sync function if post get deleted. added topic_last_post_id information to viewtopic, for determining delete permission correctly.
git-svn-id: file:///svn/phpbb/trunk@3887 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes/functions_posting.php')
-rw-r--r-- | phpBB/includes/functions_posting.php | 80 |
1 files changed, 75 insertions, 5 deletions
diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php index 9145581b73..b696230818 100644 --- a/phpBB/includes/functions_posting.php +++ b/phpBB/includes/functions_posting.php @@ -369,6 +369,77 @@ function format_display($message, $html, $bbcode, $uid, $url, $smilies, $sig) return($message); } +// Update Last Post Informations +function update_last_post_information($type, $id) +{ + global $db; + + switch ($type) + { + case 'forum': + $sql_select_add = ', f.forum_parents'; +// $sql_select_add = ', f.left_id'; + $sql_table_add = ', ' . FORUMS_TABLE . ' f'; + $sql_where_add = 'AND (t.forum_id = f.forum_id) AND (f.forum_id = ' . $id . ')'; + $sql_update_table = FORUMS_TABLE; + break; + + case 'topic': + $sql_select_add = ''; + $sql_table_add = ''; + $sql_where_add = 'AND (t.topic_id = ' . $id . ')'; + $sql_update_table = TOPICS_TABLE; + break; + default: + return; + } + + $sql = "SELECT p.post_id, p.poster_id, p.post_time, u.username, p.post_username " . $sql_select_add . " + FROM " . POSTS_TABLE . " p, " . USERS_TABLE . " u, " . TOPICS_TABLE . " t " . $sql_table_add . " + WHERE p.post_approved = 1 + AND t.topic_approved = 1 + AND p.poster_id = u.user_id + AND t.topic_id = p.topic_id + $sql_where_add + ORDER BY p.post_time DESC"; + $result = $db->sql_query_limit($sql, 1); + + $row = $db->sql_fetchrow($result); + $db->sql_freeresult($result); + + switch ($type) + { + case 'forum': + // Update forums: last post info, topics, posts ... we need to update + // each parent too ... + + $forum_ids = $id; + $forum_parents = get_forum_parents($row); + + foreach ($forum_parents as $parent_forum_id => $parent_name) + { + $forum_ids .= ', ' . $parent_forum_id; + } + + $where_clause = 'forum_id IN (' . $forum_ids . ')'; + break; + + case 'topic': + $where_clause = 'topic_id = ' . $id; + break; + } + + $update_sql = array( + $type . '_last_post_id' => intval($row['post_id']), + $type . '_last_post_time' => intval($row['post_time']), + $type . '_last_poster_id' => intval($row['poster_id']), + $type . '_last_poster_name' => (intval($row['poster_id']) == ANONYMOUS) ? trim($row['post_username']) : trim($row['username']) + ); + + $sql = 'UPDATE ' . $sql_update_table . ' SET ' . $db->sql_build_array('UPDATE', $update_sql) . ' WHERE ' . $where_clause; + $db->sql_query($sql); +} + // Submit Post function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_uid, $poll, $attachment_data, $post_data) { @@ -389,7 +460,7 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_ 'topic_title' => stripslashes($subject), 'topic_time' => $current_time, 'topic_type' => $topic_type, - 'topic_approved' => (($post_data['enable_moderate']) && !$auth->acl_get('f_ignorequeue', $post_data['forum_id'])) ? 0 : 1, + 'topic_approved' => ($auth->acl_get('f_moderate', $post_data['forum_id']) && !$auth->acl_get('f_ignorequeue', $post_data['forum_id'])) ? 0 : 1, 'icon_id' => $post_data['icon_id'], 'topic_attachment' => (sizeof($attachment_data['physical_filename'])) ? 1 : 0, 'topic_poster' => intval($user->data['user_id']), @@ -421,7 +492,7 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_ 'icon_id' => $post_data['icon_id'], 'poster_ip' => $user->ip, 'post_time' => $current_time, - 'post_approved' => ($post_data['enable_moderate'] && !$auth->acl_get('f_ignorequeue', $post_data['forum_id'])) ? 0 : 1, + 'post_approved' => ($auth->acl_get('f_moderate', $post_data['forum_id']) && !$auth->acl_get('f_ignorequeue', $post_data['forum_id'])) ? 0 : 1, 'post_edit_time' => ($mode == 'edit' && $post_data['poster_id'] == $user->data['user_id']) ? $current_time : 0, 'enable_sig' => $post_data['enable_sig'], 'enable_bbcode' => $post_data['enable_bbcode'], @@ -599,8 +670,7 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_ $db->sql_query($sql); // Update user post count ... if appropriate - // TODO: alter to use the ACL - if (!empty($post_data['enable_post_count']) && $user->data['user_id'] != ANONYMOUS) + if ($user->data['user_id'] != ANONYMOUS && $auth->acl_get('f_postcount', $post_data['forum_id'])) { $sql = 'UPDATE ' . USERS_TABLE . ' SET user_posts = user_posts + 1 @@ -648,7 +718,7 @@ function submit_post($mode, $message, $subject, $username, $topic_type, $bbcode_ 'META' => '<meta http-equiv="refresh" content="5; url=viewtopic.' . $phpEx . $SID . '&f=' . $post_data['forum_id'] . '&p=' . $post_data['post_id'] . '#' . $post_data['post_id'] . '">') ); - $message = ($post_data['enable_moderate']) ? 'POST_STORED_MOD' : 'POST_STORED'; + $message = ($auth->acl_get('f_moderate', $post_data['forum_id']) && !$auth->acl_get('f_ignorequeue', $post_data['forum_id'])) ? 'POST_STORED_MOD' : 'POST_STORED'; $message = $user->lang[$message] . '<br /><br />' . sprintf($user->lang['VIEW_MESSAGE'], '<a href="viewtopic.' . $phpEx . $SID .'&p=' . $post_data['post_id'] . '#' . $post_data['post_id'] . '">', '</a>') . '<br /><br />' . sprintf($user->lang['RETURN_FORUM'], '<a href="viewforum.' . $phpEx . $SID .'&f=' . $post_data['forum_id'] . '">', '</a>'); trigger_error($message); } |