Register
phpBB.com Wiki · Home Projects Help

root / trunk / phpBB / report.php

1 3604 ludovic_arnaud
<?php
2 8146 acydburn
/**
3 5114 acydburn
*
4 5114 acydburn
* @package phpBB3
5 5114 acydburn
* @version $Id$
6 8146 acydburn
* @copyright (c) 2005 phpBB Group
7 8146 acydburn
* @license http://opensource.org/licenses/gpl-license.php GNU Public License
8 5114 acydburn
*
9 5114 acydburn
*/
10 3604 ludovic_arnaud
11 5114 acydburn
/**
12 5883 acydburn
* @ignore
13 5114 acydburn
*/
14 3604 ludovic_arnaud
define('IN_PHPBB', true);
15 8572 acydburn
if (!defined('PHPBB_ROOT_PATH')) define('PHPBB_ROOT_PATH', './');
16 8572 acydburn
if (!defined('PHP_EXT')) define('PHP_EXT', substr(strrchr(__FILE__, '.'), 1));
17 8572 acydburn
include(PHPBB_ROOT_PATH . 'common.' . PHP_EXT);
18 8572 acydburn
include(PHPBB_ROOT_PATH . 'includes/functions_display.' . PHP_EXT);
19 3604 ludovic_arnaud
20 3604 ludovic_arnaud
// Start session management
21 5250 acydburn
$user->session_begin();
22 3604 ludovic_arnaud
$auth->acl($user->data);
23 4844 acydburn
$user->setup('mcp');
24 3953 psotfx
25 6569 naderman
$forum_id		= request_var('f', 0);
26 6569 naderman
$post_id		= request_var('p', 0);
27 6569 naderman
$reason_id		= request_var('reason_id', 0);
28 6584 acydburn
$report_text	= utf8_normalize_nfc(request_var('report_text', '', true));
29 7409 acydburn
$user_notify	= ($user->data['is_registered']) ? request_var('notify', 0) : false;
30 6569 naderman
31 6015 acydburn
$submit = (isset($_POST['submit'])) ? true : false;
32 3604 ludovic_arnaud
33 5622 acydburn
if (!$post_id)
34 4883 acydburn
{
35 6555 acydburn
	trigger_error('NO_POST_SELECTED');
36 4883 acydburn
}
37 4883 acydburn
38 8572 acydburn
$redirect_url = append_sid('viewtopic', "f=$forum_id&amp;p=$post_id") . "#p$post_id";
39 4883 acydburn
40 3953 psotfx
// Has the report been cancelled?
41 3953 psotfx
if (isset($_POST['cancel']))
42 3953 psotfx
{
43 4883 acydburn
	redirect($redirect_url);
44 3953 psotfx
}
45 3953 psotfx
46 3953 psotfx
// Grab all relevant data
47 6030 grahamje
$sql = 'SELECT t.*, p.*
48 6030 grahamje
	FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . " t
49 5622 acydburn
	WHERE p.post_id = $post_id
50 6030 grahamje
		AND p.topic_id = t.topic_id";
51 3604 ludovic_arnaud
$result = $db->sql_query($sql);
52 5622 acydburn
$report_data = $db->sql_fetchrow($result);
53 5622 acydburn
$db->sql_freeresult($result);
54 3604 ludovic_arnaud
55 5622 acydburn
if (!$report_data)
56 3604 ludovic_arnaud
{
57 5622 acydburn
	trigger_error('POST_NOT_EXIST');
58 3604 ludovic_arnaud
}
59 3604 ludovic_arnaud
60 6030 grahamje
$forum_id = (int) ($report_data['forum_id']) ? $report_data['forum_id'] : $forum_id;
61 6030 grahamje
$topic_id = (int) $report_data['topic_id'];
62 3604 ludovic_arnaud
63 6063 naderman
$sql = 'SELECT *
64 6063 naderman
	FROM ' . FORUMS_TABLE . '
65 6063 naderman
	WHERE forum_id = ' . $forum_id;
