diff options
author | Joas Schilling <nickvergessen@gmx.de> | 2012-10-21 23:38:55 +0200 |
---|---|---|
committer | Joas Schilling <nickvergessen@gmx.de> | 2012-10-21 23:38:55 +0200 |
commit | 6c39563e9f7fad18f1425292dca652861f5e1cb6 (patch) | |
tree | dbfd7add9a1efe4d42295170aa88782db74d3de4 /phpBB/includes | |
parent | 2fafa5410770e62daf8ba0ffa46cc9ceeec61608 (diff) | |
download | forums-6c39563e9f7fad18f1425292dca652861f5e1cb6.tar forums-6c39563e9f7fad18f1425292dca652861f5e1cb6.tar.gz forums-6c39563e9f7fad18f1425292dca652861f5e1cb6.tar.bz2 forums-6c39563e9f7fad18f1425292dca652861f5e1cb6.tar.xz forums-6c39563e9f7fad18f1425292dca652861f5e1cb6.zip |
[feature/soft-delete] Add a function to calculate the actual post/topic count
PHPBB3-9567
Diffstat (limited to 'phpBB/includes')
-rw-r--r-- | phpBB/includes/content_visibility.php | 20 | ||||
-rw-r--r-- | phpBB/includes/functions_display.php | 5 |
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)) |