diff options
author | Nils Adermann <naderman@naderman.de> | 2014-05-02 15:54:10 +0200 |
---|---|---|
committer | Nils Adermann <naderman@naderman.de> | 2014-05-02 15:54:10 +0200 |
commit | 97e651a4917778bd4294073d254c8735b7b1f4df (patch) | |
tree | 6fb005f38a35a2ebd2388300df5f79312deb4865 /phpBB/viewtopic.php | |
parent | d52c2d1b5caf1382d178e55eff311ceddf4b392f (diff) | |
parent | d14aed0819f2314ab0da1787aa7228025a6a024c (diff) | |
download | forums-97e651a4917778bd4294073d254c8735b7b1f4df.tar forums-97e651a4917778bd4294073d254c8735b7b1f4df.tar.gz forums-97e651a4917778bd4294073d254c8735b7b1f4df.tar.bz2 forums-97e651a4917778bd4294073d254c8735b7b1f4df.tar.xz forums-97e651a4917778bd4294073d254c8735b7b1f4df.zip |
Merge remote-tracking branch 'github-exreaction/ticket/8323' into develop-ascraeus
* github-exreaction/ticket/8323:
[ticket/8323] Cache auth request
[ticket/8323] Combine into a single query
[ticket/8323] Comments on phpbb_get_banned_user_ids input for test
[ticket/8323] More readability in test case
[ticket/8323] Comments
[ticket/8323] dataProvider for the test; better test data
[ticket/8323] Comments
[ticket/8323] Unit test for phpbb_get_banned_user_ids
[ticket/8323] Comments for inactive reasons in constants.php
[ticket/8323] Only disable administrative deactivated accounts from receiving PMs
[ticket/8323] Allow temporarily banned users to receive PMs, but not a notification
[ticket/8323] Correct PM notification settings (only notify those who can receive them)
[ticket/8323] Cleanup viewtopic code (not sure how this mess happened)
[ticket/8323] Allow sending PMs to temporarily banned users
[ticket/8323] Do not allow sending PMs to Inactive users
[ticket/8323] Hide the Send PM link if users cannot receive the PM
[ticket/8323] Correcting the comment
[ticket/8323] Do not allow sending of Private Messages to users who are banned
[ticket/8323] Remove code used for testing
[ticket/8323] Do not allow sending of Private Messages to users who do not have permission to read private messages
Conflicts:
phpBB/language/en/ucp.php
Diffstat (limited to 'phpBB/viewtopic.php')
-rw-r--r-- | phpBB/viewtopic.php | 31 |
1 files changed, 30 insertions, 1 deletions
diff --git a/phpBB/viewtopic.php b/phpBB/viewtopic.php index 36d7533254..fc40dd65bb 100644 --- a/phpBB/viewtopic.php +++ b/phpBB/viewtopic.php @@ -16,6 +16,7 @@ $phpEx = substr(strrchr(__FILE__, '.'), 1); include($phpbb_root_path . 'common.' . $phpEx); include($phpbb_root_path . 'includes/functions_display.' . $phpEx); include($phpbb_root_path . 'includes/bbcode.' . $phpEx); +include($phpbb_root_path . 'includes/functions_user.' . $phpEx); // Start session management $user->session_begin(); @@ -1163,6 +1164,9 @@ while ($row = $db->sql_fetchrow($result)) $id_cache[] = $poster_id; $user_cache_data = array( + 'user_type' => $row['user_type'], + 'user_inactive_reason' => $row['user_inactive_reason'], + 'joined' => $user->format_date($row['user_regdate']), 'posts' => $row['user_posts'], 'warnings' => (isset($row['user_warnings'])) ? $row['user_warnings'] : 0, @@ -1374,6 +1378,13 @@ if ($bbcode_bitfield !== '') $bbcode = new bbcode(base64_encode($bbcode_bitfield)); } +// Get the list of users who can receive private messages +$can_receive_pm_list = $auth->acl_get_list(array_keys($user_cache), 'u_readpm'); +$can_receive_pm_list = (empty($can_receive_pm_list) || !isset($can_receive_pm_list[0]['u_readpm'])) ? array() : $can_receive_pm_list[0]['u_readpm']; + +// Get the list of permanently banned users +$permanently_banned_users = phpbb_get_banned_user_ids(array_keys($user_cache), false); + $i_total = sizeof($rowset) - 1; $prev_post_id = ''; @@ -1592,6 +1603,24 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i) !$row['post_edit_locked'] ))); + // Can this user receive a Private Message? + $can_receive_pm = ( + // They must be a "normal" user + $user_cache[$poster_id]['user_type'] != USER_IGNORE && + + // They must not be deactivated by the administrator + ($user_cache[$poster_id]['user_type'] != USER_INACTIVE && $user_cache[$poster_id]['user_inactive_reason'] == INACTIVE_MANUAL) && + + // They must be able to read PMs + in_array($poster_id, $can_receive_pm_list) && + + // They must not be permanently banned + !in_array($poster_id, $permanently_banned_users) && + + // They must allow users to contact via PM + (($auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_')) || $data['user_allow_pm']) + ); + // $post_row = array( 'POST_AUTHOR_FULL' => ($poster_id != ANONYMOUS) ? $user_cache[$poster_id]['author_full'] : get_username_string('full', $poster_id, $row['username'], $row['user_colour'], $row['post_username']), @@ -1631,7 +1660,7 @@ for ($i = 0, $end = sizeof($post_list); $i < $end; ++$i) 'U_DELETE' => ($delete_allowed) ? append_sid("{$phpbb_root_path}posting.$phpEx", "mode=delete&f=$forum_id&p={$row['post_id']}") : '', 'U_SEARCH' => $user_cache[$poster_id]['search'], - 'U_PM' => ($poster_id != ANONYMOUS && $config['allow_privmsg'] && $auth->acl_get('u_sendpm') && ($user_cache[$poster_id]['allow_pm'] || $auth->acl_gets('a_', 'm_') || $auth->acl_getf_global('m_'))) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=compose&action=quotepost&p=' . $row['post_id']) : '', + 'U_PM' => ($config['allow_privmsg'] && $auth->acl_get('u_sendpm') && $can_receive_pm) ? append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=compose&action=quotepost&p=' . $row['post_id']) : '', 'U_EMAIL' => $user_cache[$poster_id]['email'], 'U_JABBER' => $user_cache[$poster_id]['jabber'], |