66 6063 naderman
$result = $db->sql_query($sql);
67 6063 naderman
$forum_data = $db->sql_fetchrow($result);
68 6470 acydburn
$db->sql_freeresult($result);
69 6063 naderman
70 6063 naderman
if (!$forum_data)
71 6063 naderman
{
72 6063 naderman
	trigger_error('FORUM_NOT_EXIST');
73 6063 naderman
}
74 6063 naderman
75 5622 acydburn
// Check required permissions
76 5622 acydburn
$acl_check_ary = array('f_list' => 'POST_NOT_EXIST', 'f_read' => 'USER_CANNOT_READ', 'f_report' => 'USER_CANNOT_REPORT');
77 5622 acydburn
78 5622 acydburn
foreach ($acl_check_ary as $acl => $error)
79 3604 ludovic_arnaud
{
80 5622 acydburn
	if (!$auth->acl_get($acl, $forum_id))
81 3953 psotfx
	{
82 5622 acydburn
		trigger_error($error);
83 3953 psotfx
	}
84 3604 ludovic_arnaud
}
85 5622 acydburn
unset($acl_check_ary);
86 3604 ludovic_arnaud
87 5771 naderman
if ($report_data['post_reported'])
88 4193 ludovic_arnaud
{
89 5771 naderman
	$message = $user->lang['ALREADY_REPORTED'];
90 6015 acydburn
	$message .= '<br /><br />' . sprintf($user->lang['RETURN_TOPIC'], '<a href="' . $redirect_url . '">', '</a>');
91 5622 acydburn
	trigger_error($message);
92 4012 ludovic_arnaud
}
93 4012 ludovic_arnaud
94 5622 acydburn
// Submit report?
95 6015 acydburn
if ($submit && $reason_id)
96 3604 ludovic_arnaud
{
97 5622 acydburn
	$sql = 'SELECT *
98 6021 acydburn
		FROM ' . REPORTS_REASONS_TABLE . "
99 3953 psotfx
		WHERE reason_id = $reason_id";
100 3953 psotfx
	$result = $db->sql_query($sql);
101 5622 acydburn
	$row = $db->sql_fetchrow($result);
102 5622 acydburn
	$db->sql_freeresult($result);
103 3953 psotfx
104 6470 acydburn
	if (!$row || (!$report_text && strtolower($row['reason_title']) == 'other'))
105 3798 ludovic_arnaud
	{
106 3798 ludovic_arnaud
		trigger_error('EMPTY_REPORT');
107 3798 ludovic_arnaud
	}
108 3798 ludovic_arnaud
109 3604 ludovic_arnaud
	$sql_ary = array(
110 4883 acydburn
		'reason_id'		=> (int) $reason_id,
111 5622 acydburn
		'post_id'		=> $post_id,
112 4883 acydburn
		'user_id'		=> (int) $user->data['user_id'],
113 4883 acydburn
		'user_notify'	=> (int) $user_notify,
114 5622 acydburn
		'report_closed'	=> 0,
115 4883 acydburn
		'report_time'	=> (int) time(),
116 4883 acydburn
		'report_text'	=> (string) $report_text
117 3604 ludovic_arnaud
	);
118 3604 ludovic_arnaud
119 5622 acydburn
	$sql = 'INSERT INTO ' . REPORTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
120 5622 acydburn
	$db->sql_query($sql);
121 5622 acydburn
	$report_id = $db->sql_nextid();
122 5622 acydburn
123 5622 acydburn
	if (!$report_data['post_reported'])
124 4012 ludovic_arnaud
	{
125 5771 naderman
		$sql = 'UPDATE ' . POSTS_TABLE . '
126 5771 naderman
			SET post_reported = 1
127 5622 acydburn
			WHERE post_id = ' . $post_id;
128 4012 ludovic_arnaud
		$db->sql_query($sql);
129 4012 ludovic_arnaud
	}
130 3604 ludovic_arnaud
131 5622 acydburn
	if (!$report_data['topic_reported'])
132 3604 ludovic_arnaud
	{
133 5771 naderman
		$sql = 'UPDATE ' . TOPICS_TABLE . '
134 5771 naderman
			SET topic_reported = 1
135 7432 vic_delfant
			WHERE topic_id = ' . $report_data['topic_id'] . '
136 7432 vic_delfant
				OR topic_moved_id = ' . $report_data['topic_id'];
137 4978 acydburn
		$db->sql_query($sql);
138 4978 acydburn
	}
139 4978 acydburn
140 4883 acydburn
	meta_refresh(3, $redirect_url);
141 3798 ludovic_arnaud
142 6015 acydburn
	$message = $user->lang['POST_REPORTED_SUCCESS'] . '<br /><br />' . sprintf($user->lang['RETURN_TOPIC'], '<a href="' . $redirect_url . '">', '</a>');
143 3953 psotfx
	trigger_error($message);
144 3604 ludovic_arnaud
}
145 3604 ludovic_arnaud
146 5622 acydburn
// Generate the reasons
147 5622 acydburn
display_reasons($reason_id);
148 3953 psotfx
149 4012 ludovic_arnaud
$template->assign_vars(array(
150 4978 acydburn
	'REPORT_TEXT'		=> $report_text,
151 8572 acydburn
	'S_REPORT_ACTION'	=> append_sid('report', 'f=' . $forum_id . '&amp;p=' . $post_id),
152 4445 ludovic_arnaud
153 5622 acydburn
	'S_NOTIFY'			=> $user_notify,
154 5622 acydburn
	'S_CAN_NOTIFY'		=> ($user->data['is_registered']) ? true : false)
155 4883 acydburn
);
156 3953 psotfx
157 6063 naderman
generate_forum_nav($forum_data);
158 3953 psotfx
159 3953 psotfx
// Start output of page
160 5622 acydburn
page_header($user->lang['REPORT_POST']);
161 3953 psotfx
162 3604 ludovic_arnaud
$template->set_filenames(array(
163 3953 psotfx
	'body' => 'report_body.html')
164 3953 psotfx
);
165 3604 ludovic_arnaud
166 4012 ludovic_arnaud
page_footer();
167 3604 ludovic_arnaud
168 3604 ludovic_arnaud
?>