aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/phpbb
diff options
context:
space:
mode:
authorJoas Schilling <nickvergessen@gmx.de>2015-01-10 12:29:48 +0100
committerJoas Schilling <nickvergessen@gmx.de>2015-01-10 12:29:48 +0100
commitbf59d8dd746578dac4f239cbbce5885acfadaefd (patch)
tree515213e6ae2fba51bf2a87f1bc3a621e06f5c5a6 /phpBB/phpbb
parent8ae1b0c52e21d105d1f35b5174081423b7c17bc4 (diff)
parentcea35c486c7b5307bb683c0f2ce8f426357d6ff2 (diff)
downloadforums-bf59d8dd746578dac4f239cbbce5885acfadaefd.tar
forums-bf59d8dd746578dac4f239cbbce5885acfadaefd.tar.gz
forums-bf59d8dd746578dac4f239cbbce5885acfadaefd.tar.bz2
forums-bf59d8dd746578dac4f239cbbce5885acfadaefd.tar.xz
forums-bf59d8dd746578dac4f239cbbce5885acfadaefd.zip
Merge pull request #3209 from brunoais/ticket/13146
[ticket/13146] Allow changing the result of calling get_forums_visibility_sql
Diffstat (limited to 'phpBB/phpbb')
-rw-r--r--phpBB/phpbb/content_visibility.php40
1 files changed, 39 insertions, 1 deletions
diff --git a/phpBB/phpbb/content_visibility.php b/phpBB/phpbb/content_visibility.php
index 8bd537586e..de0e389dd1 100644
--- a/phpBB/phpbb/content_visibility.php
+++ b/phpBB/phpbb/content_visibility.php
@@ -44,6 +44,12 @@ class content_visibility
protected $config;
/**
+ * Event dispatcher object
+ * @var \phpbb\event\dispatcher
+ */
+ protected $phpbb_dispatcher;
+
+ /**
* phpBB root path
* @var string
*/
@@ -60,6 +66,7 @@ class content_visibility
*
* @param \phpbb\auth\auth $auth Auth object
* @param \phpbb\config\config $config Config object
+ * @param \phpbb\event\dispatcher $phpbb_dispatcher Event dispatcher object
* @param \phpbb\db\driver\driver_interface $db Database object
* @param \phpbb\user $user User object
* @param string $phpbb_root_path Root path
@@ -69,10 +76,11 @@ class content_visibility
* @param string $topics_table Topics table name
* @param string $users_table Users table name
*/
- public function __construct(\phpbb\auth\auth $auth, \phpbb\config\config $config, \phpbb\db\driver\driver_interface $db, \phpbb\user $user, $phpbb_root_path, $php_ext, $forums_table, $posts_table, $topics_table, $users_table)
+ public function __construct(\phpbb\auth\auth $auth, \phpbb\config\config $config, \phpbb\event\dispatcher $phpbb_dispatcher, \phpbb\db\driver\driver_interface $db, \phpbb\user $user, $phpbb_root_path, $php_ext, $forums_table, $posts_table, $topics_table, $users_table)
{
$this->auth = $auth;
$this->config = $config;
+ $this->phpbb_dispatcher = $phpbb_dispatcher;
$this->db = $db;
$this->user = $user;
$this->phpbb_root_path = $phpbb_root_path;
@@ -160,6 +168,36 @@ class content_visibility
$approve_forums = array_intersect($forum_ids, array_keys($this->auth->acl_getf('m_approve', true)));
+ $get_forums_visibility_sql_overwrite = false;
+ /**
+ * Allow changing the result of calling get_forums_visibility_sql
+ *
+ * @event core.phpbb_content_visibility_get_forums_visibility_before
+ * @var string where_sql The action the user tried to execute
+ * @var string mode Either "topic" or "post" depending on the query this is being used in
+ * @var array forum_ids Array of forum ids which the posts/topics are limited to
+ * @var string table_alias Table alias to prefix in SQL queries
+ * @var array approve_forums Array of forums where the user has m_approve permissions
+ * @var mixed get_forums_visibility_sql_overwrite If a string, forces the function to return get_forums_visibility_sql_overwrite after executing the event
+ * If false, get_forums_visibility_sql continues normally
+ * It must be either boolean or string
+ * @since 3.1.3-RC1
+ */
+ $vars = array(
+ 'where_sql',
+ 'mode',
+ 'forum_ids',
+ 'table_alias',
+ 'approve_forums',
+ 'get_forums_visibility_sql_overwrite',
+ );
+ extract($this->phpbb_dispatcher->trigger_event('core.phpbb_content_visibility_get_forums_visibility_before', compact($vars)));
+
+ if ($get_forums_visibility_sql_overwrite !== false)
+ {
+ return $get_forums_visibility_sql_overwrite;
+ }
+
if (sizeof($approve_forums))
{
// Remove moderator forums from the rest