aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
authorMeik Sievertsen <acydburn@phpbb.com>2005-01-29 14:46:16 +0000
committerMeik Sievertsen <acydburn@phpbb.com>2005-01-29 14:46:16 +0000
commit0aacc245267d1180ccfe2fcc59ca195d53e10cf3 (patch)
tree490fc5c057057c3a66ae3ca2385a8f9ba365e699 /phpBB
parent261e79c920414f5aaa64a37b21cab67662d0b2ef (diff)
downloadforums-0aacc245267d1180ccfe2fcc59ca195d53e10cf3.tar
forums-0aacc245267d1180ccfe2fcc59ca195d53e10cf3.tar.gz
forums-0aacc245267d1180ccfe2fcc59ca195d53e10cf3.tar.bz2
forums-0aacc245267d1180ccfe2fcc59ca195d53e10cf3.tar.xz
forums-0aacc245267d1180ccfe2fcc59ca195d53e10cf3.zip
fix last_post_information for moderated topics
git-svn-id: file:///svn/phpbb/trunk@5088 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB')
-rw-r--r--phpBB/includes/functions_posting.php13
-rw-r--r--phpBB/posting.php18
2 files changed, 11 insertions, 20 deletions
diff --git a/phpBB/includes/functions_posting.php b/phpBB/includes/functions_posting.php
index 7aba451285..8e3851e86c 100644
--- a/phpBB/includes/functions_posting.php
+++ b/phpBB/includes/functions_posting.php
@@ -97,14 +97,17 @@ function update_last_post_information($type, $id)
$update_sql = array();
- $sql = 'SELECT MAX(post_id) as last_post_id
- FROM ' . POSTS_TABLE . "
- WHERE post_approved = 1
- AND {$type}_id = $id";
+ $sql = 'SELECT MAX(p.post_id) as last_post_id
+ FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . " t
+ WHERE p.topic_id = t.topic_id
+ AND p.post_approved = 1
+ AND t.topic_approved = 1
+ AND p.{$type}_id = $id";
+
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
- if ($row['last_post_id'])
+ if ((int) $row['last_post_id'])
{
$sql = 'SELECT p.post_id, p.poster_id, p.post_time, u.username, p.post_username
FROM ' . POSTS_TABLE . ' p, ' . USERS_TABLE . ' u
diff --git a/phpBB/posting.php b/phpBB/posting.php
index a7ba19488a..3933cc22a5 100644
--- a/phpBB/posting.php
+++ b/phpBB/posting.php
@@ -1258,7 +1258,7 @@ function delete_post($mode, $post_id, $topic_id, $forum_id, &$data)
$sql = 'SELECT MAX(post_id) as last_post_id
FROM ' . POSTS_TABLE . "
WHERE topic_id = $topic_id " .
- (($auth->acl_get('m_approve', $forum_id)) ? 'AND post_approved = 1' : '');
+ ((!$auth->acl_get('m_approve')) ? 'AND post_approved = 1' : '');
$result = $db->sql_query($sql);
$row = $db->sql_fetchrow($result);
$db->sql_freeresult($result);
@@ -1271,7 +1271,7 @@ function delete_post($mode, $post_id, $topic_id, $forum_id, &$data)
$sql = 'SELECT post_id
FROM ' . POSTS_TABLE . "
WHERE topic_id = $topic_id " .
- (($auth->acl_get('m_approve', $forum_id)) ? 'AND post_approved = 1' : '') . '
+ ((!$auth->acl_get('m_approve')) ? 'AND post_approved = 1' : '') . '
AND post_time > ' . $data['post_time'] . '
ORDER BY post_time ASC';
$result = $db->sql_query_limit($sql, 1);
@@ -1721,19 +1721,7 @@ function submit_post($mode, $subject, $username, $topic_type, &$poll, &$data, $u
{
if ($topic_type != POST_GLOBAL)
{
- // We get the last post information not for posting or replying, we can assume the correct params here, which is much faster
- if ($post_mode == 'edit_last_post')
- {
- $sql_data[FORUMS_TABLE]['stat'][] = implode(', ', update_last_post_information('forum', $data['forum_id']));
- }
- else if (!$auth->acl_get('f_moderate', $data['forum_id']) || $auth->acl_get('m_approve'))
- {
- $update_sql = 'forum_last_post_id = ' . $data['post_id'];
- $update_sql .= ", forum_last_post_time = $current_time";
- $update_sql .= ', forum_last_poster_id = ' . $user->data['user_id'];
- $update_sql .= ", forum_last_poster_name = '" . (($user->data['user_id'] == ANONYMOUS) ? $db->sql_escape(stripslashes($username)) : $db->sql_escape($user->data['username'])) . "'";
- $sql_data[FORUMS_TABLE]['stat'][] = $update_sql;
- }
+ $sql_data[FORUMS_TABLE]['stat'][] = implode(', ', update_last_post_information('forum', $data['forum_id']));
}
$update = update_last_post_information('topic', $data['topic_id']);