aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/acp/acp_board.php1
-rw-r--r--phpBB/includes/functions_privmsgs.php92
-rw-r--r--phpBB/includes/mcp/info/mcp_pm_reports.php39
-rw-r--r--phpBB/includes/mcp/mcp_front.php92
-rw-r--r--phpBB/includes/mcp/mcp_pm_reports.php323
-rw-r--r--phpBB/includes/mcp/mcp_reports.php170
-rw-r--r--phpBB/includes/ucp/ucp_pm_viewfolder.php73
-rw-r--r--phpBB/includes/ucp/ucp_pm_viewmessage.php2
8 files changed, 667 insertions, 125 deletions
diff --git a/phpBB/includes/acp/acp_board.php b/phpBB/includes/acp/acp_board.php
index 5966d5a4b2..3a2ad6f89a 100644
--- a/phpBB/includes/acp/acp_board.php
+++ b/phpBB/includes/acp/acp_board.php
@@ -81,6 +81,7 @@ class acp_board
'allow_namechange' => array('lang' => 'ALLOW_NAME_CHANGE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'allow_attachments' => array('lang' => 'ALLOW_ATTACHMENTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'allow_pm_attach' => array('lang' => 'ALLOW_PM_ATTACHMENTS', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
+ 'allow_pm_report' => array('lang' => 'ALLOW_PM_REPORT', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'allow_bbcode' => array('lang' => 'ALLOW_BBCODE', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'allow_smilies' => array('lang' => 'ALLOW_SMILIES', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
'allow_sig' => array('lang' => 'ALLOW_SIG', 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => false),
diff --git a/phpBB/includes/functions_privmsgs.php b/phpBB/includes/functions_privmsgs.php
index 8851b53680..883d8ff13f 100644
--- a/phpBB/includes/functions_privmsgs.php
+++ b/phpBB/includes/functions_privmsgs.php
@@ -1405,7 +1405,8 @@ function submit_pm($mode, $subject, &$data, $put_in_outbox = true)
'bbcode_bitfield' => $data['bbcode_bitfield'],
'bbcode_uid' => $data['bbcode_uid'],
'to_address' => implode(':', $to),
- 'bcc_address' => implode(':', $bcc)
+ 'bcc_address' => implode(':', $bcc),
+ 'message_reported' => 0,
);
break;
@@ -1880,4 +1881,93 @@ function set_user_message_limit()
$user->data['message_limit'] = (!$message_limit) ? $config['pm_max_msgs'] : $message_limit;
}
+/**
+* Generates an array of coloured recipient names from a list of PMs - (groups & users)
+*
+* @param array $pm_by_id An array of rows from PRIVMSGS_TABLE, keys are the msg_ids.
+*
+* @return array 2D Array: array(msg_id => array('username or group string', ...), ...)
+* Usernames are generated with {@link get_username_string get_username_string}
+* Groups are coloured and have a link to the membership page
+*/
+function get_recipient_strings($pm_by_id)
+{
+ global $user, $db;
+
+ $address_list = $recipient_list = $address = array();
+
+ $_types = array('u', 'g');
+
+ foreach ($pm_by_id as $message_id => $row)
+ {
+ $address[$message_id] = rebuild_header(array('to' => $row['to_address'], 'bcc' => $row['bcc_address']));
+
+ foreach ($_types as $ug_type)
+ {
+ if (isset($address[$message_id][$ug_type]) && sizeof($address[$message_id][$ug_type]))
+ {
+ foreach ($address[$message_id][$ug_type] as $ug_id => $in_to)
+ {
+ $recipient_list[$ug_type][$ug_id] = array('name' => $user->lang['NA'], 'colour' => '');
+ }
+ }
+ }
+ }
+
+ foreach ($_types as $ug_type)
+ {
+ if (!empty($recipient_list[$ug_type]))
+ {
+ if ($ug_type == 'u')
+ {
+ $sql = 'SELECT user_id as id, username as name, user_colour as colour
+ FROM ' . USERS_TABLE . '
+ WHERE ';
+ }
+ else
+ {
+ $sql = 'SELECT group_id as id, group_name as name, group_colour as colour, group_type
+ FROM ' . GROUPS_TABLE . '
+ WHERE ';
+ }
+ $sql .= $db->sql_in_set(($ug_type == 'u') ? 'user_id' : 'group_id', array_map('intval', 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);
+ }
+ }
+
+ foreach ($address as $message_id => $adr_ary)
+ {
+ foreach ($adr_ary as $type => $id_ary)
+ {
+ foreach ($id_ary as $ug_id => $_id)
+ {
+ if ($type == 'u')
+ {
+ $address_list[$message_id][] = get_username_string('full', $ug_id, $recipient_list[$type][$ug_id]['name'], $recipient_list[$type][$ug_id]['colour']);
+ }
+ else
+ {
+ $user_colour = ($recipient_list[$type][$ug_id]['colour']) ? ' style="font-weight: bold; color:#' . $recipient_list[$type][$ug_id]['colour'] . '"' : '';
+ $link = '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;g=' . $ug_id) . '"' . $user_colour . '>';
+ $address_list[$message_id][] = $link . $recipient_list[$type][$ug_id]['name'] . (($link) ? '</a>' : '');
+ }
+ }
+ }
+ }
+
+ return $address_list;
+}
+
?> \ No newline at end of file
diff --git a/phpBB/includes/mcp/info/mcp_pm_reports.php b/phpBB/includes/mcp/info/mcp_pm_reports.php
new file mode 100644
index 0000000000..103f560597
--- /dev/null
+++ b/phpBB/includes/mcp/info/mcp_pm_reports.php
@@ -0,0 +1,39 @@
+<?php
+/**
+*
+* @package mcp
+* @version $Id$
+* @copyright (c) 2005 phpBB Group
+* @license http://opensource.org/licenses/gpl-license.php GNU Public License
+*
+*/
+
+/**
+* @package module_install
+*/
+class mcp_pm_reports_info
+{
+ function module()
+ {
+ return array(
+ 'filename' => 'mcp_pm_reports',
+ 'title' => 'MCP_PM_REPORTS',
+ 'version' => '1.0.0',
+ 'modes' => array(
+ 'pm_reports' => array('title' => 'MCP_PM_REPORTS_OPEN', 'auth' => 'aclf_m_report', 'cat' => array('MCP_REPORTS')),
+ 'pm_reports_closed' => array('title' => 'MCP_PM_REPORTS_CLOSED', 'auth' => 'aclf_m_report', 'cat' => array('MCP_REPORTS')),
+ 'pm_report_details' => array('title' => 'MCP_PM_REPORT_DETAILS', 'auth' => 'aclf_m_report', 'cat' => array('MCP_REPORTS')),
+ ),
+ );
+ }
+
+ function install()
+ {
+ }
+
+ function uninstall()
+ {
+ }
+}
+
+?> \ No newline at end of file
diff --git a/phpBB/includes/mcp/mcp_front.php b/phpBB/includes/mcp/mcp_front.php
index 05c1b796ac..ee75c1daff 100644
--- a/phpBB/includes/mcp/mcp_front.php
+++ b/phpBB/includes/mcp/mcp_front.php
@@ -152,6 +152,7 @@ function mcp_front_view($id, $mode, $action)
$sql = 'SELECT COUNT(r.report_id) AS total
FROM ' . REPORTS_TABLE . ' r, ' . POSTS_TABLE . ' p
WHERE r.post_id = p.post_id
+ AND r.pm_id = 0
AND r.report_closed = 0
AND p.forum_id IN (0, ' . implode(', ', $forum_list) . ')';
$result = $db->sql_query($sql);
@@ -181,6 +182,7 @@ function mcp_front_view($id, $mode, $action)
),
'WHERE' => 'r.post_id = p.post_id
+ AND r.pm_id = 0
AND r.report_closed = 0
AND r.reason_id = rr.reason_id
AND p.topic_id = t.topic_id
@@ -243,6 +245,96 @@ function mcp_front_view($id, $mode, $action)
}
}
+ // Latest 5 reported PMs
+ if ($module->loaded('pm_reports') && $auth->acl_getf_global('m_report'))
+ {
+ $template->assign_var('S_SHOW_PM_REPORTS', true);
+
+ $sql = 'SELECT COUNT(r.report_id) AS total
+ FROM ' . REPORTS_TABLE . ' r, ' . PRIVMSGS_TABLE . ' p
+ WHERE r.post_id = 0
+ AND r.pm_id = p.msg_id
+ AND r.report_closed = 0';
+ $result = $db->sql_query($sql);
+ $total = (int) $db->sql_fetchfield('total');
+ $db->sql_freeresult($result);
+
+ if ($total)
+ {
+ include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
+ $user->add_lang(array('ucp'));
+
+ $sql = $db->sql_build_query('SELECT', array(
+ 'SELECT' => 'r.report_id, r.report_time, p.msg_id, p.message_subject, p.message_time, p.to_address, p.bcc_address, u.username, u.username_clean, u.user_colour, u.user_id, u2.username as author_name, u2.username_clean as author_name_clean, u2.user_colour as author_colour, u2.user_id as author_id',
+
+ 'FROM' => array(
+ REPORTS_TABLE => 'r',
+ REPORTS_REASONS_TABLE => 'rr',
+ USERS_TABLE => array('u', 'u2'),
+ PRIVMSGS_TABLE => 'p'
+ ),
+
+ 'WHERE' => 'r.pm_id = p.msg_id
+ AND r.post_id = 0
+ AND r.report_closed = 0
+ AND r.reason_id = rr.reason_id
+ AND r.user_id = u.user_id
+ AND p.author_id = u2.user_id',
+
+ 'ORDER_BY' => 'p.message_time DESC'
+ ));
+ $result = $db->sql_query_limit($sql, 5);
+
+ $pm_by_id = $pm_list = array();
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $pm_by_id[(int) $row['msg_id']] = $row;
+ $pm_list[] = (int) $row['msg_id'];
+ }
+
+ $address_list = get_recipient_strings($pm_by_id);
+
+ foreach ($pm_list as $message_id)
+ {
+ $row = $pm_by_id[$message_id];
+
+ $template->assign_block_vars('pm_report', array(
+ 'U_PM_DETAILS' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'r=' . $row['report_id'] . "&amp;i=pm_reports&amp;mode=pm_report_details"),
+
+ 'REPORTER_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
+ 'REPORTER' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']),
+ 'REPORTER_COLOUR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']),
+ 'U_REPORTER' => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']),
+
+ 'PM_AUTHOR_FULL' => get_username_string('full', $row['author_id'], $row['author_name'], $row['author_colour']),
+ 'PM_AUTHOR' => get_username_string('username', $row['author_id'], $row['author_name'], $row['author_colour']),
+ 'PM_AUTHOR_COLOUR' => get_username_string('colour', $row['author_id'], $row['author_name'], $row['author_colour']),
+ 'U_PM_AUTHOR' => get_username_string('profile', $row['author_id'], $row['author_name'], $row['author_colour']),
+
+ 'PM_SUBJECT' => $row['message_subject'],
+ 'REPORT_TIME' => $user->format_date($row['report_time']),
+ 'PM_TIME' => $user->format_date($row['message_time']),
+ 'RECIPIENTS' => implode(', ', $address_list[$row['msg_id']]),
+ ));
+ }
+ }
+
+ if ($total == 0)
+ {
+ $template->assign_vars(array(
+ 'L_REPORTS_TOTAL' => $user->lang['REPORTS_ZERO_TOTAL'],
+ 'S_HAS_PM_REPORTS' => false)
+ );
+ }
+ else
+ {
+ $template->assign_vars(array(
+ 'L_REPORTS_TOTAL' => ($total == 1) ? $user->lang['REPORT_TOTAL'] : sprintf($user->lang['REPORTS_TOTAL'], $total),
+ 'S_HAS_REPORTS' => true)
+ );
+ }
+ }
+
// Latest 5 logs
if ($module->loaded('logs'))
{
diff --git a/phpBB/includes/mcp/mcp_pm_reports.php b/phpBB/includes/mcp/mcp_pm_reports.php
new file mode 100644
index 0000000000..0e94d7e017
--- /dev/null
+++ b/phpBB/includes/mcp/mcp_pm_reports.php
@@ -0,0 +1,323 @@
+<?php
+/**
+*
+* @package mcp
+* @version $Id$
+* @copyright (c) 2005 phpBB Group
+* @license http://opensource.org/licenses/gpl-license.php GNU Public License
+*
+*/
+
+/**
+* @ignore
+*/
+if (!defined('IN_PHPBB'))
+{
+ exit;
+}
+
+/**
+* mcp_reports
+* Handling the reports queue
+* @package mcp
+*/
+class mcp_pm_reports
+{
+ var $p_master;
+ var $u_action;
+
+ function mcp_pm_reports(&$p_master)
+ {
+ $this->p_master = &$p_master;
+ }
+
+ function main($id, $mode)
+ {
+ global $auth, $db, $user, $template, $cache;
+ global $config, $phpbb_root_path, $phpEx, $action;
+
+ include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
+ include_once($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
+
+ $start = request_var('start', 0);
+
+ $this->page_title = 'MCP_PM_REPORTS';
+
+ switch ($action)
+ {
+ case 'close':
+ case 'delete':
+ include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
+
+ $report_id_list = request_var('report_id_list', array(0));
+
+ if (!sizeof($report_id_list))
+ {
+ trigger_error('NO_REPORT_SELECTED');
+ }
+
+ if (!function_exists('close_report'))
+ {
+ include($phpbb_root_path . 'includes/mcp/mcp_reports.' . $phpEx);
+ }
+
+ close_report($report_id_list, $mode, $action, true);
+
+ break;
+ }
+
+ switch ($mode)
+ {
+ case 'pm_report_details':
+
+ $user->add_lang(array('posting', 'viewforum', 'viewtopic', 'ucp'));
+
+ $report_id = request_var('r', 0);
+
+ $sql = 'SELECT r.pm_id, r.user_id, r.report_id, r.report_closed, report_time, r.report_text, rr.reason_title, rr.reason_description, u.username, u.username_clean, u.user_colour
+ FROM ' . REPORTS_TABLE . ' r, ' . REPORTS_REASONS_TABLE . ' rr, ' . USERS_TABLE . ' u
+ WHERE r.report_id = ' . $report_id . '
+ AND rr.reason_id = r.reason_id
+ AND r.user_id = u.user_id
+ AND r.post_id = 0
+ ORDER BY report_closed ASC';
+ $result = $db->sql_query_limit($sql, 1);
+ $report = $db->sql_fetchrow($result);
+ $db->sql_freeresult($result);
+
+ if (!$report_id || !$report)
+ {
+ trigger_error('NO_REPORT');
+ }
+
+ $pm_id = $report['pm_id'];
+ $report_id = $report['report_id'];
+
+ $pm_info = get_pm_data(array($pm_id));
+
+ if (!sizeof($pm_info))
+ {
+ trigger_error('NO_REPORT_SELECTED');
+ }
+
+ $pm_info = $pm_info[$pm_id];
+
+ write_pm_addresses(array('to' => $pm_info['to_address'], 'bcc' => $pm_info['bcc_address']), (int) $pm_info['author_id']);
+
+ $reason = array('title' => $report['reason_title'], 'description' => $report['reason_description']);
+ if (isset($user->lang['report_reasons']['TITLE'][strtoupper($reason['title'])]) && isset($user->lang['report_reasons']['DESCRIPTION'][strtoupper($reason['title'])]))
+ {
+ $reason['description'] = $user->lang['report_reasons']['DESCRIPTION'][strtoupper($reason['title'])];
+ $reason['title'] = $user->lang['report_reasons']['TITLE'][strtoupper($reason['title'])];
+ }
+
+ // Process message, leave it uncensored
+ $message = $pm_info['message_text'];
+
+ if ($pm_info['bbcode_bitfield'])
+ {
+ include_once($phpbb_root_path . 'includes/bbcode.' . $phpEx);
+ $bbcode = new bbcode($pm_info['bbcode_bitfield']);
+ $bbcode->bbcode_second_pass($message, $pm_info['bbcode_uid'], $pm_info['bbcode_bitfield']);
+ }
+
+ $message = bbcode_nl2br($message);
+ $message = smiley_text($message);
+
+ if ($pm_info['message_attachment'] && $auth->acl_get('u_pm_download'))
+ {
+ $sql = 'SELECT *
+ FROM ' . ATTACHMENTS_TABLE . '
+ WHERE post_msg_id = ' . $pm_id . '
+ AND in_message = 1
+ ORDER BY filetime DESC';
+ $result = $db->sql_query($sql);
+
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $attachments[] = $row;
+ }
+ $db->sql_freeresult($result);
+
+ if (sizeof($attachments))
+ {
+ $update_count = array();
+ parse_attachments(0, $message, $attachments, $update_count);
+ }
+
+ // Display not already displayed Attachments for this post, we already parsed them. ;)
+ if (!empty($attachments))
+ {
+ $template->assign_var('S_HAS_ATTACHMENTS', true);
+
+ foreach ($attachments as $attachment)
+ {
+ $template->assign_block_vars('attachment', array(
+ 'DISPLAY_ATTACHMENT' => $attachment)
+ );
+ }
+ }
+ }
+
+ $template->assign_vars(array(
+ 'S_MCP_REPORT' => true,
+ 'S_PM' => true,
+ 'S_CLOSE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=pm_reports&amp;mode=pm_report_details&amp;r=' . $report_id),
+ 'S_CAN_VIEWIP' => $auth->acl_getf_global('m_info'),
+ 'S_POST_REPORTED' => $pm_info['message_reported'],
+ 'S_USER_NOTES' => true,
+
+ 'U_MCP_REPORT' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=pm_reports&amp;mode=pm_report_details&amp;r=' . $report_id),
+ 'U_MCP_REPORTER_NOTES' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&amp;mode=user_notes&amp;u=' . $report['user_id']),
+ 'U_MCP_USER_NOTES' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&amp;mode=user_notes&amp;u=' . $pm_info['author_id']),
+ 'U_MCP_WARN_REPORTER' => ($auth->acl_get('m_warn')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=warn&amp;mode=warn_user&amp;u=' . $report['user_id']) : '',
+ 'U_MCP_WARN_USER' => ($auth->acl_get('m_warn')) ? append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=warn&amp;mode=warn_user&amp;u=' . $pm_info['author_id']) : '',
+
+ 'EDIT_IMG' => $user->img('icon_post_edit', $user->lang['EDIT_POST']),
+ 'MINI_POST_IMG' => $user->img('icon_post_target', 'POST'),
+
+ 'RETURN_REPORTS' => sprintf($user->lang['RETURN_REPORTS'], '<a href="' . append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=pm_reports' . (($pm_info['message_reported']) ? '&amp;mode=pm_reports' : '&amp;mode=pm_reports_closed') . '&amp;start=' . $start) . '">', '</a>'),
+ 'REPORTED_IMG' => $user->img('icon_topic_reported', $user->lang['POST_REPORTED']),
+ 'REPORT_DATE' => $user->format_date($report['report_time']),
+ 'REPORT_ID' => $report_id,
+ 'REPORT_REASON_TITLE' => $reason['title'],
+ 'REPORT_REASON_DESCRIPTION' => $reason['description'],
+ 'REPORT_TEXT' => $report['report_text'],
+
+ 'POST_AUTHOR_FULL' => get_username_string('full', $pm_info['author_id'], $pm_info['username'], $pm_info['user_colour']),
+ 'POST_AUTHOR_COLOUR' => get_username_string('colour', $pm_info['author_id'], $pm_info['username'], $pm_info['user_colour']),
+ 'POST_AUTHOR' => get_username_string('username', $pm_info['author_id'], $pm_info['username'], $pm_info['user_colour']),
+ 'U_POST_AUTHOR' => get_username_string('profile', $pm_info['author_id'], $pm_info['username'], $pm_info['user_colour']),
+
+ 'REPORTER_FULL' => get_username_string('full', $report['user_id'], $report['username'], $report['user_colour']),
+ 'REPORTER_COLOUR' => get_username_string('colour', $report['user_id'], $report['username'], $report['user_colour']),
+ 'REPORTER_NAME' => get_username_string('username', $report['user_id'], $report['username'], $report['user_colour']),
+ 'U_VIEW_REPORTER_PROFILE' => get_username_string('profile', $report['user_id'], $report['username'], $report['user_colour']),
+
+ 'POST_PREVIEW' => $message,
+ 'POST_SUBJECT' => ($pm_info['message_subject']) ? $pm_info['message_subject'] : $user->lang['NO_SUBJECT'],
+ 'POST_DATE' => $user->format_date($pm_info['message_time']),
+ 'POST_IP' => $pm_info['author_ip'],
+ 'POST_IPADDR' => ($auth->acl_getf_global('m_info') && request_var('lookup', '')) ? @gethostbyaddr($pm_info['author_ip']) : '',
+ 'POST_ID' => $pm_info['msg_id'],
+
+ 'U_LOOKUP_IP' => ($auth->acl_getf_global('m_info')) ? $this->u_action . '&amp;r=' . $report_id . '&amp;pm=' . $pm_id . '&amp;lookup=' . $pm_info['author_ip'] . '#ip' : '',
+ ));
+
+ $this->tpl_name = 'mcp_post';
+
+ break;
+
+ case 'pm_reports':
+ case 'pm_reports_closed':
+ $user->add_lang(array('ucp'));
+
+ $sort_days = $total = 0;
+ $sort_key = $sort_dir = '';
+ $sort_by_sql = $sort_order_sql = array();
+ mcp_sorting($mode, $sort_days, $sort_key, $sort_dir, $sort_by_sql, $sort_order_sql, $total);
+
+ $limit_time_sql = ($sort_days) ? 'AND r.report_time >= ' . (time() - ($sort_days * 86400)) : '';
+
+ if ($mode == 'pm_reports')
+ {
+ $report_state = 'pm.message_reported = 1 AND r.report_closed = 0';
+ }
+ else
+ {
+ $report_state = 'r.report_closed = 1';
+ }
+
+ $sql = 'SELECT r.report_id
+ FROM ' . PRIVMSGS_TABLE . ' pm, ' . REPORTS_TABLE . ' r ' . (($sort_order_sql[0] == 'u') ? ', ' . USERS_TABLE . ' u' : '') . (($sort_order_sql[0] == 'r') ? ', ' . USERS_TABLE . ' ru' : '') . "
+ WHERE $report_state
+ AND r.pm_id = pm.msg_id
+ " . (($sort_order_sql[0] == 'u') ? 'AND u.user_id = pm.author_id' : '') . '
+ ' . (($sort_order_sql[0] == 'r') ? 'AND ru.user_id = r.user_id' : '') . "
+ AND r.post_id = 0
+ $limit_time_sql
+ ORDER BY $sort_order_sql";
+ $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
+
+ $i = 0;
+ $report_ids = array();
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $report_ids[] = $row['report_id'];
+ $row_num[$row['report_id']] = $i++;
+ }
+ $db->sql_freeresult($result);
+
+ if (sizeof($report_ids))
+ {
+ $sql = 'SELECT p.*, u.username, u.username_clean, u.user_colour, r.user_id as reporter_id, ru.username as reporter_name, ru.user_colour as reporter_colour, r.report_time, r.report_id
+ FROM ' . REPORTS_TABLE . ' r, ' . PRIVMSGS_TABLE . ' p, ' . USERS_TABLE . ' u, ' . USERS_TABLE . ' ru
+ WHERE ' . $db->sql_in_set('r.report_id', $report_ids) . "
+ AND r.pm_id = p.msg_id
+ AND p.author_id = u.user_id
+ AND ru.user_id = r.user_id
+ ORDER BY $sort_order_sql";
+ $result = $db->sql_query($sql);
+
+ $pm_list = $pm_by_id = array();
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $pm_by_id[(int) $row['msg_id']] = $row;
+ $pm_list[] = (int) $row['msg_id'];
+ }
+ $db->sql_freeresult($result);
+
+ if (sizeof($pm_list))
+ {
+ $address_list = get_recipient_strings($pm_by_id);
+
+ foreach ($pm_list as $message_id)
+ {
+ $row = $pm_by_id[$message_id];
+ $template->assign_block_vars('postrow', array(
+ 'U_VIEW_DETAILS' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=pm_reports&amp;mode=pm_report_details&amp;r={$row['report_id']}"),
+
+ 'PM_AUTHOR_FULL' => get_username_string('full', $row['author_id'], $row['username'], $row['user_colour']),
+ 'PM_AUTHOR_COLOUR' => get_username_string('colour', $row['author_id'], $row['username'], $row['user_colour']),
+ 'PM_AUTHOR' => get_username_string('username', $row['author_id'], $row['username'], $row['user_colour']),
+ 'U_PM_AUTHOR' => get_username_string('profile', $row['author_id'], $row['username'], $row['user_colour']),
+
+ 'REPORTER_FULL' => get_username_string('full', $row['reporter_id'], $row['reporter_name'], $row['reporter_colour']),
+ 'REPORTER_COLOUR' => get_username_string('colour', $row['reporter_id'], $row['reporter_name'], $row['reporter_colour']),
+ 'REPORTER' => get_username_string('username', $row['reporter_id'], $row['reporter_name'], $row['reporter_colour']),
+ 'U_REPORTER' => get_username_string('profile', $row['reporter_id'], $row['reporter_name'], $row['reporter_colour']),
+
+ 'PM_SUBJECT' => ($row['message_subject']) ? $row['message_subject'] : $user->lang['NO_SUBJECT'],
+ 'PM_TIME' => $user->format_date($row['message_time']),
+ 'REPORT_ID' => $row['report_id'],
+ 'REPORT_TIME' => $user->format_date($row['report_time']),
+
+ 'RECIPIENTS' => implode(', ', $address_list[$row['msg_id']]),
+ ));
+ }
+ }
+ }
+
+ // Now display the page
+ $template->assign_vars(array(
+ 'L_EXPLAIN' => ($mode == 'pm_reports') ? $user->lang['MCP_PM_REPORTS_OPEN_EXPLAIN'] : $user->lang['MCP_PM_REPORTS_CLOSED_EXPLAIN'],
+ 'L_TITLE' => ($mode == 'pm_reports') ? $user->lang['MCP_PM_REPORTS_OPEN'] : $user->lang['MCP_PM_REPORTS_CLOSED'],
+
+ 'S_PM' => true,
+ 'S_MCP_ACTION' => $this->u_action,
+ 'S_CLOSED' => ($mode == 'pm_reports_closed') ? true : false,
+
+ 'PAGINATION' => generate_pagination($this->u_action . "&amp;st=$sort_days&amp;sk=$sort_key&amp;sd=$sort_dir", $total, $config['topics_per_page'], $start),
+ 'PAGE_NUMBER' => on_page($total, $config['topics_per_page'], $start),
+ 'TOTAL' => $total,
+ 'TOTAL_REPORTS' => ($total == 1) ? $user->lang['LIST_REPORT'] : sprintf($user->lang['LIST_REPORTS'], $total),
+ )
+ );
+
+ $this->tpl_name = 'mcp_reports';
+ break;
+ }
+ }
+}
+
+?> \ No newline at end of file
diff --git a/phpBB/includes/mcp/mcp_reports.php b/phpBB/includes/mcp/mcp_reports.php
index cc701a0540..270b0055d9 100644
--- a/phpBB/includes/mcp/mcp_reports.php
+++ b/phpBB/includes/mcp/mcp_reports.php
@@ -77,6 +77,7 @@ class mcp_reports
WHERE ' . (($report_id) ? 'r.report_id = ' . $report_id : "r.post_id = $post_id") . '
AND rr.reason_id = r.reason_id
AND r.user_id = u.user_id
+ AND r.pm_id = 0
ORDER BY report_closed ASC';
$result = $db->sql_query_limit($sql, 1);
$report = $db->sql_fetchrow($result);
@@ -149,13 +150,11 @@ class mcp_reports
if ($post_info['post_attachment'] && $auth->acl_get('u_download') && $auth->acl_get('f_download', $post_info['forum_id']))
{
- $extensions = $cache->obtain_attach_extensions($post_info['forum_id']);
-
$sql = 'SELECT *
FROM ' . ATTACHMENTS_TABLE . '
WHERE post_msg_id = ' . $post_id . '
AND in_message = 0
- ORDER BY filetime DESC, post_msg_id ASC';
+ ORDER BY filetime DESC';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
@@ -332,7 +331,7 @@ class mcp_reports
mcp_sorting($mode, $sort_days, $sort_key, $sort_dir, $sort_by_sql, $sort_order_sql, $total, $forum_id, $topic_id);
$forum_topics = ($total == -1) ? $forum_info['forum_topics'] : $total;
- $limit_time_sql = ($sort_days) ? 'AND t.topic_last_post_time >= ' . (time() - ($sort_days * 86400)) : '';
+ $limit_time_sql = ($sort_days) ? 'AND r.report_time >= ' . (time() - ($sort_days * 86400)) : '';
if ($mode == 'reports')
{
@@ -349,9 +348,10 @@ class mcp_reports
$report_state
AND r.post_id = p.post_id
" . (($sort_order_sql[0] == 'u') ? 'AND u.user_id = p.poster_id' : '') . '
- ' . (($sort_order_sql[0] == 'r') ? 'AND ru.user_id = p.poster_id' : '') . '
+ ' . (($sort_order_sql[0] == 'r') ? 'AND ru.user_id = r.user_id' : '') . '
' . (($topic_id) ? 'AND p.topic_id = ' . $topic_id : '') . "
AND t.topic_id = p.topic_id
+ AND r.pm_id = 0
$limit_time_sql
ORDER BY $sort_order_sql";
$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
@@ -374,6 +374,7 @@ class mcp_reports
AND r.post_id = p.post_id
AND u.user_id = p.poster_id
AND ru.user_id = r.user_id
+ AND r.pm_id = 0
ORDER BY ' . $sort_order_sql;
$result = $db->sql_query($sql);
@@ -441,35 +442,54 @@ class mcp_reports
/**
* Closes a report
*/
-function close_report($report_id_list, $mode, $action)
+function close_report($report_id_list, $mode, $action, $pm = false)
{
- global $db, $template, $user, $config;
+ global $db, $template, $user, $config, $auth;
global $phpEx, $phpbb_root_path;
- $sql = 'SELECT r.post_id
- FROM ' . REPORTS_TABLE . ' r
- WHERE ' . $db->sql_in_set('r.report_id', $report_id_list);
+ $pm_where = ($pm) ? ' AND r.post_id = 0 ' : ' AND r.pm_id = 0 ';
+ $id_column = ($pm) ? 'pm_id' : 'post_id';
+ $module = ($pm) ? 'pm_reports' : 'reports';
+ $pm_prefix = ($pm) ? 'PM_' : '';
+
+ $sql = "SELECT r.$id_column
+ FROM " . REPORTS_TABLE . ' r
+ WHERE ' . $db->sql_in_set('r.report_id', $report_id_list) . $pm_where;
$result = $db->sql_query($sql);
$post_id_list = array();
while ($row = $db->sql_fetchrow($result))
{
- $post_id_list[] = $row['post_id'];
+ $post_id_list[] = $row[$id_column];
}
$post_id_list = array_unique($post_id_list);
- if (!check_ids($post_id_list, POSTS_TABLE, 'post_id', array('m_report')))
+ if ($pm)
+ {
+ if (!$auth->acl_getf_global('m_report'))
+ {
+ trigger_error('NOT_AUTHORISED');
+ }
+ }
+ else
{
- trigger_error('NOT_AUTHORISED');
+ if (!check_ids($post_id_list, POSTS_TABLE, 'post_id', array('m_report')))
+ {
+ trigger_error('NOT_AUTHORISED');
+ }
}
if ($action == 'delete' && strpos($user->data['session_page'], 'mode=report_details') !== false)
{
$redirect = request_var('redirect', build_url(array('mode', 'r', 'quickmod')) . '&amp;mode=reports');
}
+ elseif ($action == 'delete' && strpos($user->data['session_page'], 'mode=pm_report_details') !== false)
+ {
+ $redirect = request_var('redirect', build_url(array('mode', 'r', 'quickmod')) . '&amp;mode=pm_reports');
+ }
else if ($action == 'close' && !request_var('r', 0))
{
- $redirect = request_var('redirect', build_url(array('mode', 'p', 'quickmod')) . '&amp;mode=reports');
+ $redirect = request_var('redirect', build_url(array('mode', 'p', 'quickmod')) . '&amp;mode=' . $module);
}
else
{
@@ -480,7 +500,7 @@ function close_report($report_id_list, $mode, $action)
$topic_ids = array();
$s_hidden_fields = build_hidden_fields(array(
- 'i' => 'reports',
+ 'i' => $module,
'mode' => $mode,
'report_id_list' => $report_id_list,
'action' => $action,
@@ -489,13 +509,13 @@ function close_report($report_id_list, $mode, $action)
if (confirm_box(true))
{
- $post_info = get_post_data($post_id_list, 'm_report');
+ $post_info = ($pm) ? get_pm_data($post_id_list) : get_post_data($post_id_list, 'm_report');
- $sql = 'SELECT r.report_id, r.post_id, r.report_closed, r.user_id, r.user_notify, u.username, u.username_clean, u.user_email, u.user_jabber, u.user_lang, u.user_notify_type
- FROM ' . REPORTS_TABLE . ' r, ' . USERS_TABLE . ' u
+ $sql = "SELECT r.report_id, r.$id_column, r.report_closed, r.user_id, r.user_notify, u.username, u.username_clean, u.user_email, u.user_jabber, u.user_lang, u.user_notify_type
+ FROM " . REPORTS_TABLE . ' r, ' . USERS_TABLE . ' u
WHERE ' . $db->sql_in_set('r.report_id', $report_id_list) . '
' . (($action == 'close') ? 'AND r.report_closed = 0' : '') . '
- AND r.user_id = u.user_id';
+ AND r.user_id = u.user_id' . $pm_where;
$result = $db->sql_query($sql);
$reports = $close_report_posts = $close_report_topics = $notify_reporters = $report_id_list = array();
@@ -506,8 +526,12 @@ function close_report($report_id_list, $mode, $action)
if (!$report['report_closed'])
{
- $close_report_posts[] = $report['post_id'];
- $close_report_topics[] = $post_info[$report['post_id']]['topic_id'];
+ $close_report_posts[] = $report[$id_column];
+
+ if (!$pm)
+ {
+ $close_report_topics[] = $post_info[$report['post_id']]['topic_id'];
+ }
}
if ($report['user_notify'] && !$report['report_closed'])
@@ -522,7 +546,7 @@ function close_report($report_id_list, $mode, $action)
$close_report_posts = array_unique($close_report_posts);
$close_report_topics = array_unique($close_report_topics);
- if (sizeof($close_report_posts))
+ if (!$pm && sizeof($close_report_posts))
{
// Get a list of topics that still contain reported posts
$sql = 'SELECT DISTINCT topic_id
@@ -561,18 +585,33 @@ function close_report($report_id_list, $mode, $action)
if (sizeof($close_report_posts))
{
- $sql = 'UPDATE ' . POSTS_TABLE . '
- SET post_reported = 0
- WHERE ' . $db->sql_in_set('post_id', $close_report_posts);
- $db->sql_query($sql);
+ if ($pm)
+ {
+ $sql = 'UPDATE ' . PRIVMSGS_TABLE . '
+ SET message_reported = 0
+ WHERE ' . $db->sql_in_set('msg_id', $close_report_posts);
+ $db->sql_query($sql);
- if (sizeof($close_report_topics))
+ if ($action == 'delete')
+ {echo "aha";
+ delete_pm(ANONYMOUS, $close_report_posts, PRIVMSGS_INBOX);
+ }
+ }
+ else
{
- $sql = 'UPDATE ' . TOPICS_TABLE . '
- SET topic_reported = 0
- WHERE ' . $db->sql_in_set('topic_id', $close_report_topics) . '
- OR ' . $db->sql_in_set('topic_moved_id', $close_report_topics);
+ $sql = 'UPDATE ' . POSTS_TABLE . '
+ SET post_reported = 0
+ WHERE ' . $db->sql_in_set('post_id', $close_report_posts);
$db->sql_query($sql);
+
+ if (sizeof($close_report_topics))
+ {
+ $sql = 'UPDATE ' . TOPICS_TABLE . '
+ SET topic_reported = 0
+ WHERE ' . $db->sql_in_set('topic_id', $close_report_topics) . '
+ OR ' . $db->sql_in_set('topic_moved_id', $close_report_topics);
+ $db->sql_query($sql);
+ }
}
}
@@ -582,7 +621,14 @@ function close_report($report_id_list, $mode, $action)
foreach ($reports as $report)
{
- add_log('mod', $post_info[$report['post_id']]['forum_id'], $post_info[$report['post_id']]['topic_id'], 'LOG_REPORT_' . strtoupper($action) . 'D', $post_info[$report['post_id']]['post_subject']);
+ if ($pm)
+ {
+ add_log('mod', 0, 0, 'LOG_PM_REPORT_' . strtoupper($action) . 'D', $post_info[$report['pm_id']]['message_subject']);
+ }
+ else
+ {
+ add_log('mod', $post_info[$report['post_id']]['forum_id'], $post_info[$report['post_id']]['topic_id'], 'LOG_REPORT_' . strtoupper($action) . 'D', $post_info[$report['post_id']]['post_subject']);
+ }
}
$messenger = new messenger();
@@ -597,39 +643,53 @@ function close_report($report_id_list, $mode, $action)
continue;
}
- $post_id = $reporter['post_id'];
+ $post_id = $reporter[$id_column];
- $messenger->template('report_' . $action . 'd', $reporter['user_lang']);
+ $messenger->template((($pm) ? 'pm_report_' : 'report_') . $action . 'd', $reporter['user_lang']);
$messenger->to($reporter['user_email'], $reporter['username']);
$messenger->im($reporter['user_jabber'], $reporter['username']);
- $messenger->assign_vars(array(
- 'USERNAME' => htmlspecialchars_decode($reporter['username']),
- 'CLOSER_NAME' => htmlspecialchars_decode($user->data['username']),
- 'POST_SUBJECT' => htmlspecialchars_decode(censor_text($post_info[$post_id]['post_subject'])),
- 'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($post_info[$post_id]['topic_title'])))
- );
+ if ($pm)
+ {
+ $messenger->assign_vars(array(
+ 'USERNAME' => htmlspecialchars_decode($reporter['username']),
+ 'CLOSER_NAME' => htmlspecialchars_decode($user->data['username']),
+ 'PM_SUBJECT' => htmlspecialchars_decode(censor_text($post_info[$post_id]['message_subject'])),
+ ));
+ }
+ else
+ {
+ $messenger->assign_vars(array(
+ 'USERNAME' => htmlspecialchars_decode($reporter['username']),
+ 'CLOSER_NAME' => htmlspecialchars_decode($user->data['username']),
+ 'POST_SUBJECT' => htmlspecialchars_decode(censor_text($post_info[$post_id]['post_subject'])),
+ 'TOPIC_TITLE' => htmlspecialchars_decode(censor_text($post_info[$post_id]['topic_title'])))
+ );
+ }
$messenger->send($reporter['user_notify_type']);
}
}
- foreach ($post_info as $post)
+ if (!$pm)
{
- $forum_ids[$post['forum_id']] = $post['forum_id'];
- $topic_ids[$post['topic_id']] = $post['topic_id'];
+ foreach ($post_info as $post)
+ {
+ $forum_ids[$post['forum_id']] = $post['forum_id'];
+ $topic_ids[$post['topic_id']] = $post['topic_id'];
+ }
}
-
+
unset($notify_reporters, $post_info, $reports);
$messenger->save_queue();
- $success_msg = (sizeof($report_id_list) == 1) ? 'REPORT_' . strtoupper($action) . 'D_SUCCESS' : 'REPORTS_' . strtoupper($action) . 'D_SUCCESS';
+ $success_msg = (sizeof($report_id_list) == 1) ? "{$pm_prefix}REPORT_" . strtoupper($action) . 'D_SUCCESS' : "{$pm_prefix}REPORTS_" . strtoupper($action) . 'D_SUCCESS';
}
else
{
- confirm_box(false, $user->lang[strtoupper($action) . '_REPORT' . ((sizeof($report_id_list) == 1) ? '' : 'S') . '_CONFIRM'], $s_hidden_fields);
+ confirm_box(false, $user->lang[strtoupper($action) . "_{$pm_prefix}REPORT" . ((sizeof($report_id_list) == 1) ? '' : 'S') . '_CONFIRM'], $s_hidden_fields);
}
$redirect = request_var('redirect', "index.$phpEx");
@@ -642,15 +702,21 @@ function close_report($report_id_list, $mode, $action)
else
{
meta_refresh(3, $redirect);
+
$return_forum = '';
- if (sizeof($forum_ids == 1))
- {
- $return_forum = sprintf($user->lang['RETURN_FORUM'], '<a href="' . append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . current($forum_ids)) . '">', '</a>') . '<br /><br />';
- }
$return_topic = '';
- if (sizeof($topic_ids == 1))
+
+ if (!$pm)
{
- $return_topic = sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . current($topic_ids) . '&amp;f=' . current($forum_ids)) . '">', '</a>') . '<br /><br />';
+ if (sizeof($forum_ids) === 1)
+ {
+ $return_forum = sprintf($user->lang['RETURN_FORUM'], '<a href="' . append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . current($forum_ids)) . '">', '</a>') . '<br /><br />';
+ }
+
+ if (sizeof($topic_ids) === 1)
+ {
+ $return_topic = sprintf($user->lang['RETURN_TOPIC'], '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . current($topic_ids) . '&amp;f=' . current($forum_ids)) . '">', '</a>') . '<br /><br />';
+ }
}
trigger_error($user->lang[$success_msg] . '<br /><br />' . $return_forum . $return_topic . sprintf($user->lang['RETURN_PAGE'], "<a href=\"$redirect\">", '</a>'));
diff --git a/phpBB/includes/ucp/ucp_pm_viewfolder.php b/phpBB/includes/ucp/ucp_pm_viewfolder.php
index b2ceb30f9e..f947518ba8 100644
--- a/phpBB/includes/ucp/ucp_pm_viewfolder.php
+++ b/phpBB/includes/ucp/ucp_pm_viewfolder.php
@@ -115,78 +115,7 @@ function view_folder($id, $mode, $folder_id, $folder)
// Build Recipient List if in outbox/sentbox - max two additional queries
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']));
- $_save = array('u', 'g');
- foreach ($_save as $save)
- {
- if (isset($address[$message_id][$save]) && sizeof($address[$message_id][$save]))
- {
- foreach (array_keys($address[$message_id][$save]) as $ug_id)
- {
- $recipient_list[$save][$ug_id] = array('name' => $user->lang['NA'], 'colour' => '');
- }
- }
- }
- }
-
- $_types = array('u', 'g');
- foreach ($_types as $ug_type)
- {
- if (!empty($recipient_list[$ug_type]))
- {
- if ($ug_type == 'u')
- {
- $sql = 'SELECT user_id as id, username as name, user_colour as colour
- FROM ' . USERS_TABLE . '
- WHERE ';
- }
- else
- {
- $sql = 'SELECT group_id as id, group_name as name, group_colour as colour, group_type
- FROM ' . GROUPS_TABLE . '
- WHERE ';
- }
- $sql .= $db->sql_in_set(($ug_type == 'u') ? 'user_id' : 'group_id', array_map('intval', 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);
- }
- }
-
- foreach ($address as $message_id => $adr_ary)
- {
- foreach ($adr_ary as $type => $id_ary)
- {
- foreach ($id_ary as $ug_id => $_id)
- {
- if ($type == 'u')
- {
- $address_list[$message_id][] = get_username_string('full', $ug_id, $recipient_list[$type][$ug_id]['name'], $recipient_list[$type][$ug_id]['colour']);
- }
- else
- {
- $user_colour = ($recipient_list[$type][$ug_id]['colour']) ? ' style="font-weight: bold; color:#' . $recipient_list[$type][$ug_id]['colour'] . '"' : '';
- $link = '<a href="' . append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=group&amp;g=' . $ug_id) . '"' . $user_colour . '>';
- $address_list[$message_id][] = $link . $recipient_list[$type][$ug_id]['name'] . (($link) ? '</a>' : '');
- }
- }
- }
- }
- unset($recipient_list, $address);
+ $address_list = get_recipient_strings($folder_info['rowset']);
}
$data = array();
diff --git a/phpBB/includes/ucp/ucp_pm_viewmessage.php b/phpBB/includes/ucp/ucp_pm_viewmessage.php
index 82aa5afd8f..dd15f5ff37 100644
--- a/phpBB/includes/ucp/ucp_pm_viewmessage.php
+++ b/phpBB/includes/ucp/ucp_pm_viewmessage.php
@@ -190,6 +190,7 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
'EMAIL_IMG' => $user->img('icon_contact_email', $user->lang['SEND_EMAIL']),
'QUOTE_IMG' => $user->img('icon_post_quote', $user->lang['POST_QUOTE_PM']),
'REPLY_IMG' => $user->img('button_pm_reply', $user->lang['POST_REPLY_PM']),
+ 'REPORT_IMG' => $user->img('icon_post_report', 'REPORT_POST'),
'EDIT_IMG' => $user->img('icon_post_edit', $user->lang['POST_EDIT_PM']),
'MINI_POST_IMG' => $user->img('icon_post_target', $user->lang['PM']),
@@ -210,6 +211,7 @@ function view_message($id, $mode, $folder_id, $msg_id, $folder, $message_row)
'U_DELETE' => ($auth->acl_get('u_pm_delete')) ? "$url&amp;mode=compose&amp;action=delete&amp;f=$folder_id&amp;p=" . $message_row['msg_id'] : '',
'U_EMAIL' => $user_info['email'],
+ 'U_REPORT' => ($config['allow_pm_report']) ? append_sid("{$phpbb_root_path}report.$phpEx", "pm=" . $message_row['msg_id']) : '',
'U_QUOTE' => ($auth->acl_get('u_sendpm') && $author_id != ANONYMOUS) ? "$url&amp;mode=compose&amp;action=quote&amp;f=$folder_id&amp;p=" . $message_row['msg_id'] : '',
'U_EDIT' => (($message_row['message_time'] > time() - ($config['pm_edit_time'] * 60) || !$config['pm_edit_time']) && $folder_id == PRIVMSGS_OUTBOX && $auth->acl_get('u_pm_edit')) ? "$url&amp;mode=compose&amp;action=edit&amp;f=$folder_id&amp;p=" . $message_row['msg_id'] : '',
'U_POST_REPLY_PM' => ($auth->acl_get('u_sendpm') && $author_id != ANONYMOUS) ? "$url&amp;mode=compose&amp;action=reply&amp;f=$folder_id&amp;p=" . $message_row['msg_id'] : '',