aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2011-08-25 23:21:09 -0400
committerNils Adermann <naderman@naderman.de>2011-08-25 23:21:09 -0400
commit73aca1a6fb72137befa6b61fba402ebe5e2babe1 (patch)
tree8e530b869ead1325644c89e0f5120bd527136d37 /phpBB
parent459570bcca9347f4f115e0e53d098b4ebd4ffc1a (diff)
parent0d4089da7fab3c4e2f177ad62bed142d4df181e1 (diff)
downloadforums-73aca1a6fb72137befa6b61fba402ebe5e2babe1.tar
forums-73aca1a6fb72137befa6b61fba402ebe5e2babe1.tar.gz
forums-73aca1a6fb72137befa6b61fba402ebe5e2babe1.tar.bz2
forums-73aca1a6fb72137befa6b61fba402ebe5e2babe1.tar.xz
forums-73aca1a6fb72137befa6b61fba402ebe5e2babe1.zip
Merge branch 'develop-olympus' into develop
* develop-olympus: [ticket/10320] Exclude passworded forums when determining "Most active topic". [ticket/10320] Move phpbb_feed_base::get_passworded_forums() to user class.
Diffstat (limited to 'phpBB')
-rw-r--r--phpBB/feed.php25
-rw-r--r--phpBB/includes/functions_display.php6
-rw-r--r--phpBB/includes/session.php33
3 files changed, 40 insertions, 24 deletions
diff --git a/phpBB/feed.php b/phpBB/feed.php
index 1a09e4da23..aacbb48591 100644
--- a/phpBB/feed.php
+++ b/phpBB/feed.php
@@ -604,30 +604,9 @@ class phpbb_feed_base
function get_passworded_forums()
{
- global $db, $user;
-
- // Exclude passworded forums
- $sql = 'SELECT f.forum_id, fa.user_id
- FROM ' . FORUMS_TABLE . ' f
- LEFT JOIN ' . FORUMS_ACCESS_TABLE . " fa
- ON (fa.forum_id = f.forum_id
- AND fa.session_id = '" . $db->sql_escape($user->session_id) . "')
- WHERE f.forum_password <> ''";
- $result = $db->sql_query($sql);
-
- $forum_ids = array();
- while ($row = $db->sql_fetchrow($result))
- {
- $forum_id = (int) $row['forum_id'];
-
- if ($row['user_id'] != $user->data['user_id'])
- {
- $forum_ids[$forum_id] = $forum_id;
- }
- }
- $db->sql_freeresult($result);
+ global $user;
- return $forum_ids;
+ return $user->get_passworded_forums();
}
function get_item()
diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php
index 9c27f7eed1..131e3c1321 100644
--- a/phpBB/includes/functions_display.php
+++ b/phpBB/includes/functions_display.php
@@ -990,13 +990,17 @@ function display_user_activity(&$userdata)
}
// Obtain active topic
+ // We need to exclude passworded forums here so we do not leak the topic title
+ $forum_ary_topic = array_unique(array_merge($forum_ary, $user->get_passworded_forums()));
+ $forum_sql_topic = (!empty($forum_ary_topic)) ? 'AND ' . $db->sql_in_set('forum_id', $forum_ary_topic, true) : '';
+
$sql = 'SELECT topic_id, COUNT(post_id) AS num_posts
FROM ' . POSTS_TABLE . '
WHERE poster_id = ' . $userdata['user_id'] . "
AND post_postcount = 1
AND (post_approved = 1
$sql_m_approve)
- $forum_sql
+ $forum_sql_topic
GROUP BY topic_id
ORDER BY num_posts DESC";
$result = $db->sql_query_limit($sql, 1);
diff --git a/phpBB/includes/session.php b/phpBB/includes/session.php
index 84ad98d31f..e734c8074f 100644
--- a/phpBB/includes/session.php
+++ b/phpBB/includes/session.php
@@ -2443,4 +2443,37 @@ class user extends session
return true;
}
+
+ /**
+ * Returns all password protected forum ids the user is currently NOT authenticated for.
+ *
+ * @return array Array of forum ids
+ * @access public
+ */
+ function get_passworded_forums()
+ {
+ global $db;
+
+ $sql = 'SELECT f.forum_id, fa.user_id
+ FROM ' . FORUMS_TABLE . ' f
+ LEFT JOIN ' . FORUMS_ACCESS_TABLE . " fa
+ ON (fa.forum_id = f.forum_id
+ AND fa.session_id = '" . $db->sql_escape($this->session_id) . "')
+ WHERE f.forum_password <> ''";
+ $result = $db->sql_query($sql);
+
+ $forum_ids = array();
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $forum_id = (int) $row['forum_id'];
+
+ if ($row['user_id'] != $this->data['user_id'])
+ {
+ $forum_ids[$forum_id] = $forum_id;
+ }
+ }
+ $db->sql_freeresult($result);
+
+ return $forum_ids;
+ }
}