diff options
author | javiexin <javiexin@gmail.com> | 2017-07-12 13:25:22 +0200 |
---|---|---|
committer | Marc Alexander <admin@m-a-styles.de> | 2017-12-27 13:27:38 +0100 |
commit | bd81af3b9e3174d1ea2dbf405b694e535e8b1b40 (patch) | |
tree | 36a7797ae5d140a67f31e19e59a9613f5f97e61f /phpBB/phpbb/content_visibility.php | |
parent | 31b93280ee906f7ac4052540cffc210bf323f056 (diff) | |
download | forums-bd81af3b9e3174d1ea2dbf405b694e535e8b1b40.tar forums-bd81af3b9e3174d1ea2dbf405b694e535e8b1b40.tar.gz forums-bd81af3b9e3174d1ea2dbf405b694e535e8b1b40.tar.bz2 forums-bd81af3b9e3174d1ea2dbf405b694e535e8b1b40.tar.xz forums-bd81af3b9e3174d1ea2dbf405b694e535e8b1b40.zip |
[ticket/15266] Expand functionality of content_visibility
Added new function "is_visible", and replaced several immediate
uses of the above, including a single event in the new function
to handle change in all places consistently, and much simpler.
PHPBB3-15266
Diffstat (limited to 'phpBB/phpbb/content_visibility.php')
-rw-r--r-- | phpBB/phpbb/content_visibility.php | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/phpBB/phpbb/content_visibility.php b/phpBB/phpbb/content_visibility.php index 6abf8f996e..be552c7761 100644 --- a/phpBB/phpbb/content_visibility.php +++ b/phpBB/phpbb/content_visibility.php @@ -131,6 +131,42 @@ class content_visibility return (int) $data[$mode . '_approved'] + (int) $data[$mode . '_unapproved'] + (int) $data[$mode . '_softdeleted']; } + + /** + * Check topic/post visibility for a given forum ID + * + * Note: Read permissions are not checked. + * + * @param $mode string Either "topic" or "post" + * @param $forum_id int The forum id is used for permission checks + * @param $data array Array with item information to check visibility + * @return bool True if the item is visible, false if not + */ + public function is_visible($mode, $forum_id, $data) + { + $is_visible = $this->auth->acl_get('m_approve', $forum_id) || $data[$mode . '_visibility'] == ITEM_APPROVED; + + /** + * Allow changing the result of calling is_visible + * + * @event core.phpbb_content_visibility_is_visible + * @var bool is_visible Default visibility condition, to be modified by extensions if needed. + * @var string mode Either "topic" or "post" + * @var int forum_id Forum id of the current item + * @var array data Array of item information + * @since 3.1.12-RC1 + */ + $vars = array( + 'is_visible', + 'mode', + 'forum_id', + 'data', + ); + extract($this->phpbb_dispatcher->trigger_event('core.phpbb_content_visibility_is_visible', compact($vars))); + + return $is_visible; + } + /** * Create topic/post visibility SQL for a given forum ID * |