diff options
author | Marc Alexander <admin@m-a-styles.de> | 2019-11-22 10:56:33 +0100 |
---|---|---|
committer | Marc Alexander <admin@m-a-styles.de> | 2019-11-22 10:56:33 +0100 |
commit | 896b31272b3687c0f869bf9fdc1b580e80d19514 (patch) | |
tree | 8b3e40d764590476810b3515f90f711b1887bc7a /phpBB/phpbb | |
parent | 2a023c9e15ffd03f07770adf6e8372d3b4e23057 (diff) | |
parent | 0a4cc5d2018dde19754f90b30ad49ff2718efc76 (diff) | |
download | forums-896b31272b3687c0f869bf9fdc1b580e80d19514.tar forums-896b31272b3687c0f869bf9fdc1b580e80d19514.tar.gz forums-896b31272b3687c0f869bf9fdc1b580e80d19514.tar.bz2 forums-896b31272b3687c0f869bf9fdc1b580e80d19514.tar.xz forums-896b31272b3687c0f869bf9fdc1b580e80d19514.zip |
Merge pull request #5686 from v12mike/ticket/9837
[ticket/9837] Display unapproved posts to their authors
Diffstat (limited to 'phpBB/phpbb')
-rw-r--r-- | phpBB/phpbb/content_visibility.php | 20 | ||||
-rw-r--r-- | phpBB/phpbb/db/migration/data/v330/add_display_unapproved_posts_config.php | 24 |
2 files changed, 41 insertions, 3 deletions
diff --git a/phpBB/phpbb/content_visibility.php b/phpBB/phpbb/content_visibility.php index 704ec6badb..fbc56f3db2 100644 --- a/phpBB/phpbb/content_visibility.php +++ b/phpBB/phpbb/content_visibility.php @@ -144,7 +144,14 @@ class content_visibility */ public function is_visible($mode, $forum_id, $data) { - $is_visible = $this->auth->acl_get('m_approve', $forum_id) || $data[$mode . '_visibility'] == ITEM_APPROVED; + $visibility = $data[$mode . '_visibility']; + $poster_key = ($mode === 'topic') ? 'topic_poster' : 'poster_id'; + $is_visible = ($visibility == ITEM_APPROVED) || + ($this->config['display_unapproved_posts'] && + ($this->user->data['user_id'] != ANONYMOUS) && + ($visibility == ITEM_UNAPPROVED || $visibility == ITEM_REAPPROVE) && + ($this->user->data['user_id'] == $data[$poster_key])) || + $this->auth->acl_get('m_approve', $forum_id); /** * Allow changing the result of calling is_visible @@ -216,9 +223,16 @@ class content_visibility } else { - $where_sql .= $table_alias . $mode . '_visibility = ' . ITEM_APPROVED; - } + $visibility_query = $table_alias . $mode . '_visibility = '; + $where_sql .= '(' . $visibility_query . ITEM_APPROVED . ')'; + if ($this->config['display_unapproved_posts'] && ($this->user->data['user_id'] != ANONYMOUS)) + { + $poster_key = ($mode === 'topic') ? 'topic_poster' : 'poster_id'; + $where_sql .= ' OR ((' . $visibility_query . ITEM_UNAPPROVED . ' OR ' . $visibility_query . ITEM_REAPPROVE .')'; + $where_sql .= ' AND ' . $table_alias . $poster_key . ' = ' . ((int) $this->user->data['user_id']) . ')'; + } + } return '(' . $where_sql . ')'; } diff --git a/phpBB/phpbb/db/migration/data/v330/add_display_unapproved_posts_config.php b/phpBB/phpbb/db/migration/data/v330/add_display_unapproved_posts_config.php new file mode 100644 index 0000000000..b429270827 --- /dev/null +++ b/phpBB/phpbb/db/migration/data/v330/add_display_unapproved_posts_config.php @@ -0,0 +1,24 @@ +<?php +/** +* +* This file is part of the phpBB Forum Software package. +* +* @copyright (c) phpBB Limited <https://www.phpbb.com> +* @license GNU General Public License, version 2 (GPL-2.0) +* +* For full copyright and license information, please see +* the docs/CREDITS.txt file. +* +*/ + +namespace phpbb\db\migration\data\v330; + +class add_display_unapproved_posts_config extends \phpbb\db\migration\migration +{ + public function update_data() + { + return [ + ['config.add', ['display_unapproved_posts', 1]], + ]; + } +} |