aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb/content_visibility.php
diff options
context:
space:
mode:
authorjaviexin <javiexin@gmail.com>2017-07-12 13:25:22 +0200
committerMarc Alexander <admin@m-a-styles.de>2017-12-27 13:27:38 +0100
commitbd81af3b9e3174d1ea2dbf405b694e535e8b1b40 (patch)
tree36a7797ae5d140a67f31e19e59a9613f5f97e61f /phpBB/phpbb/content_visibility.php
parent31b93280ee906f7ac4052540cffc210bf323f056 (diff)
downloadforums-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.php36
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
*