diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php index d24db82b09..8d1ed1f41d 100644 --- a/phpBB/includes/functions_privmsgs.php +++ b/phpBB/includes/functions_privmsgs.php @@ -696,7 +696,9 @@ function update_unread_status($unread, $msg_id, $user_id, $folder_id) $db->sql_query($sql); } -// Handle all actions possible with marked messages +/** +* Handle all actions possible with marked messages +*/ function handle_mark_actions($user_id, $mark_action) { global $db, $user, $_POST, $phpbb_root_path, $SID, $phpEx; @@ -936,13 +938,21 @@ function write_pm_addresses($check_ary, $author_id, $plaintext = false) foreach ($check_ary as $check_type => $address_field) { - // Split Addresses into users and groups - preg_match_all('/:?(u|g)_([0-9]+):?/', $address_field, $match); - - $u = $g = array(); - foreach ($match[1] as $id => $type) + if (!is_array($address_field)) { - ${$type}[] = (int) $match[2][$id]; + // Split Addresses into users and groups + preg_match_all('/:?(u|g)_([0-9]+):?/', $address_field, $match); + + $u = $g = array(); + foreach ($match[1] as $id => $type) + { + ${$type}[] = (int) $match[2][$id]; + } + } + else + { + $u = $address_field['u']; + $g = $address_field['g']; } $address = array(); @@ -991,7 +1001,7 @@ function write_pm_addresses($check_ary, $author_id, $plaintext = false) } else { - $sql = 'SELECT g.group_id, g.group_name, g.group_colour, ug.user_id + $sql = 'SELECT g.group_id, g.group_name, g.group_colour, g.group_type, ug.user_id FROM ' . GROUPS_TABLE . ' g, ' . USER_GROUP_TABLE . ' ug WHERE g.group_id IN (' . implode(', ', $g) . ') AND g.group_id = ug.group_id @@ -1004,6 +1014,7 @@ function write_pm_addresses($check_ary, $author_id, $plaintext = false) { if ($check_type == 'to' || $author_id == $user->data['user_id'] || $row['user_id'] == $user->data['user_id']) { + $row['group_name'] = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['group_name']] : $row['group_name']; $address['group'][$row['group_id']] = array('name' => $row['group_name'], 'colour' => $row['group_colour']); } } @@ -1031,7 +1042,8 @@ function write_pm_addresses($check_ary, $author_id, $plaintext = false) 'IS_USER' => ($type == 'user'), 'COLOUR' => ($row['colour']) ? $row['colour'] : '', 'UG_ID' => $id, - 'U_VIEW' => ($type == 'user') ? "{$phpbb_root_path}memberlist.$phpEx$SID&mode=viewprofile&u=" . $id : "{$phpbb_root_path}memberlist.$phpEx$SID&mode=group&g=" . $id) + 'U_VIEW' => ($type == 'user') ? "{$phpbb_root_path}memberlist.$phpEx$SID&mode=viewprofile&u=" . $id : "{$phpbb_root_path}memberlist.$phpEx$SID&mode=group&g=" . $id, + 'TYPE' => $type) ); } } diff --git a/phpBB/includes/ucp/ucp_pm_compose.php b/phpBB/includes/ucp/ucp_pm_compose.php index ffe668d056..45cd22a13c 100644 --- a/phpBB/includes/ucp/ucp_pm_compose.php +++ b/phpBB/includes/ucp/ucp_pm_compose.php @@ -632,18 +632,21 @@ function compose_pm($id, $mode, $action) { // Get Usernames and Group Names $result = array(); - if (isset($address_list['u']) && sizeof($address_list['u'])) + if (!empty($address_list['u'])) { - $result['u'] = $db->sql_query('SELECT user_id as id, username as name, user_colour as colour + $sql = 'SELECT user_id as id, username as name, user_colour as colour FROM ' . USERS_TABLE . ' - WHERE user_id IN (' . implode(', ', array_map('intval', array_keys($address_list['u']))) . ')'); + WHERE user_id IN (' . implode(', ', array_map('intval', array_keys($address_list['u']))) . ')'; + $result['u'] = $db->sql_query($sql); } - if (isset($address_list['g']) && sizeof($address_list['g'])) + if (!empty($address_list['g'])) { - $result['g'] = $db->sql_query('SELECT group_id as id, group_name as name, group_colour as colour + $sql = 'SELECT group_id as id, group_name as name, group_colour as colour, group_type FROM ' . GROUPS_TABLE . ' - WHERE group_receive_pm = 1 AND group_id IN (' . implode(', ', array_map('intval', array_keys($address_list['g']))) . ')'); + WHERE group_receive_pm = 1 + AND group_id IN (' . implode(', ', array_map('intval', array_keys($address_list['g']))) . ')'; + $result['g'] = $db->sql_query($sql); } $u = $g = array(); @@ -654,6 +657,11 @@ function compose_pm($id, $mode, $action) { while ($row = $db->sql_fetchrow($result[$type])) { + if ($type == 'g') + { + $row['name'] = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['name']] : $row['name']; + } + ${$type}[$row['id']] = array('name' => $row['name'], 'colour' => $row['colour']); } $db->sql_freeresult($result[$type]); @@ -834,7 +842,7 @@ function handle_message_list_actions(&$address_list, $remove_u, $remove_g, $add_ $type = ($add_to) ? 'to' : 'bcc'; // Add Selected Groups - $group_list = isset($_REQUEST['group_list']) ? array_map('intval', $_REQUEST['group_list']) : array(); + $group_list = request_var('group_list', array(0)); if (sizeof($group_list)) { diff --git a/phpBB/includes/ucp/ucp_pm_viewfolder.php b/phpBB/includes/ucp/ucp_pm_viewfolder.php index dbc02d2a4a..44aecd762b 100644 --- a/phpBB/includes/ucp/ucp_pm_viewfolder.php +++ b/phpBB/includes/ucp/ucp_pm_viewfolder.php @@ -85,10 +85,13 @@ function view_folder($id, $mode, $folder_id, $folder) // Okay, lets dump out the page ... if (sizeof($folder_info['pm_list'])) { + $address_list = array(); + // Build Recipient List if in outbox/sentbox - max two additional queries - $recipient_list = $address_list = $address = array(); if ($folder_id == PRIVMSGS_OUTBOX || $folder_id == PRIVMSGS_SENTBOX) { + $recipient_list = $address = array(); + foreach ($folder_info['rowset'] as $message_id => $row) { $address[$message_id] = rebuild_header(array('to' => $row['to_address'], 'bcc' => $row['bcc_address'])); @@ -108,15 +111,31 @@ function view_folder($id, $mode, $folder_id, $folder) $_types = array('u', 'g'); foreach ($_types as $ug_type) { - if (isset($recipient_list[$ug_type]) && sizeof($recipient_list[$ug_type])) + if (!empty($recipient_list[$ug_type])) { - $sql = ($ug_type == 'u') ? 'SELECT user_id as id, username as name, user_colour as colour FROM ' . USERS_TABLE . ' WHERE user_id' : 'SELECT group_id as id, group_name as name, group_colour as colour FROM ' . GROUPS_TABLE . ' WHERE group_id'; + if ($ug_type == 'u') + { + $sql = 'SELECT user_id as id, username as name, user_colour as colour + FROM ' . USERS_TABLE . ' + WHERE user_id'; + } + else + { + $sql = 'SELECT group_id as id, group_name as name, group_colour as colour, group_type + FROM ' . GROUPS_TABLE . ' + WHERE group_id'; + } $sql .= ' IN (' . implode(', ', array_keys($recipient_list[$ug_type])) . ')'; $result = $db->sql_query($sql); while ($row = $db->sql_fetchrow($result)) { + if ($ug_type == 'g') + { + $row['name'] = ($row['group_type'] == GROUP_SPECIAL) ? $user->lang['G_' . $row['name']] : $row['name']; + } + $recipient_list[$ug_type][$row['id']] = array('name' => $row['name'], 'colour' => $row['colour']); } $db->sql_freeresult($result); @@ -133,7 +152,6 @@ function view_folder($id, $mode, $folder_id, $folder) } } } - unset($recipient_list, $address); } diff --git a/phpBB/includes/ucp/ucp_pm_viewmessage.php b/phpBB/includes/ucp/ucp_pm_viewmessage.php index e12732b84b..b46aff5eba 100644 --- a/phpBB/includes/ucp/ucp_pm_viewmessage.php +++ b/phpBB/includes/ucp/ucp_pm_viewmessage.php @@ -345,11 +345,11 @@ function message_history($msg_id, $user_id, $message_row, $folder) 'S_CURRENT_MSG' => ($row['msg_id'] == $msg_id), - 'U_MSG_ID' => $row['msg_id'], - 'U_VIEW_MESSAGE'=> "$url&f=$folder_id&p=" . $row['msg_id'], - 'U_AUTHOR_PROFILE' => "{$phpbb_root_path}memberlist.$phpEx$SID&mode=viewprofile&u=$author_id", - 'U_QUOTE' => ($auth->acl_get('u_sendpm') && $author_id != $user->data['user_id']) ? "$url&mode=compose&action=quote&f=" . $folder_id . "&p=" . $row['msg_id'] : '', - 'U_POST_REPLY_PM' => ($author_id != $user->data['user_id'] && $auth->acl_get('u_sendpm')) ? "$url&mode=compose&action=reply&f=$folder_id&p=" . $row['msg_id'] : '') + 'U_MSG_ID' => $row['msg_id'], + 'U_VIEW_MESSAGE' => "$url&f=$folder_id&p=" . $row['msg_id'], + 'U_AUTHOR_PROFILE' => "{$phpbb_root_path}memberlist.$phpEx$SID&mode=viewprofile&u=$author_id", + 'U_QUOTE' => ($auth->acl_get('u_sendpm') && $author_id != $user->data['user_id']) ? "$url&mode=compose&action=quote&f=" . $folder_id . "&p=" . $row['msg_id'] : '', + 'U_POST_REPLY_PM' => ($author_id != $user->data['user_id'] && $auth->acl_get('u_sendpm')) ? "$url&mode=compose&action=reply&f=$folder_id&p=" . $row['msg_id'] : '') ); unset($rowset[$id]); $prev_id = $id;