mirror of
https://github.com/phpbb/phpbb.git
synced 2025-06-10 13:28:55 +00:00
- Automatically add users/groups to the PM recipient list, if entered or selected.
- Reply to PM now includes all previous recipients and not only the original sender. +some changes required to implement max_recipient feature and new permission git-svn-id: file:///svn/phpbb/branches/phpBB-3_0_0@8913 89ea8834-ac86-4346-8a33-228a782c2dd0
This commit is contained in:
parent
9bb0d6e76d
commit
c5b88e8481
2 changed files with 92 additions and 24 deletions
|
@ -133,6 +133,8 @@
|
|||
<li>[Change] Allow setting birth year to current year.</li>
|
||||
<li>[Change] Do not use the topics posted table when performing an egosearch.</li>
|
||||
<li>[Change] Log the forum name that topics are moved into.</li>
|
||||
<li>[Change] Automatically add users/groups to the PM recipient list, if entered or selected.</li>
|
||||
<li>[Change] Reply to PM now includes all previous recipients and not only the original sender.</li>
|
||||
|
||||
<li>[Feature] Allow limited inheritance for template sets.</li>
|
||||
<li>[Feature] Allow hard disabling of the template editor.</li>
|
||||
|
@ -140,6 +142,8 @@
|
|||
<li>[Feature] Ability to define nullar/singular/plural language entries</li>
|
||||
<li>[Feature] Ability to mimic sprintf() calls with $user->lang() with the ability to correctly assign nullar/singular/plural language entries.</li>
|
||||
<li>[Feature] Added the possibility to force user posts put in queue if post count is lower than an admin defined value. Guest posting is not affected by this setting.</li>
|
||||
<li>[Feature] Added 'max_recipients' setting for private messages. This setting allows admins to define the maximum number of recipients per private message with a board-wide setting and a group-specific setting.</li>
|
||||
<li>[Feature] Added new permission setting for sending private messages to groups. Now there are two permissions to define sending private messages to multiple recipients and private messages to groups.</li>
|
||||
</ul>
|
||||
|
||||
<a name="v301"></a><h3>1.ii. Changes since 3.0.1</h3>
|
||||
|
|
|
@ -45,6 +45,11 @@ function compose_pm($id, $mode, $action)
|
|||
// Do NOT use request_var or specialchars here
|
||||
$address_list = isset($_REQUEST['address_list']) ? $_REQUEST['address_list'] : array();
|
||||
|
||||
if (!is_array($address_list))
|
||||
{
|
||||
$address_list = array();
|
||||
}
|
||||
|
||||
$submit = (isset($_POST['post'])) ? true : false;
|
||||
$preview = (isset($_POST['preview'])) ? true : false;
|
||||
$save = (isset($_POST['save'])) ? true : false;
|
||||
|
@ -79,7 +84,8 @@ function compose_pm($id, $mode, $action)
|
|||
// Output PM_TO box if message composing
|
||||
if ($action != 'edit')
|
||||
{
|
||||
if ($config['allow_mass_pm'] && $auth->acl_get('u_masspm'))
|
||||
// Add groups to PM box
|
||||
if ($config['allow_mass_pm'] && $auth->acl_get('u_masspm_group'))
|
||||
{
|
||||
$sql = 'SELECT g.group_id, g.group_name, g.group_type
|
||||
FROM ' . GROUPS_TABLE . ' g';
|
||||
|
@ -112,7 +118,7 @@ function compose_pm($id, $mode, $action)
|
|||
$template->assign_vars(array(
|
||||
'S_SHOW_PM_BOX' => true,
|
||||
'S_ALLOW_MASS_PM' => ($config['allow_mass_pm'] && $auth->acl_get('u_masspm')) ? true : false,
|
||||
'S_GROUP_OPTIONS' => ($config['allow_mass_pm'] && $auth->acl_get('u_masspm')) ? $group_options : '',
|
||||
'S_GROUP_OPTIONS' => ($config['allow_mass_pm'] && $auth->acl_get('u_masspm_group')) ? $group_options : '',
|
||||
'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", "mode=searchuser&form=postform&field=username_list&select_single=$select_single"),
|
||||
));
|
||||
}
|
||||
|
@ -281,7 +287,24 @@ function compose_pm($id, $mode, $action)
|
|||
|
||||
if (($action == 'reply' || $action == 'quote' || $action == 'quotepost') && !sizeof($address_list) && !$refresh && !$submit && !$preview)
|
||||
{
|
||||
$address_list = array('u' => array($post['author_id'] => 'to'));
|
||||
if ($action == 'quotepost')
|
||||
{
|
||||
$address_list = array('u' => array($post['author_id'] => 'to'));
|
||||
}
|
||||
else
|
||||
{
|
||||
// We try to include every previously listed member from the TO Header
|
||||
$address_list = rebuild_header(array('to' => $post['to_address']));
|
||||
|
||||
// Add the author (if he is already listed then this is no shame (it will be overwritten))
|
||||
$address_list['u'][$post['author_id']] = 'to';
|
||||
|
||||
// Now, make sure the user itself is not listed. ;)
|
||||
if (isset($address_list['u'][$user->data['user_id']]))
|
||||
{
|
||||
unset($address_list['u'][$user->data['user_id']]);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if ($action == 'edit' && !sizeof($address_list) && !$refresh && !$submit && !$preview)
|
||||
{
|
||||
|
@ -315,7 +338,7 @@ function compose_pm($id, $mode, $action)
|
|||
$check_value = 0;
|
||||
}
|
||||
|
||||
if (($to_group_id || isset($address_list['g'])) && (!$config['allow_mass_pm'] || !$auth->acl_get('u_masspm')))
|
||||
if (($to_group_id || isset($address_list['g'])) && (!$config['allow_mass_pm'] || !$auth->acl_get('u_masspm_group')))
|
||||
{
|
||||
trigger_error('NO_AUTH_GROUP_MESSAGE');
|
||||
}
|
||||
|
@ -380,14 +403,43 @@ function compose_pm($id, $mode, $action)
|
|||
redirect(append_sid("{$phpbb_root_path}ucp.$phpEx", 'i=pm&mode=view&action=view_message&p=' . $msg_id));
|
||||
}
|
||||
|
||||
// Get maximum number of allowed recipients
|
||||
$sql = 'SELECT MAX(g.group_max_recipients) as max_recipients
|
||||
FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug
|
||||
WHERE ug.user_id = ' . $user->data['user_id'] . '
|
||||
AND ug.user_pending = 0
|
||||
AND ug.group_id = g.group_id';
|
||||
$result = $db->sql_query($sql);
|
||||
$max_recipients = (int) $db->sql_fetchfield('max_recipients');
|
||||
$db->sql_freeresult($result);
|
||||
|
||||
$max_recipients = (!$max_recipients) ? $config['pm_max_recipients'] : $max_recipients;
|
||||
|
||||
// Damn php and globals - i know, this is horrible
|
||||
global $refresh, $submit, $preview;
|
||||
|
||||
// Handle User/Group adding/removing
|
||||
handle_message_list_actions($address_list, $error, $remove_u, $remove_g, $add_to, $add_bcc);
|
||||
|
||||
// Check for too many recipients
|
||||
// Check mass pm to group permission
|
||||
if ((!$config['allow_mass_pm'] || !$auth->acl_get('u_masspm_group')) && !empty($address_list['g']))
|
||||
{
|
||||
$address_list = array();
|
||||
$error[] = $user->lang['NO_AUTH_GROUP_MESSAGE'];
|
||||
}
|
||||
|
||||
// Check mass pm to users permission
|
||||
if ((!$config['allow_mass_pm'] || !$auth->acl_get('u_masspm')) && num_recipients($address_list) > 1)
|
||||
{
|
||||
$address_list = get_recipient_pos($address_list, 1);
|
||||
$error[] = $user->lang['TOO_MANY_RECIPIENTS'];
|
||||
$address_list = get_recipients($address_list, 1);
|
||||
$error[] = $user->lang('TOO_MANY_RECIPIENTS', 1);
|
||||
}
|
||||
|
||||
// Check for too many recipients
|
||||
if (!empty($address_list['u']) && $max_recipients && sizeof($address_list['u']) > $max_recipients)
|
||||
{
|
||||
$address_list = get_recipients($address_list, $max_recipients);
|
||||
$error[] = $user->lang('TOO_MANY_RECIPIENTS', $max_recipients);
|
||||
}
|
||||
|
||||
// Always check if the submitted attachment data is valid and belongs to the user.
|
||||
|
@ -949,6 +1001,7 @@ function compose_pm($id, $mode, $action)
|
|||
'URL_STATUS' => ($url_status) ? $user->lang['URL_IS_ON'] : $user->lang['URL_IS_OFF'],
|
||||
'MINI_POST_IMG' => $user->img('icon_post_target', $user->lang['PM']),
|
||||
'ERROR' => (sizeof($error)) ? implode('<br />', $error) : '',
|
||||
'MAX_RECIPIENTS' => ($config['allow_mass_pm'] && ($auth->acl_get('u_masspm') || $auth->acl_get('u_masspm_group'))) ? $max_recipients : 0,
|
||||
|
||||
'S_COMPOSE_PM' => true,
|
||||
'S_EDIT_POST' => ($action == 'edit'),
|
||||
|
@ -1027,14 +1080,33 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove
|
|||
}
|
||||
}
|
||||
|
||||
// Add Selected Groups
|
||||
$group_list = request_var('group_list', array(0));
|
||||
|
||||
// Build usernames to add
|
||||
$usernames = (isset($_REQUEST['username'])) ? array(request_var('username', '', true)) : array();
|
||||
$username_list = request_var('username_list', '', true);
|
||||
if ($username_list)
|
||||
{
|
||||
$usernames = array_merge($usernames, explode("\n", $username_list));
|
||||
}
|
||||
|
||||
// If add to or add bcc not pressed, users could still have usernames listed they want to add...
|
||||
if (!$add_to && !$add_bcc && (sizeof($group_list) || sizeof($usernames)))
|
||||
{
|
||||
$add_to = true;
|
||||
|
||||
global $refresh, $submit, $preview;
|
||||
|
||||
$refresh = $preview = true;
|
||||
$submit = false;
|
||||
}
|
||||
|
||||
// Add User/Group [TO]
|
||||
if ($add_to || $add_bcc)
|
||||
{
|
||||
$type = ($add_to) ? 'to' : 'bcc';
|
||||
|
||||
// Add Selected Groups
|
||||
$group_list = request_var('group_list', array(0));
|
||||
|
||||
if (sizeof($group_list))
|
||||
{
|
||||
foreach ($group_list as $group_id)
|
||||
|
@ -1046,14 +1118,6 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove
|
|||
// User ID's to add...
|
||||
$user_id_ary = array();
|
||||
|
||||
// Build usernames to add
|
||||
$usernames = (isset($_REQUEST['username'])) ? array(request_var('username', '', true)) : array();
|
||||
$username_list = request_var('username_list', '', true);
|
||||
if ($username_list)
|
||||
{
|
||||
$usernames = array_merge($usernames, explode("\n", $username_list));
|
||||
}
|
||||
|
||||
// Reveal the correct user_ids
|
||||
if (sizeof($usernames))
|
||||
{
|
||||
|
@ -1068,7 +1132,7 @@ function handle_message_list_actions(&$address_list, &$error, $remove_u, $remove
|
|||
}
|
||||
|
||||
// Add Friends if specified
|
||||
$friend_list = (is_array($_REQUEST['add_' . $type])) ? array_map('intval', array_keys($_REQUEST['add_' . $type])) : array();
|
||||
$friend_list = (isset($_REQUEST['add_' . $type]) && is_array($_REQUEST['add_' . $type])) ? array_map('intval', array_keys($_REQUEST['add_' . $type])) : array();
|
||||
$user_id_ary = array_merge($user_id_ary, $friend_list);
|
||||
|
||||
foreach ($user_id_ary as $user_id)
|
||||
|
@ -1144,22 +1208,22 @@ function num_recipients($address_list)
|
|||
}
|
||||
|
||||
/**
|
||||
* Get recipient at position 'pos'
|
||||
* Get number of 'num_recipients' recipients from first position
|
||||
*/
|
||||
function get_recipient_pos($address_list, $position = 1)
|
||||
function get_recipients($address_list, $num_recipients = 1)
|
||||
{
|
||||
$recipient = array();
|
||||
|
||||
$count = 1;
|
||||
$count = 0;
|
||||
foreach ($address_list as $field => $adr_ary)
|
||||
{
|
||||
foreach ($adr_ary as $id => $type)
|
||||
{
|
||||
if ($count == $position)
|
||||
if ($count >= $num_recipients)
|
||||
{
|
||||
$recipient[$field][$id] = $type;
|
||||
break 2;
|
||||
}
|
||||
$recipient[$field][$id] = $type;
|
||||
$count++;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue