aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/content_visibility.php20
-rw-r--r--phpBB/includes/functions_display.php5
2 files changed, 23 insertions, 2 deletions
diff --git a/phpBB/includes/content_visibility.php b/phpBB/includes/content_visibility.php
index 8bfdfd2917..2a0cc3c850 100644
--- a/phpBB/includes/content_visibility.php
+++ b/phpBB/includes/content_visibility.php
@@ -47,6 +47,26 @@ class phpbb_content_visibility
}
/**
+ * Get the topics post count or the forums post/topic count based on permissions
+ *
+ * @param $mode string One of topic_posts, forum_posts or forum_topics
+ * @param $data array Array with the topic/forum data to calculate from
+ * @param $forum_id int The forum id is used for permission checks
+ * @return int Number of posts/topics the user can see in the topic/forum
+ */
+ static public function get_count($mode, $data, $forum_id)
+ {
+ global $auth;
+
+ if (!$auth->acl_get('m_approve', $forum_id))
+ {
+ return (int) $data[$mode];
+ }
+
+ return (int) $data[$mode] + (int) $data[$mode . '_unapproved'] + (int) $data[$mode . '_softdeleted'];
+ }
+
+ /**
* Create topic/post visibility SQL for a given forum ID
*
* Note: Read permissions are not checked.
diff --git a/phpBB/includes/functions_display.php b/phpBB/includes/functions_display.php
index 10f07bfbf1..ed91d9ad1c 100644
--- a/phpBB/includes/functions_display.php
+++ b/phpBB/includes/functions_display.php
@@ -200,8 +200,9 @@ function display_forums($root_data = '', $display_moderators = true, $return_mod
}
// Count the difference of real to public topics, so we can display an information to moderators
- $row['forum_id_unapproved_topics'] = ($auth->acl_get('m_approve', $forum_id) && ($row['forum_topics_real'] != $row['forum_topics'])) ? $forum_id : 0;
- $row['forum_topics'] = ($auth->acl_get('m_approve', $forum_id)) ? $row['forum_topics_real'] : $row['forum_topics'];
+ $row['forum_id_unapproved_topics'] = ($auth->acl_get('m_approve', $forum_id) && $row['forum_topics_unapproved']) ? $forum_id : 0;
+ $row['forum_posts'] = phpbb_content_visibility::get_count('forum_posts', $row, $forum_id);
+ $row['forum_topics'] = phpbb_content_visibility::get_count('forum_topics', $row, $forum_id);
// Display active topics from this forum?
if ($show_active && $row['forum_type'] == FORUM_POST && $auth->acl_get('f_read', $forum_id) && ($row['forum_flags'] & FORUM_FLAG_ACTIVE_TOPICS))