aboutsummaryrefslogtreecommitdiffstats
path: root/phpBB/includes
diff options
context:
space:
mode:
authorNils Adermann <naderman@naderman.de>2006-03-18 10:54:14 +0000
committerNils Adermann <naderman@naderman.de>2006-03-18 10:54:14 +0000
commit9cd89343a297ff594d1a74459d1c9059e24c501f (patch)
tree7d2e05f26cb6643e8facb566dc0c21e884237a2d /phpBB/includes
parentca1e11dc2a165542098819b6d722afd8eb05ab90 (diff)
downloadforums-9cd89343a297ff594d1a74459d1c9059e24c501f.tar
forums-9cd89343a297ff594d1a74459d1c9059e24c501f.tar.gz
forums-9cd89343a297ff594d1a74459d1c9059e24c501f.tar.bz2
forums-9cd89343a297ff594d1a74459d1c9059e24c501f.tar.xz
forums-9cd89343a297ff594d1a74459d1c9059e24c501f.zip
- replaced mcp reports system with a simplified version
- fixed links to mcp_reports git-svn-id: file:///svn/phpbb/trunk@5649 89ea8834-ac86-4346-8a33-228a782c2dd0
Diffstat (limited to 'phpBB/includes')
-rw-r--r--phpBB/includes/mcp/mcp_front.php6
-rw-r--r--phpBB/includes/mcp/mcp_queue.php7
-rwxr-xr-xphpBB/includes/mcp/mcp_reports.php970
3 files changed, 455 insertions, 528 deletions
diff --git a/phpBB/includes/mcp/mcp_front.php b/phpBB/includes/mcp/mcp_front.php
index 372ccc023f..dd3efd4a71 100644
--- a/phpBB/includes/mcp/mcp_front.php
+++ b/phpBB/includes/mcp/mcp_front.php
@@ -136,9 +136,9 @@ function mcp_front_view($id, $mode, $action)
while ($row = $db->sql_fetchrow($result))
{
$template->assign_block_vars('report', array(
- 'U_POST_DETAILS'=> $url . '&amp;p=' . $row['post_id'] . '&amp;mode=post_details',
- 'U_MCP_FORUM' => ($row['forum_id']) ? $url . '&amp;f=' . $row['forum_id'] . '&amp;mode=forum_view' : '',
- 'U_MCP_TOPIC' => $url . '&amp;t=' . $row['topic_id'] . '&amp;mode=topic_view',
+ 'U_POST_DETAILS'=> $url . '&amp;p=' . $row['post_id'] . "&amp;i=reports&amp;mode=report_details",
+ 'U_MCP_FORUM' => ($row['forum_id']) ? $url . '&amp;f=' . $row['forum_id'] . "&amp;i=$id&amp;mode=forum_view" : '',
+ 'U_MCP_TOPIC' => $url . '&amp;t=' . $row['topic_id'] . "&amp;i=$id&amp;mode=topic_view",
'U_FORUM' => ($row['forum_id']) ? "{$phpbb_root_path}viewforum.$phpEx$SID&amp;f=" . $row['forum_id'] : '',
'U_TOPIC' => "{$phpbb_root_path}viewtopic.$phpEx$SID&amp;f=" . $row['forum_id'] . '&amp;t=' . $row['topic_id'],
'U_REPORTER' => ($row['user_id'] == ANONYMOUS) ? '' : "{$phpbb_root_path}memberlist.$phpEx$SID&amp;mode=viewprofile&amp;u=" . $row['user_id'],
diff --git a/phpBB/includes/mcp/mcp_queue.php b/phpBB/includes/mcp/mcp_queue.php
index 8929520851..ac35ecfe3b 100644
--- a/phpBB/includes/mcp/mcp_queue.php
+++ b/phpBB/includes/mcp/mcp_queue.php
@@ -106,7 +106,7 @@ class mcp_queue
$template->assign_vars(array(
'S_MCP_QUEUE' => true,
'S_APPROVE_ACTION' => "{$phpbb_root_path}mcp.$phpEx$SID&amp;i=queue&amp;p=$post_id&amp;f=$forum_id",
- 'S_CAN_VIEWIP' => $auth->acl_get('m_info', $post_info['forum_id']),
+ 'S_CAN_VIEWIP' => $auth->acl_get('m_ip', $post_info['forum_id']),
'S_POST_REPORTED' => $post_info['post_reported'],
'S_POST_UNAPPROVED' => !$post_info['post_approved'],
'S_POST_LOCKED' => $post_info['post_edit_locked'],
@@ -117,7 +117,7 @@ class mcp_queue
'U_MCP_WARN_USER' => "{$phpbb_root_path}mcp.$phpEx$SID&amp;i=warn&amp;mode=warn_user&amp;u=" . $post_info['user_id'],
'U_EDIT' => ($auth->acl_get('m_edit', $post_info['forum_id'])) ? "{$phpbb_root_path}posting.$phpEx$SID&amp;mode=edit&amp;f={$post_info['forum_id']}&amp;p={$post_info['post_id']}" : '',
- 'RETURN_QUEUE' => sprintf($user->lang['RETURN_QUEUE'], "<a href=\"{$phpbb_root_path}mcp.$phpEx$SID&amp;i=queue" . (($topic_id) ? '&amp;mode=unapproved_topics' : '&amp;mode=unapproved_posts') . "\">", '</a>'),
+ 'RETURN_QUEUE' => sprintf($user->lang['RETURN_QUEUE'], "<a href=\"{$phpbb_root_path}mcp.$phpEx$SID&amp;i=queue" . (($topic_id) ? '&amp;mode=unapproved_topics' : '&amp;mode=unapproved_posts') . "&amp;start=$start\">", '</a>'),
'REPORTED_IMG' => $user->img('icon_reported', $user->lang['POST_REPORTED']),
'UNAPPROVED_IMG' => $user->img('icon_unapproved', $user->lang['POST_UNAPPROVED']),
'EDIT_IMG' => $user->img('btn_edit', $user->lang['EDIT_POST']),
@@ -269,7 +269,7 @@ class mcp_queue
// Q: Why accessing the topic by a post_id instead of its topic_id?
// A: To prevent the post from being hidden because of wrong encoding or different charset
'U_VIEWTOPIC' => "{$phpbb_root_path}viewtopic.$phpEx$SID&amp;f=" . $row['forum_id'] . '&amp;p=' . $row['post_id'] . (($mode == 'unapproved_posts') ? '#p' . $row['post_id'] : ''),
- 'U_VIEW_DETAILS'=> "{$phpbb_root_path}mcp.$phpEx$SID&amp;i=queue&amp;start=$start&amp;mode=approve_details&amp;f={$forum_id}&amp;p={$row['post_id']}",
+ 'U_VIEW_DETAILS'=> "{$phpbb_root_path}mcp.$phpEx$SID&amp;i=queue&amp;start=$start&amp;mode=approve_details&amp;f={$forum_id}&amp;p={$row['post_id']}" . (($mode == 'unapproved_topics') ? "&amp;t={$row['topic_id']}" : '' ),
'U_VIEWPROFILE' => ($row['poster_id'] != ANONYMOUS) ? "{$phpbb_root_path}memberlist.$phpEx$SID&amp;mode=viewprofile&amp;u={$row['poster_id']}" : '',
'FORUM_NAME' => $row['forum_name'],
@@ -732,7 +732,6 @@ class mcp_queue_info
'approve_details' => array('title' => 'MCP_QUEUE_APPROVE_DETAILS', 'auth' => 'acl_m_approve || aclf_m_approve'),
'unapproved_topics' => array('title' => 'MCP_QUEUE_UNAPPROVED_TOPICS', 'auth' => 'acl_m_approve || aclf_m_approve'),
'unapproved_posts' => array('title' => 'MCP_QUEUE_UNAPPROVED_POSTS', 'auth' => 'acl_m_approve || aclf_m_approve'),
- 'reports' => array('title' => 'MCP_QUEUE_REPORTS', 'auth' => 'acl_m_approve'),
),
);
}
diff --git a/phpBB/includes/mcp/mcp_reports.php b/phpBB/includes/mcp/mcp_reports.php
index 7a864a4618..a35c3980d5 100755
--- a/phpBB/includes/mcp/mcp_reports.php
+++ b/phpBB/includes/mcp/mcp_reports.php
@@ -1,62 +1,23 @@
<?php
-// -------------------------------------------------------------
-//
-// $Id$
-//
-// FILENAME : mcp_reports.php
-// STARTED : Fri Nov 26, 2004
-// COPYRIGHT : © 2004 phpBB Group
-// WWW : http://www.phpbb.com/
-// LICENCE : GPL vs2.0 [ see /docs/COPYING ]
-//
-// -------------------------------------------------------------
-
-
-// TODO: Would be nice if a moderator could 'checkout' a topic with reports so
-// other moderators know that this topic is already being handled.
-
-/**
-* @package module_install
+/**
+*
+* @package mcp
+* @version $Id$
+* @copyright (c) 2005 phpBB Group
+* @license http://opensource.org/licenses/gpl-license.php GNU Public License
+*
*/
-class mcp_reports_info
-{
- function module()
- {
- return array(
- 'filename' => 'mcp_reports',
- 'title' => 'MCP_REPORTS',
- 'version' => '1.0.0',
- 'modes' => array(
- 'front' => array('title' => 'MCP_REPORTS_FRONT', 'auth' => 'acl_m_'),
- 'reports_yours' => array('title' => 'MCP_REPORTS_YOURS', 'auth' => 'acl_m_'),
- 'reports_new' => array('title' => 'MCP_REPORTS_NEW', 'auth' => 'acl_m_'),
- 'reports_topics' => array('title' => 'MCP_REPORTS_TOPICS', 'auth' => 'acl_m_'),
- 'reports_view_topic' => array('title' => 'MCP_REPORTS_VIEW_TOPIC', 'auth' => 'acl_m_'),
- 'reports_view' => array('title' => 'MCP_REPORTS_VIEW', 'auth' => 'acl_m_')
- ),
- );
- }
-
- function install()
- {
- }
-
- function uninstall()
- {
- }
-}
-
/**
* @package mcp
-* mcp_report
-* Handle reports about users or posts sent in by users
+* mcp_reports
+* Handling the reports queue
*/
class mcp_reports
{
var $p_master;
-
+
function mcp_main(&$p_master)
{
$this->p_master = &$p_master;
@@ -65,527 +26,494 @@ class mcp_reports
function main($id, $mode)
{
global $auth, $db, $user, $template;
- global $config, $phpbb_root_path, $phpEx, $SID;
+ global $config, $phpbb_root_path, $phpEx, $SID, $action;
- $action = request_var('action', array('' => ''));
-
- switch ($mode)
- {
- case 'reports_yours':
- $this->mcp_reports_list($id, $mode);
- break;
- case 'reports_new':
- $this->mcp_reports_list($id, $mode);
- break;
- case 'reports_topics':
- $this->mcp_reports_list($id, $mode);
- break;
- case 'reports_view_topic':
- // View reports for one topic
- $this->mcp_reports_list($id, $mode);
- //$this->tpl_name = 'mcp_report_topic';
- break;
- case 'reports_view':
- // View one report (not attached to a topic)
- $this->mcp_report_view($id, $mode);
- break;
- default:
- // Main page with an overview
- $this->mcp_reports_list($id, $mode);
- break;
- }
- }
+ include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
- // Overview of available reports
- function mcp_reports_list($id, $mode)
- {
- global $auth, $db, $user, $template;
- global $config, $phpbb_root_path, $phpEx, $SID;
-
$forum_id = request_var('f', 0);
- $topic_id = request_var('t', 0);
$start = request_var('start', 0);
-
- // Show report details for a specific topic if a topic has been selected.
- if($topic_id != 0)
- {
- return $this->mcp_report_view('topic', $topic_id);
- }
-
- $forum_info = array();
-
- $forum_list_report = get_forum_list('m_', false, true);
-
- // Show all reports that this user is allowed to view or only the
- // reports in one specific forum?
- if ($mode == 'overview' || !$forum_id)
- {
- $forum_list = array();
- foreach ($forum_list_report as $row)
- {
- $forum_list[] = $row['forum_id'];
- }
-
- if (!$forum_list = implode(', ', $forum_list))
- {
- trigger_error('NOT_MODERATOR');
- }
-
- $sql = 'SELECT SUM(forum_topics) as sum_forum_topics
- FROM ' . FORUMS_TABLE . "
- WHERE forum_id IN ($forum_list)";
- $result = $db->sql_query($sql);
- $forum_info['forum_topics'] = (int) $db->sql_fetchfield('sum_forum_topics', 0, $result);
- $db->sql_freeresult($result);
- }
- else
- {
- $forum_info = get_forum_data(array($forum_id), 'm_approve');
-
- if (!sizeof($forum_info))
- {
- trigger_error('NOT_MODERATOR');
- }
-
- $forum_info = $forum_info[$forum_id];
- $forum_list = $forum_id;
- }
-
- $forum_options = '<option value="0"' . (($forum_id == 0) ? ' selected="selected"' : '') . '>' . $user->lang['ALL_FORUMS'] . '</option>';
- foreach ($forum_list_report as $row)
- {
- $forum_options .= '<option value="' . $row['forum_id'] . '"' . (($forum_id == $row['forum_id']) ? ' selected="selected"' : '') . '>' . $row['forum_name'] . '</option>';
- }
-
- // Note: this query needs to be made compatible with non-MySQL DBMs
- mcp_sorting('reports', $sort_days, $sort_key, $sort_dir, $sort_by_sql, $sort_order_sql, $total, $forum_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)) : '';
- $sql = 'SELECT count(*) as report_count, r.*, p.post_id, p.post_subject, u.username, t.topic_id, t.topic_title, f.forum_id, f.forum_name
- FROM ' . REPORTS_TABLE . ' r, ' . REASONS_TABLE . ' rr,' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . USERS_TABLE . ' u
- LEFT JOIN ' . FORUMS_TABLE . ' f ON f.forum_id = p.forum_id
- WHERE
- r.report_status = 0
- AND r.post_id = p.post_id
- AND r.reason_id = rr.reason_id
- AND p.topic_id = t.topic_id
- AND r.user_id = u.user_id
- AND t.topic_reported = 1
- AND p.forum_id IN (' . (is_array($forum_list) ? implode(', ', $forum_list) : $forum_list) . ")
- GROUP BY topic_id
- ORDER BY $sort_order_sql";
- $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
-
- while ($row = $db->sql_fetchrow($result))
+
+ switch ($action)
{
- if ($row['poster_id'] == ANONYMOUS)
- {
- $poster = (!empty($row['post_username'])) ? $row['post_username'] : $user->lang['GUEST'];
- }
- else
- {
- $poster = $row['username'];
- }
-
- $s_checkbox = '<input type="checkbox" name="post_id_list[]" value="' . $row['post_id'] . '" />';
- $template->assign_block_vars('report', array(
- 'U_FORUM' => "mcp.$phpEx$SID&amp;i=report&amp;mode=&amp;f={$row['forum_id']}",
- // Q: Why accessing the topic by a post_id instead of its topic_id?
- // A: To prevent the post from being hidden because of wrong encoding or different charset
- 'U_REPORT_TOPIC' => "mcp.$phpEx$SID&amp;i=report&amp;mode=report_view_topic&amp;t={$row['topic_id']}",
- 'U_VIEW_DETAILS'=> "mcp.$phpEx$SID&amp;i=queue&amp;start=$start&amp;mode=approve_details&amp;f={$forum_id}&amp;p={$row['post_id']}",
- 'U_VIEWPROFILE' => ($row['poster_id'] != ANONYMOUS) ? "memberlist.$phpEx$SID&amp;mode=viewprofile&amp;u={$row['poster_id']}" : '',
-
- 'REPORT_COUNT' => $row['report_count'],
- 'FORUM_NAME' => $row['forum_name'],
- 'TOPIC_TITLE' => $row['topic_title'],
- 'POSTER' => $poster,
- 'REPORT_TIME' => $user->format_date($row['report_time']),
- 'S_CHECKBOX' => $s_checkbox)
- );
+ case 'close':
+ case 'delete':
+ include_once($phpbb_root_path . 'includes/functions_messenger.'.$phpEx);
+
+ $post_id_list = request_var('post_id_list', array(0));
+
+ if (!sizeof($post_id_list))
+ {
+ trigger_error('NO_POST_SELECTED');
+ }
+
+ close_report($post_id_list, $mode, $action);
+
+ break;
}
- $db->sql_freeresult($result);
-
- // Now display the page
- $template->assign_vars(array(
- 'L_DISPLAY_ITEMS' => ($mode == 'unapproved_posts') ? $user->lang['DISPLAY_POSTS'] : $user->lang['DISPLAY_TOPICS'],
- 'S_FORUM_OPTIONS' => $forum_options)
- );
- $this->tpl_name = 'mcp_reports_front';
- }
-
- // View the reports for one topic or view one topic.
- function mcp_report_view($id, $mode)
- {
- global $phpbb_root_path, $config, $db, $phpEx;
- global $user, $template, $auth;
- //$this->tpl_name = 'mcp_reports';
- if(!isset($_POST['feedback_submit']))
+ switch ($mode)
{
- // Show the reports.
- $topic_id = request_var('t', 0);
- if ($topic_id == 0)
- {
- trigger_error('NO_TOPIC_SELECTED');
- }
-
- $topic_info = get_topic_data($topic_id, 'm_');
- $topic_info = $topic_info[$topic_id];
-
- $sql = "SELECT
- r.report_id, r.report_time, r.report_text, r.report_status,
- r.bbcode_uid as r_bbcode_uid, r.bbcode_bitfield as r_bbcode_bitfield,
- rre.reply_id, rre.reply_text, ure_from.username as reply_from_username,
- ure_to.username as reply_to_username,
- p.post_id, p.topic_id, p.forum_id, p.post_time, p.post_subject, p.post_text,
- p.bbcode_uid as p_bbcode_uid, p.bbcode_bitfield as p_bbcode_bitfield,
- u1.user_id as reporter_user_id, u1.username as reporter_username,
- u2.user_id as poster_user_id, u2.username as poster_username
- FROM " .
- REPORTS_TABLE . " r
- LEFT JOIN " . REPORTS_REPLIES_TABLE . " rre USING (report_id)
- LEFT JOIN " . USERS_TABLE . " ure_from ON (rre.from_user_id = ure_from.user_id)
- LEFT JOIN " . USERS_TABLE . " ure_to ON (rre.to_user_id = ure_to.user_id), " .
- POSTS_TABLE . " p, " .
- USERS_TABLE . " u1, " .
- USERS_TABLE . " u2
- WHERE
- r.user_id = u1.user_id
- AND r.post_id = p.post_id
- AND p.poster_id = u2.user_id
- AND p.topic_id = $topic_id
- ORDER BY post_id DESC, report_id DESC, reply_id ASC";
- $result = $db->sql_query($sql);
-
- include_once($phpbb_root_path . 'includes/bbcode.'.$phpEx);
- $old_post_id = 0;
- $old_report_id = 0;
- while ($row = $db->sql_fetchrow($result))
- {
- if($old_report_id != $row['report_id'])
+ case 'report_details':
+
+ $user->add_lang('posting');
+
+ $post_id = request_var('p', 0);
+
+ $post_info = get_post_data(array($post_id), 'm_approve');
+
+ if (!sizeof($post_info))
+ {
+ trigger_error('NO_POST_SELECTED');
+ }
+
+ $post_info = $post_info[$post_id];
+
+ $sql = 'SELECT r.user_id, r.report_closed, report_time, r.report_text, rr.reason_title, rr.reason_description, u.username
+ FROM ' . REPORTS_TABLE . ' r, ' . REASONS_TABLE . ' rr, ' . USERS_TABLE . " u
+ WHERE r.post_id = $post_id
+ AND rr.reason_id = r.reason_id
+ AND r.user_id = u.user_id";
+ $result = $db->sql_query($sql);
+
+ if (!($report = $db->sql_fetchrow($result)))
+ {
+ trigger_error('NO_POST_REPORT');
+ }
+
+ $db->sql_freeresult($result);
+
+ $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'])];
+ }
+
+ if (topic_review($post_info['topic_id'], $post_info['forum_id'], 'topic_review', 0, false))
+ {
+ $template->assign_vars(array(
+ 'S_TOPIC_REVIEW' => true,
+ 'TOPIC_TITLE' => $post_info['topic_title'])
+ );
+ }
+
+ // Set some vars
+ $poster = ($post_info['user_colour']) ? '<span style="color:#' . $post_info['user_colour'] . '">' . $post_info['username'] . '</span>' : $post_info['username'];
+
+ // Process message, leave it uncensored
+ $message = $post_info['post_text'];
+ if ($post_info['bbcode_bitfield'])
+ {
+ include_once($phpbb_root_path . 'includes/bbcode.'.$phpEx);
+ $bbcode = new bbcode($post_info['bbcode_bitfield']);
+ $bbcode->bbcode_second_pass($message, $post_info['bbcode_uid'], $post_info['bbcode_bitfield']);
+ }
+ $message = smiley_text($message);
+
+ $template->assign_vars(array(
+ 'S_MCP_REPORT' => true,
+ 'S_CLOSE_ACTION' => "{$phpbb_root_path}mcp.$phpEx$SID&amp;i=reports&amp;p=$post_id&amp;f=$forum_id",
+ 'S_CAN_VIEWIP' => $auth->acl_get('m_ip', $post_info['forum_id']),
+ 'S_POST_REPORTED' => $post_info['post_reported'],
+ 'S_POST_UNAPPROVED' => !$post_info['post_approved'],
+ 'S_POST_LOCKED' => $post_info['post_edit_locked'],
+ 'S_USER_NOTES' => $auth->acl_gets('m_', 'a_') ? true : false,
+
+ 'U_VIEW_PROFILE' => "{$phpbb_root_path}memberlist.$phpEx$SID&amp;mode=viewprofile&amp;u=" . $post_info['user_id'],
+ 'U_MCP_USER_NOTES' => "{$phpbb_root_path}mcp.$phpEx$SID&amp;i=notes&amp;mode=user_notes&amp;u=" . $post_info['user_id'],
+ 'U_MCP_WARN_USER' => "{$phpbb_root_path}mcp.$phpEx$SID&amp;i=warn&amp;mode=warn_user&amp;u=" . $post_info['user_id'],
+ 'U_VIEW_REPORTER_PROFILE' => "{$phpbb_root_path}memberlist.$phpEx$SID&amp;mode=viewprofile&amp;u=" . $report['user_id'],
+ 'U_MCP_REPORTER_NOTES' => "{$phpbb_root_path}mcp.$phpEx$SID&amp;i=notes&amp;mode=user_notes&amp;u=" . $report['user_id'],
+ 'U_MCP_WARN_REPORTER' => "{$phpbb_root_path}mcp.$phpEx$SID&amp;i=warn&amp;mode=warn_user&amp;u=" . $report['user_id'],
+ 'U_EDIT' => ($auth->acl_get('m_edit', $post_info['forum_id'])) ? "{$phpbb_root_path}posting.$phpEx$SID&amp;mode=edit&amp;f={$post_info['forum_id']}&amp;p={$post_info['post_id']}" : '',
+
+ 'EDIT_IMG' => $user->img('btn_edit', $user->lang['EDIT_POST']),
+
+ 'RETURN_REPORTS' => sprintf($user->lang['RETURN_REPORTS'], "<a href=\"{$phpbb_root_path}mcp.$phpEx$SID&amp;i=reports" . (($post_info['post_reported']) ? '&amp;mode=reports' : '&amp;mode=reports_closed') . "&amp;start=$start\">", '</a>'),
+ 'REPORTED_IMG' => $user->img('icon_reported', $user->lang['POST_REPORTED']),
+ 'REPORT_REASON_TITLE' => $reason['title'],
+ 'REPORT_REASON_DESCRIPTION' => $reason['description'],
+ 'REPORTER_NAME' => ($report['user_id'] == ANONYMOUS) ? $user->lang['GUEST'] : $report['username'],
+ 'REPORT_DATE' => $user->format_date($report['report_time']),
+ 'REPORT_TEXT' => $report['report_text'],
+
+ 'UNAPPROVED_IMG' => $user->img('icon_unapproved', $user->lang['POST_UNAPPROVED']),
+
+ 'POSTER_NAME' => $poster,
+ 'POST_PREVIEW' => $message,
+ 'POST_SUBJECT' => $post_info['post_subject'],
+ 'POST_DATE' => $user->format_date($post_info['post_time']),
+ 'POST_IP' => $post_info['poster_ip'],
+ 'POST_IPADDR' => @gethostbyaddr($post_info['poster_ip']),
+ 'POST_ID' => $post_info['post_id'])
+ );
+
+ $this->tpl_name = 'mcp_post';
+
+ break;
+
+ case 'reports':
+ case 'reports_closed':
+ $topic_id = request_var('t', 0);
+
+ $forum_info = array();
+ $forum_list_reports = get_forum_list('m_report', false, true); /** @todo m_reports? **/
+
+ if ($topic_id)
{
- if($old_post_id != $row['post_id'])
+ $topic_info = get_topic_data(array($topic_id));
+
+ if (!sizeof($topic_info))
{
- // Process message, leave it uncensored
- $message = $row['post_text'];
- if ($row['p_bbcode_bitfield'])
- {
- $bbcode = new bbcode($row['p_bbcode_bitfield']);
- $bbcode->bbcode_second_pass($message, $row['p_bbcode_uid'], $row['p_bbcode_bitfield']);
- }
- $message = smiley_text($message);
-
- $template->assign_block_vars('postrow', array(
- 'POST_ID' => $row['post_id'],
- 'POST_SUBJECT' => $row['post_subject'],
- 'POSTER_USER_ID' => $row['poster_user_id'],
- 'POSTER_NAME' => $row['poster_username'],
- 'U_POSTER_PROFILE' => ($row['poster_id'] != ANONYMOUS) ? "memberlist.$phpEx$SID&amp;mode=viewprofile&amp;u={$row['poster_id']}" : '',
- 'POST_DATE' => $user->format_date($row['post_time']),
- 'POST_PREVIEW' => $message,
- 'U_APPROVE_ACTION' => "{$phpbb_root_path}mcp.$phpEx$SID&amp;i=report&amp;mode=topic",
- 'U_EDIT' => ($auth->acl_get('m_edit', $row['forum_id'])) ? "{$phpbb_root_path}posting.$phpEx$SID&amp;mode=edit&amp;f={$row['forum_id']}&amp;p={$row['post_id']}" : '',
- 'U_VIEW' => "{$phpbb_root_path}viewtopic.$phpEx$SID&amp;f={$row['forum_id']}&amp;p={$row['post_id']}#{$row['post_id']}"
- )
- );
- } // Start post row.
- $old_post_id = $row['post_id'];
-
- // Process message, leave it uncensored
- $message = $row['report_text'];
- if ($row['r_bbcode_bitfield'])
+ trigger_error($user->lang['TOPIC_NOT_EXIST']);
+ }
+
+ $topic_info = $topic_info[$topic_id];
+ $forum_id = $topic_info['forum_id'];
+ }
+
+ if (!$forum_id)
+ {
+ $forum_list = array();
+ foreach ($forum_list_reports as $row)
{
- $bbcode = new bbcode($row['r_bbcode_bitfield']);
- $bbcode->bbcode_second_pass($message, $row['r_bbcode_uid'], $row['r_bbcode_bitfield']);
+ $forum_list[] = $row['forum_id'];
}
- $message = smiley_text($message);
-
- $template->assign_block_vars('postrow.reportrow', array(
- 'REPORT_ID' => $row['report_id'],
- 'REPORT_TIME' => $user->format_date($row['report_time']),
- 'REPORT_TEXT' => $message,
- 'REPORT_STATUS' => $row['report_status'],
- 'U_REPORTERPROFILE' => ($row['poster_id'] != ANONYMOUS) ? "memberlist.$phpEx$SID&amp;mode=viewprofile&amp;u={$row['reporter_user_id']}" : '',
- 'REPORTER_USER_ID' => $row['reporter_user_id'],
- 'REPORTER_USERNAME' => $row['reporter_username'],
- 'POSTER_USER_ID' => $row['poster_user_id'],
- 'POSTER_USERNAME' => $row['poster_username'],
- )
- );
+
+ if (!$forum_list = implode(', ', $forum_list))
+ {
+ trigger_error('NOT_MODERATOR');
+ }
+
+ $sql = 'SELECT SUM(forum_topics) as sum_forum_topics
+ FROM ' . FORUMS_TABLE . "
+ WHERE forum_id IN ($forum_list)";
+ $result = $db->sql_query($sql);
+ $forum_info['forum_topics'] = (int) $db->sql_fetchfield('sum_forum_topics', 0, $result);
+ $db->sql_freeresult($result);
+
+ }
+ else
+ {
+ $forum_info = get_forum_data(array($forum_id), 'm_report');
+
+ if (!sizeof($forum_info))
+ {
+ trigger_error('NOT_MODERATOR');
+ }
+
+ $forum_info = $forum_info[$forum_id];
+ $forum_list = $forum_id;
}
- $old_report_id = $row['report_id'];
- if($row['reply_text'] != '')
+ $forum_options = '<option value="0"' . (($forum_id == 0) ? ' selected="selected"' : '') . '>' . $user->lang['ALL_FORUMS'] . '</option>';
+ foreach ($forum_list_reports as $row)
{
- $template->assign_block_vars('postrow.reportrow.replyrow', array(
- 'REPLY_ID' => $row['reply_id'],
- 'REPLY_FROMUSERNAME' => $row['reply_from_username'],
- 'REPLY_TOUSERNAME' => $row['reply_to_username'],
- 'REPLY_TEXT' => $row['reply_text']
- ));
+ $forum_options .= '<option value="' . $row['forum_id'] . '"' . (($forum_id == $row['forum_id']) ? ' selected="selected"' : '') . '>' . $row['forum_name'] . '</option>';
}
- }
- $db->sql_freeresult($result);
-
- // Set some vars
- $poster = ($post_info['user_colour']) ? '<span style="color:#' . $post_info['user_colour'] . '">' . $post_info['username'] . '</span>' : $post_info['username'];
-
- $template->assign_vars(array(
- 'TOPIC_TITLE' => $topic_info['topic_title'],
- 'U_TOPIC' => "viewtopic.$phpEx$SID&amp;t={$topic_info['topic_id']}",
- 'U_FEEDBACK_ACTION' => $_SERVER['REQUEST_URI']
- )
- );
-
- $this->tpl_name = 'mcp_reports_topic';
- //$this->display($user->lang['MCP_QUEUE'], 'mcp_topicreports.html');
- } // No submit
- else
+ mcp_sorting('reports', $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)) : '';
+
+ if ($mode == 'reports')
+ {
+ $report_state = 'AND p.post_reported = 1';
+ }
+ else
+ {
+ $report_state = 'AND p.post_reported = 0 AND r.report_closed = 1';
+ }
+
+ $sql = 'SELECT p.post_id
+ FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . REPORTS_TABLE . ' r ' . (($sort_order_sql[0] == 'u') ? ', ' . USERS_TABLE . ' u' : '') . (($sort_order_sql[0] == 'r') ? ', ' . USERS_TABLE . ' ru' : '') . "
+ WHERE p.forum_id IN ($forum_list)
+ $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' : '') . "
+ " . (($topic_id) ? "AND p.topic_id = $topic_id" : '') . "
+ AND t.topic_id = p.topic_id
+ ORDER BY $sort_order_sql";
+ $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
+
+ $i = 0;
+ $post_ids = array();
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $post_ids[] = $row['post_id'];
+ $row_num[$row['post_id']] = $i++;
+ }
+
+ if (sizeof($post_ids))
+ {
+ $sql = 'SELECT f.forum_id, f.forum_name, t.topic_id, t.topic_title, p.post_id, p.post_subject, p.post_username, p.poster_id, p.post_time, u.username, r.user_id as reporter_id, ru.username as reporter_name, r.report_time
+ FROM ' . POSTS_TABLE . ' p, ' . FORUMS_TABLE . ' f, ' . TOPICS_TABLE . ' t, ' . REPORTS_TABLE . ' r, ' . USERS_TABLE . ' u, ' . USERS_TABLE . " ru
+ WHERE p.post_id IN (" . implode(', ', $post_ids) . ")
+ AND t.topic_id = p.topic_id
+ AND r.post_id = p.post_id
+ AND f.forum_id = p.forum_id
+ AND u.user_id = p.poster_id
+ AND ru.user_id = r.user_id";
+
+ $result = $db->sql_query($sql);
+ $post_data = $rowset = array();
+ while ($row = $db->sql_fetchrow($result))
+ {
+ $post_data[$row['post_id']] = $row;
+ }
+ $db->sql_freeresult($result);
+
+ foreach ($post_ids as $post_id)
+ {
+ $row = $post_data[$post_id];
+
+ if ($row['poster_id'] == ANONYMOUS)
+ {
+ $poster = (!empty($row['post_username'])) ? $row['post_username'] : $user->lang['GUEST'];
+ }
+ else
+ {
+ $poster = $row['username'];
+ }
+
+ $s_checkbox = '<input type="checkbox" name="post_id_list[]" value="' . $row['post_id'] . '" />';
+
+ $template->assign_block_vars('postrow', array(
+ 'U_VIEWFORUM' => "{$phpbb_root_path}viewforum.$phpEx$SID&amp;f=" . $row['forum_id'],
+ 'U_VIEWTOPIC' => "{$phpbb_root_path}viewtopic.$phpEx$SID&amp;f=" . $row['forum_id'] . '&amp;p=' . $row['post_id'] . '#p' . $row['post_id'],
+ 'U_VIEW_DETAILS' => "{$phpbb_root_path}mcp.$phpEx$SID&amp;i=reports&amp;start=$start&amp;mode=report_details&amp;f={$forum_id}&amp;p={$row['post_id']}",
+ 'U_VIEW_POSTER_PROFILE' => ($row['poster_id'] != ANONYMOUS) ? "{$phpbb_root_path}memberlist.$phpEx$SID&amp;mode=viewprofile&amp;u={$row['poster_id']}" : '',
+ 'U_VIEW_REPORTER_PROFILE' => ($row['reporter_id'] != ANONYMOUS) ? "{$phpbb_root_path}memberlist.$phpEx$SID&amp;mode=viewprofile&amp;u={$row['reporter_id']}" : '',
+
+ 'S_CHECKBOX' => $s_checkbox,
+ 'S_CLOSED' => ($mode == 'reports_closed') ? true : false,
+
+ 'FORUM_NAME' => $row['forum_name'],
+ 'POSTER' => $poster,
+ 'POST_SUBJECT' => $row['post_subject'],
+ 'POST_TIME' => $user->format_date($row['post_time']),
+ 'REPORTER' => ($row['reporter_id'] == ANONYMOUS) ? $user->lang['GUEST'] : $row['reporter_name'],
+ 'REPORT_TIME' => $user->format_date($row['report_time']),
+ 'TOPIC_TITLE' => $row['topic_title'])
+ );
+ }
+ unset($post_data, $post_ids, $row);
+ }
+
+ // Now display the page
+ $template->assign_vars(array(
+ 'L_DISPLAY_ITEMS' => $user->lang['DISPLAY_POSTS'],
+ 'S_MCP_ACTION' => "{$phpbb_root_path}mcp.$phpEx$SID&amp;i=$id&amp;mode=$mode&amp;t=0",
+ 'S_FORUM_OPTIONS' => $forum_options)
+ );
+
+ $this->tpl_name = 'mcp_reports';
+ break;
+ }
+ }
+}
+
+/**
+* Closes a report
+*/
+function close_report($post_id_list, $mode, $action)
+{
+ global $db, $template, $user, $config;
+ global $phpEx, $phpbb_root_path, $SID;
+
+ if (!($forum_id = check_ids($post_id_list, POSTS_TABLE, 'post_id', 'm_report')))
+ {
+ trigger_error('NOT_AUTHORIZED');
+ }
+
+ $redirect = request_var('redirect', $user->data['session_page']);
+ $success_msg = '';
+
+ $s_hidden_fields = build_hidden_fields(array(
+ 'i' => 'reports',
+ 'mode' => $mode,
+ 'post_id_list' => $post_id_list,
+ 'f' => $forum_id,
+ 'action' => $action,
+ 'redirect' => $redirect)
+ );
+
+ if (confirm_box(true))
+ {
+ $post_info = get_post_data($post_id_list, 'm_report');
+
+ $sql = 'SELECT r.post_id, r.report_closed, r.user_id, r.user_notify, u.username, u.user_email, u.user_jabber, u.user_lang, u.user_notify_type
+ FROM ' . REPORTS_TABLE . ' r, ' . USERS_TABLE . ' u
+ WHERE r.post_id IN (' . implode(',', array_keys($post_info)) . ')
+ ' . (($action == 'close') ? 'AND r.report_closed = 0' : '') . '
+ AND r.user_id = u.user_id';
+ $result = $db->sql_query($sql);
+
+ $reports = array();
+ while ($report = $db->sql_fetchrow($result))
{
- // Send feedback and close selected reports
- $selected_reports = request_var('sendfeedback', array('0'=>'0'));
- $report_close = request_var('feedback_close', '');
- $report_feedback = request_var('feedback_text', '');
-
- $post_ids = array();
- foreach($selected_reports as $key => $value)
- {
- $report_ids[] = $value;
- }
-
- if(count($report_ids) == 0)
+ $reports[$report['post_id']] = $report;
+ }
+
+ $db->sql_freeresult($result);
+
+ $close_report_posts = array();
+ $close_report_topics = array();
+ $notify_reporters = array();
+ foreach ($post_info as $post_id => $post_data)
+ {
+ if (isset($reports[$post_id]))
{
- // TODO: i18n
- trigger_error('No reports selected.');
+ $close_report_posts[] = $post_id;
+ $close_report_topics[] = $post_data['topic_id'];
+
+ if ($reports[$post_id]['user_notify'] && !$reports[$post_id]['report_closed'])
+ {
+ $notify_reporters[$post_id] = $reports[$post_id];
+ }
}
-
- $sql = "SELECT
- r.report_id, r.user_id, r.reason_id, r.post_id, r.report_text,
- u.username, u.user_email, u.user_jabber, u.user_lang, u.user_notify_type, u.user_options,
- rr.reason_name, rr.reason_description,
- p.post_id, p.post_subject,
- t.topic_title, t.forum_id
- FROM " . REPORTS_TABLE . " r, " .
- REASONS_TABLE . " rr, " .
- USERS_TABLE . " u, " .
- POSTS_TABLE . " p, " .
- TOPICS_TABLE . " t
- WHERE
- r.reason_id = rr.reason_id
- AND r.user_id = u.user_id
- AND r.post_id = p.post_id
- AND p.topic_id = t.topic_id
- AND report_id IN (" . implode(', ', $report_ids) . ")";
+ }
+
+ if (sizeof($close_report_posts))
+ {
+ $close_report_topics = array_unique($close_report_topics);
+
+ // Get a list of topics that still contain reported posts
+ $sql = 'SELECT DISTINCT t.topic_id
+ FROM ' . TOPICS_TABLE . ' t, ' . POSTS_TABLE . ' p
+ WHERE t.topic_id IN (' . implode(', ', $close_report_topics) . ')
+ AND p.post_reported = 1
+ AND p.post_id NOT IN (' . implode(', ', $close_report_posts) . ')
+ AND t.topic_id = p.topic_id';
$result = $db->sql_query($sql);
-
- while($row = $db->sql_fetchrow($result))
- {
- $feedback_data[$row['user_id']] = array(
- 'name' => $row['username'],
- 'email' => $row['user_email'],
- 'jabber'=> $row['user_jabber'],
- 'lang' => $row['user_lang'],
- 'notify_type' => $row['user_notify_type'],
- 'pm' => $user->optionget('report_pm_notify', $row['user_options']),
- 'report_id' => $row['report_id'],
- 'reporter' => $row['username'],
- 'moderator' => $user->data['username'],
- 'moderator_id' => $user->data['user_id'],
- 'reason' => $row['reason_desc'],
- 'report_feedback' => $report_feedback,
- 'text' => $row['report_text'],
- 'subject' => $row['topic_title'],
- 'view_post' => "viewtopic.$phpEx?f={$row['forum_id']}&amp;t={$row['topic_id']}&amp;p={$row['post_id']}&amp;#{$row['post_id']}"
-
- );
-
- $reported_posts[$row['post_id']]++;
-
- }
-
- // Only send feedback if there is feedback to send
- if($report_feedback != '')
+
+ $keep_report_topics = array();
+ while ($row = $db->sql_fetchrow($result))
{
- $this->report_feedback($feedback_data);
+ $keep_report_topics[] = $row['topic_id'];
}
-
- // See if we need to close the report, update notifications in viewforum/topic
-
- // Start transaction
+
+ $close_report_topics = array_diff($close_report_topics, $keep_report_topics);
+ unset($keep_report_topics);
+
$db->sql_transaction('begin');
-
- if ($report_close)
- {
- // Close the reports
- $sql = 'UPDATE ' . REPORTS_TABLE . '
- SET report_status = ' . REPORT_CLOSED . '
- WHERE report_id IN (' . implode(', ', $report_ids) . ')';
- $db->sql_query($sql);
- }
-
- // TODO: Should we remove the notification in viewforum/topic after feedback has been added to a report? Or should we introduce a 'report in progress' icon for viewforum/topic?
- // Figure out what posts are without open reports after this update.
- $sql = 'SELECT r.post_id, p.topic_id, sum(IF(report_status=1, 0, 1)) as open_reports
- FROM ' . REPORTS_TABLE . ' r
- LEFT JOIN ' . POSTS_TABLE . ' p USING (post_id)
- WHERE r.post_id IN (' . implode(', ', array_keys($reported_posts)) . ')
- GROUP BY r.post_id
- HAVING open_reports = 0';
- $result = $db->sql_query($sql);
- while($row = $db->sql_fetchrow($result))
+
+ if ($action == 'close')
{
- $resolved_posts[] = $row['post_id'];
- $resolved_topics[] = $row['topic_id'];
+ $sql = 'UPDATE ' . REPORTS_TABLE . '
+ SET report_closed = 1
+ WHERE post_id IN (' . implode(', ', $close_report_posts) . ')';
}
-
- // Mark those posts as resolved
- if(!empty($resolved_posts))
+ else
{
- $sql = 'UPDATE ' . POSTS_TABLE . ' SET
- post_reported = 0
- WHERE post_id IN (' . implode(', ', $resolved_posts) . ')';
- $db->sql_query($sql);
-
- // Mark topic as resolved because a moderator has taken a look at it.
- $sql = 'UPDATE ' . TOPICS_TABLE . ' SET
- topic_reported = 0
- WHERE topic_id IN (' . implode(', ', $resolved_topics) . ')';
- $db->sql_query($sql);
+ $sql = 'DELETE FROM ' . REPORTS_TABLE . '
+ WHERE post_id IN (' . implode(', ', $close_report_posts) . ')';
}
-
- // End transaction
- $db->sql_transaction('commit');
-
- // Say something nice to the moderator
- trigger_error('These reports have been closed. Thank you :)<br /> <a href="'.$_SERVER['REQUEST_URI'].'">return</a>');
-
-
- } // The form was submitted
- }
-
- // ----------------------------------------------------------------------------
-
- // Reply to reports and notify reporters of this event.
- function report_feedback($data)
- {
- global $config, $phpbb_root_path, $phpEx;
- global $user, $db;
+ $db->sql_query($sql);
-
- foreach ($data as $user_id => $reply_row)
- {
- // TODO: Include a subject?
- $sql_data = array(
- 'report_id' => $reply_row['report_id'],
- 'reply_time' => time(),
- 'reply_text' => $reply_row['report_feedback'],
- 'from_user_id' => $reply_row['moderator_id'],
- 'to_user_id' => $user_id
- );
- $db->sql_query('INSERT INTO ' . REPORTS_REPLIES_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_data));
+ $sql = 'UPDATE ' . POSTS_TABLE . '
+ SET post_reported = 0
+ WHERE post_id IN (' . implode(', ', $close_report_posts) . ')';
+ $db->sql_query($sql);
+
+ $sql = 'UPDATE ' . TOPICS_TABLE . '
+ SET topic_reported = 0
+ WHERE topic_id IN (' . implode(', ', $close_report_topics) . ')';
+ $db->sql_query($sql);
+
+ $db->sql_transaction('commit');
}
-
- // Notify the recipient of this reply
- include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
- include_once($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
- $messenger = new messenger();
+ unset($close_report_posts, $close_report_topics);
- $email_sig = str_replace('<br />', "\n", "-- \n" . $config['board_email_sig']);
- $email_template = 'report_feedback';
+ $messenger = new messenger();
- foreach ($data as $user_id => $notify_row)
+ // Notify reporters
+ if (sizeof($notify_reporters))
{
- // Send notification by email
- if (!$notify_row['pm'])
+ $email_sig = str_replace('<br />', "\n", "-- \n" . $config['board_email_sig']);
+
+ foreach ($notify_reporters as $post_id => $reporter)
{
- $messenger->to($notify_row['email'], $notify_row['name']);
- $messenger->im($notify_row['jabber'], $notify_row['name']);
- $messenger->replyto($config['board_email']);
+ if ($reporter['user_id'] == ANONYMOUS)
+ {
+ continue;
+ }
- $messenger->template($email_template, $notify_row['lang']);
+ $messenger->template('report_' . $action . 'd', $reporter['user_lang']);
+
+ $messenger->replyto($config['board_email']);
+ $messenger->to($reporter['user_email'], $reporter['username']);
+ $messenger->im($reporter['user_jabber'], $reporter['username']);
$messenger->assign_vars(array(
'EMAIL_SIG' => $email_sig,
'SITENAME' => $config['sitename'],
- 'USERNAME' => $notify_row['name'],
- 'SUBJECT' => $notify_row['subject'],
- 'REPORTER' => $notify_row['reporter'],
- 'MODERATOR' => $notify_row['moderator'],
-
- 'REPORT_REASON' => $notify_row['reason'],
- 'REPORT_TEXT' => $notify_row['text'],
- 'REPORT_FEEDBACK' => $notify_row['report_feedback'],
-
- 'U_VIEW_POST' => generate_board_url() . '/' . $notify_row['view_post'])
+ 'USERNAME' => $reporter['username'],
+ 'CLOSER_NAME' => $user->data['username'],
+ 'POST_SUBJECT' => censor_text($post_info[$post_id]['post_subject']),
+ 'TOPIC_TITLE' => censor_text($post_info[$post_id]['topic_title']))
);
- $messenger->send($notify_row['notify_type']);
+ $messenger->send($reporter['user_notify_type']);
$messenger->reset();
- //print "mail to " . $notify_row['email'] . "({$notify_row['notify_type']})";
-
- if ($messenger->queue)
- {
- $messenger->queue->save();
- }
}
- else
- {
- // Use messenger for getting the correct message, we use the email template
- $messenger->template($email_template, $notify_row['lang']);
- $messenger->assign_vars(array(
- 'EMAIL_SIG' => $email_sig,
- 'SITENAME' => $config['sitename'],
- 'USERNAME' => $notify_row['name'],
- 'SUBJECT' => $notify_row['subject'],
- 'REPORTER' => $notify_row['reporter'],
- 'MODERATOR' => $notify_row['moderator'],
-
- 'REPORT_REASON' => $notify_row['reason'],
- 'REPORT_TEXT' => $notify_row['text'],
- 'REPORT_FEEDBACK' => $notify_row['report_feedback'],
-
- 'U_VIEW_POST' => generate_board_url() . '/' . $notify_row['view_post'])
- );
+ $messenger->save_queue();
+ }
+ unset($notify_reporters, $post_info);
- // Parse message, don't send it.
- $messenger->send(false, true);
-
- // do not put in moderators outbox
- $pm_data = array(
- 'address_list' => array('u' => array($user_id => 'to')),
- 'from_user_id' => $user->data['user_id'],
- 'from_user_ip' => $user->data['user_ip'],
- 'from_username' => $user->data['username'],
- 'icon_id' => 0,
- 'enable_bbcode' => 0,
- 'enable_html' => 0,
- 'enable_smilies' => 0,
- 'enable_urls' => 1,
- 'enable_sig' => 0,
- 'message_md5' => md5($messenger->msg),
- 'bbcode_bitfield' => 0,
- 'bbcode_uid' => 0,
- 'attachment_data' => array(),
- 'filename_data' => array(),
- 'message' => $messenger->msg
- );
+ $success_msg = (sizeof($post_id_list) == 1) ? 'REPORT_' . strtoupper($action) . 'D_SUCCESS' : 'REPORTS_' . strtoupper($action) . 'D_SUCCESS';
+ }
+ else
+ {
+ confirm_box(false, $user->lang[strtoupper($action) . '_REPORT' . ((sizeof($post_id_list) == 1) ? '' : 'S') . '_CONFIRM'], $s_hidden_fields);
+ }
- //function submit_pm($mode, $subject, &$data, $update_message, $put_in_outbox)
- submit_pm('post', $notify_row['subject'], $pm_data, true, false);
+ $redirect = request_var('redirect', "index.$phpEx$SID");
- // Break the sending process...
- $messenger->reset();
+ if (strpos($redirect, '?') === false)
+ {
+ $redirect = substr_replace($redirect, ".$phpEx$SID&", strpos($redirect, '&'), 1);
+ }
- //print "PM to " . $notify_row['name'];
- }
+ if (!$success_msg)
+ {
+ redirect($redirect);
+ }
+ else
+ {
+ meta_refresh(3, "viewforum.$phpEx$SID&amp;f=$forum_id");
+ trigger_error($user->lang[$success_msg] . '<br /><br />' . sprintf($user->lang['RETURN_FORUM'], "<a href=\"{$phpbb_root_path}viewforum.$phpEx$SID&amp;f=" . $forum_id . '">', '</a>'));
+ }
+}
- // Add the feedback to the report
- $message = $notify_row['report_feedback'];
- }
- unset($messenger);
+/**
+* @package module_install
+*/
+class mcp_reports_info
+{
+ function module()
+ {
+ return array(
+ 'filename' => 'mcp_reports',
+ 'title' => 'MCP_REPORTS',
+ 'version' => '1.0.0',
+ 'modes' => array(
+ 'report_details' => array('title' => 'MCP_REPORT_DETAILS', 'auth' => 'acl_m_report || aclf_m_report'),
+ 'reports' => array('title' => 'MCP_REPORTS', 'auth' => 'acl_m_report ||aclf_m_report'),
+ 'reports_closed' => array('title' => 'MCP_REPORTS_CLOSED', 'auth' => 'acl_m_report || aclf_m_report'),
+ ),
+ );
+ }
+
+ function install()
+ {
+ }
+
+ function uninstall()
+ {
}
}
+
?> \ No newline at end of file