Verzeichnisstruktur phpBB-3.3.15
- Veröffentlicht
- 28.08.2024
So funktioniert es
|
|
Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück |
Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis. |
|
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
mcp_front.php
001 <?php
002 /**
003 *
004 * This file is part of the phpBB Forum Software package.
005 *
006 * @copyright (c) phpBB Limited <https://www.phpbb.com>
007 * @license GNU General Public License, version 2 (GPL-2.0)
008 *
009 * For full copyright and license information, please see
010 * the docs/CREDITS.txt file.
011 *
012 */
013
014 /**
015 * @ignore
016 */
017 if (!defined('IN_PHPBB'))
018 {
019 exit;
020 }
021
022 /**
023 * MCP Front Panel
024 */
025 function mcp_front_view($id, $mode, $action)
026 {
027 global $phpEx, $phpbb_root_path;
028 global $template, $db, $user, $auth, $module;
029 global $phpbb_dispatcher, $request;
030
031 // Latest 5 unapproved
032 if ($module->loaded('queue'))
033 {
034 $forum_list = array_values(array_intersect(get_forum_list('f_read'), get_forum_list('m_approve')));
035 $post_list = array();
036 $forum_names = array();
037
038 $forum_id = $request->variable('f', 0);
039
040 $template->assign_var('S_SHOW_UNAPPROVED', (!empty($forum_list)) ? true : false);
041
042 if (!empty($forum_list))
043 {
044 $sql_ary = array(
045 'SELECT' => 'COUNT(post_id) AS total',
046 'FROM' => array(
047 POSTS_TABLE => 'p',
048 ),
049 'WHERE' => $db->sql_in_set('p.forum_id', $forum_list) . '
050 AND ' . $db->sql_in_set('p.post_visibility', array(ITEM_UNAPPROVED, ITEM_REAPPROVE))
051 );
052
053 /**
054 * Allow altering the query to get the number of unapproved posts
055 *
056 * @event core.mcp_front_queue_unapproved_total_before
057 * @var array sql_ary Query array to get the total number of unapproved posts
058 * @var array forum_list List of forums to look for unapproved posts
059 * @since 3.1.5-RC1
060 */
061 $vars = array('sql_ary', 'forum_list');
062 extract($phpbb_dispatcher->trigger_event('core.mcp_front_queue_unapproved_total_before', compact($vars)));
063
064 $sql = $db->sql_build_query('SELECT', $sql_ary);
065 $result = $db->sql_query($sql);
066 $total = (int) $db->sql_fetchfield('total');
067 $db->sql_freeresult($result);
068
069 if ($total)
070 {
071 $sql = 'SELECT forum_id, forum_name
072 FROM ' . FORUMS_TABLE . '
073 WHERE ' . $db->sql_in_set('forum_id', $forum_list);
074 $result = $db->sql_query($sql);
075
076 while ($row = $db->sql_fetchrow($result))
077 {
078 $forum_names[$row['forum_id']] = $row['forum_name'];
079 }
080 $db->sql_freeresult($result);
081
082 $sql = 'SELECT post_id
083 FROM ' . POSTS_TABLE . '
084 WHERE ' . $db->sql_in_set('forum_id', $forum_list) . '
085 AND ' . $db->sql_in_set('post_visibility', array(ITEM_UNAPPROVED, ITEM_REAPPROVE)) . '
086 ORDER BY post_time DESC, post_id DESC';
087 $result = $db->sql_query_limit($sql, 5);
088
089 while ($row = $db->sql_fetchrow($result))
090 {
091 $post_list[] = $row['post_id'];
092 }
093 $db->sql_freeresult($result);
094
095 if (empty($post_list))
096 {
097 $total = 0;
098 }
099 }
100
101 /**
102 * Alter list of posts and total as required
103 *
104 * @event core.mcp_front_view_queue_postid_list_after
105 * @var int total Number of unapproved posts
106 * @var array post_list List of unapproved posts
107 * @var array forum_list List of forums that contain the posts
108 * @var array forum_names Associative array with forum_id as key and its corresponding forum_name as value
109 * @since 3.1.0-RC3
110 */
111 $vars = array('total', 'post_list', 'forum_list', 'forum_names');
112 extract($phpbb_dispatcher->trigger_event('core.mcp_front_view_queue_postid_list_after', compact($vars)));
113
114 if ($total)
115 {
116 $sql = 'SELECT p.post_id, p.post_subject, p.post_time, p.post_attachment, p.poster_id, p.post_username, u.username, u.username_clean, u.user_colour, t.topic_id, t.topic_title, t.topic_first_post_id, p.forum_id
117 FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . ' t, ' . USERS_TABLE . ' u
118 WHERE ' . $db->sql_in_set('p.post_id', $post_list) . '
119 AND t.topic_id = p.topic_id
120 AND p.poster_id = u.user_id
121 ORDER BY p.post_time DESC, p.post_id DESC';
122
123 /**
124 * Alter posts data SQL query
125 *
126 * @event core.mcp_front_view_modify_posts_data_sql
127 * @var array forum_list List of forums that contain the posts
128 * @var array forum_names Associative array with forum_id as key and its corresponding forum_name as value
129 * @var array post_list List of unapproved posts
130 * @var string sql String with the SQL query to be executed
131 * @var int total Number of unapproved posts
132 * @since 3.3.5-RC1
133 */
134 $vars = [
135 'forum_list',
136 'forum_names',
137 'post_list',
138 'sql',
139 'total',
140 ];
141 extract($phpbb_dispatcher->trigger_event('core.mcp_front_view_modify_posts_data_sql', compact($vars)));
142
143 $result = $db->sql_query($sql);
144
145 while ($row = $db->sql_fetchrow($result))
146 {
147 $unapproved_post_row = [
148 'U_POST_DETAILS' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=queue&mode=approve_details&p=' . $row['post_id']),
149 'U_MCP_FORUM' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=forum_view&f=' . $row['forum_id']),
150 'U_MCP_TOPIC' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=topic_view&t=' . $row['topic_id']),
151 'U_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']),
152 'U_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . $row['topic_id']),
153
154 'AUTHOR_FULL' => get_username_string('full', $row['poster_id'], $row['username'], $row['user_colour']),
155 'AUTHOR' => get_username_string('username', $row['poster_id'], $row['username'], $row['user_colour']),
156 'AUTHOR_COLOUR' => get_username_string('colour', $row['poster_id'], $row['username'], $row['user_colour']),
157 'U_AUTHOR' => get_username_string('profile', $row['poster_id'], $row['username'], $row['user_colour']),
158
159 'FORUM_NAME' => $forum_names[$row['forum_id']],
160 'POST_ID' => $row['post_id'],
161 'TOPIC_TITLE' => $row['topic_title'],
162 'SUBJECT' => ($row['post_subject']) ? $row['post_subject'] : $user->lang['NO_SUBJECT'],
163 'POST_TIME' => $user->format_date($row['post_time']),
164 'ATTACH_ICON_IMG' => ($auth->acl_get('u_download') && $auth->acl_get('f_download', $row['forum_id']) && $row['post_attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '',
165 ];
166
167 /**
168 * Alter unapproved posts template block for MCP front page
169 *
170 * @event core.mcp_front_view_modify_unapproved_post_row
171 * @var array forum_names Array containing forum names
172 * @var string mode MCP front view mode
173 * @var array row Array with unapproved post data
174 * @var array unapproved_post_row Template block array of the unapproved post
175 * @since 3.3.5-RC1
176 */
177 $vars = [
178 'forum_names',
179 'mode',
180 'row',
181 'unapproved_post_row',
182 ];
183 extract($phpbb_dispatcher->trigger_event('core.mcp_front_view_modify_unapproved_post_row', compact($vars)));
184
185 $template->assign_block_vars('unapproved', $unapproved_post_row);
186 }
187 $db->sql_freeresult($result);
188 }
189
190 $s_hidden_fields = build_hidden_fields(array(
191 'redirect' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main' . (($forum_id) ? '&f=' . $forum_id : ''))
192 ));
193
194 $template->assign_vars(array(
195 'S_HIDDEN_FIELDS' => $s_hidden_fields,
196 'S_MCP_QUEUE_ACTION' => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=queue"),
197 'L_UNAPPROVED_TOTAL' => $user->lang('UNAPPROVED_POSTS_TOTAL', (int) $total),
198 'S_HAS_UNAPPROVED_POSTS'=> ($total != 0),
199 ));
200 }
201 }
202
203 // Latest 5 reported
204 if ($module->loaded('reports'))
205 {
206 $forum_list = array_values(array_intersect(get_forum_list('f_read'), get_forum_list('m_report')));
207
208 $template->assign_var('S_SHOW_REPORTS', (!empty($forum_list)) ? true : false);
209
210 if (!empty($forum_list))
211 {
212 $sql = 'SELECT COUNT(r.report_id) AS total
213 FROM ' . REPORTS_TABLE . ' r, ' . POSTS_TABLE . ' p
214 WHERE r.post_id = p.post_id
215 AND r.pm_id = 0
216 AND r.report_closed = 0
217 AND ' . $db->sql_in_set('p.forum_id', $forum_list);
218
219 /**
220 * Alter sql query to count the number of reported posts
221 *
222 * @event core.mcp_front_reports_count_query_before
223 * @var string sql The query string used to get the number of reports that exist
224 * @var array forum_list List of forums that contain the posts
225 * @since 3.1.5-RC1
226 */
227 $vars = array('sql', 'forum_list');
228 extract($phpbb_dispatcher->trigger_event('core.mcp_front_reports_count_query_before', compact($vars)));
229
230 $result = $db->sql_query($sql);
231 $total = (int) $db->sql_fetchfield('total');
232 $db->sql_freeresult($result);
233
234 if ($total)
235 {
236 $sql_ary = array(
237 'SELECT' => 'r.report_time, p.post_id, p.post_subject, p.post_time, p.post_attachment, 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, t.topic_id, t.topic_title, f.forum_id, f.forum_name',
238
239 'FROM' => array(
240 REPORTS_TABLE => 'r',
241 REPORTS_REASONS_TABLE => 'rr',
242 TOPICS_TABLE => 't',
243 USERS_TABLE => array('u', 'u2'),
244 POSTS_TABLE => 'p',
245 ),
246
247 'LEFT_JOIN' => array(
248 array(
249 'FROM' => array(FORUMS_TABLE => 'f'),
250 'ON' => 'f.forum_id = p.forum_id',
251 ),
252 ),
253
254 'WHERE' => 'r.post_id = p.post_id
255 AND r.pm_id = 0
256 AND r.report_closed = 0
257 AND r.reason_id = rr.reason_id
258 AND p.topic_id = t.topic_id
259 AND r.user_id = u.user_id
260 AND p.poster_id = u2.user_id
261 AND ' . $db->sql_in_set('p.forum_id', $forum_list),
262
263 'ORDER_BY' => 'p.post_time DESC, p.post_id DESC',
264 );
265
266 /**
267 * Alter sql query to get latest reported posts
268 *
269 * @event core.mcp_front_reports_listing_query_before
270 * @var array sql_ary Associative array with the query to be executed
271 * @var array forum_list List of forums that contain the posts
272 * @since 3.1.0-RC3
273 */
274 $vars = array('sql_ary', 'forum_list');
275 extract($phpbb_dispatcher->trigger_event('core.mcp_front_reports_listing_query_before', compact($vars)));
276
277 $sql = $db->sql_build_query('SELECT', $sql_ary);
278 $result = $db->sql_query_limit($sql, 5);
279
280 while ($row = $db->sql_fetchrow($result))
281 {
282 $reported_post_row = [
283 'U_POST_DETAILS' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'p=' . $row['post_id'] . "&i=reports&mode=report_details"),
284 'U_MCP_FORUM' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'f=' . $row['forum_id'] . "&i=$id&mode=forum_view"),
285 'U_MCP_TOPIC' => append_sid("{$phpbb_root_path}mcp.$phpEx", 't=' . $row['topic_id'] . "&i=$id&mode=topic_view"),
286 'U_FORUM' => append_sid("{$phpbb_root_path}viewforum.$phpEx", 'f=' . $row['forum_id']),
287 'U_TOPIC' => append_sid("{$phpbb_root_path}viewtopic.$phpEx", 't=' . $row['topic_id']),
288
289 'REPORTER_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
290 'REPORTER' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']),
291 'REPORTER_COLOUR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']),
292 'U_REPORTER' => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']),
293
294 'AUTHOR_FULL' => get_username_string('full', $row['author_id'], $row['author_name'], $row['author_colour']),
295 'AUTHOR' => get_username_string('username', $row['author_id'], $row['author_name'], $row['author_colour']),
296 'AUTHOR_COLOUR' => get_username_string('colour', $row['author_id'], $row['author_name'], $row['author_colour']),
297 'U_AUTHOR' => get_username_string('profile', $row['author_id'], $row['author_name'], $row['author_colour']),
298
299 'FORUM_NAME' => $row['forum_name'],
300 'TOPIC_TITLE' => $row['topic_title'],
301 'SUBJECT' => ($row['post_subject']) ? $row['post_subject'] : $user->lang['NO_SUBJECT'],
302 'REPORT_TIME' => $user->format_date($row['report_time']),
303 'POST_TIME' => $user->format_date($row['post_time']),
304 'ATTACH_ICON_IMG' => ($auth->acl_get('u_download') && $auth->acl_get('f_download', $row['forum_id']) && $row['post_attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '',
305 ];
306
307 /**
308 * Alter reported posts template block for MCP front page
309 *
310 * @event core.mcp_front_view_modify_reported_post_row
311 * @var array forum_list List of forums that contain the posts
312 * @var string mode MCP front view mode
313 * @var array reported_post_row Template block array of the reported post
314 * @var array row Array with reported post data
315 * @since 3.3.5-RC1
316 */
317 $vars = [
318 'forum_list',
319 'mode',
320 'reported_post_row',
321 'row',
322 ];
323 extract($phpbb_dispatcher->trigger_event('core.mcp_front_view_modify_reported_post_row', compact($vars)));
324
325 $template->assign_block_vars('report', $reported_post_row);
326 }
327 $db->sql_freeresult($result);
328 }
329
330 $template->assign_vars(array(
331 'L_REPORTS_TOTAL' => $user->lang('REPORTS_TOTAL', (int) $total),
332 'S_HAS_REPORTS' => ($total != 0),
333 ));
334 }
335 }
336
337 // Latest 5 reported PMs
338 if ($module->loaded('pm_reports') && $auth->acl_get('m_pm_report'))
339 {
340 $template->assign_var('S_SHOW_PM_REPORTS', true);
341 $user->add_lang(array('ucp'));
342
343 $sql = 'SELECT COUNT(r.report_id) AS total
344 FROM ' . REPORTS_TABLE . ' r, ' . PRIVMSGS_TABLE . ' p
345 WHERE r.post_id = 0
346 AND r.pm_id = p.msg_id
347 AND r.report_closed = 0';
348 $result = $db->sql_query($sql);
349 $total = (int) $db->sql_fetchfield('total');
350 $db->sql_freeresult($result);
351
352 if ($total)
353 {
354 if (!function_exists('get_recipient_strings'))
355 {
356 include($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
357 }
358
359 $sql_ary = array(
360 'SELECT' => 'r.report_id, r.report_time, p.msg_id, p.message_subject, p.message_time, p.to_address, p.bcc_address, p.message_attachment, 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',
361
362 'FROM' => array(
363 REPORTS_TABLE => 'r',
364 REPORTS_REASONS_TABLE => 'rr',
365 USERS_TABLE => array('u', 'u2'),
366 PRIVMSGS_TABLE => 'p',
367 ),
368
369 'WHERE' => 'r.pm_id = p.msg_id
370 AND r.post_id = 0
371 AND r.report_closed = 0
372 AND r.reason_id = rr.reason_id
373 AND r.user_id = u.user_id
374 AND p.author_id = u2.user_id',
375
376 'ORDER_BY' => 'p.message_time DESC',
377 );
378 $sql = $db->sql_build_query('SELECT', $sql_ary);
379 $result = $db->sql_query_limit($sql, 5);
380
381 $pm_by_id = $pm_list = array();
382 while ($row = $db->sql_fetchrow($result))
383 {
384 $pm_by_id[(int) $row['msg_id']] = $row;
385 $pm_list[] = (int) $row['msg_id'];
386 }
387 $db->sql_freeresult($result);
388
389 $address_list = get_recipient_strings($pm_by_id);
390
391 foreach ($pm_list as $message_id)
392 {
393 $row = $pm_by_id[$message_id];
394
395 $template->assign_block_vars('pm_report', array(
396 'U_PM_DETAILS' => append_sid("{$phpbb_root_path}mcp.$phpEx", 'r=' . $row['report_id'] . "&i=pm_reports&mode=pm_report_details"),
397
398 'REPORTER_FULL' => get_username_string('full', $row['user_id'], $row['username'], $row['user_colour']),
399 'REPORTER' => get_username_string('username', $row['user_id'], $row['username'], $row['user_colour']),
400 'REPORTER_COLOUR' => get_username_string('colour', $row['user_id'], $row['username'], $row['user_colour']),
401 'U_REPORTER' => get_username_string('profile', $row['user_id'], $row['username'], $row['user_colour']),
402
403 'PM_AUTHOR_FULL' => get_username_string('full', $row['author_id'], $row['author_name'], $row['author_colour']),
404 'PM_AUTHOR' => get_username_string('username', $row['author_id'], $row['author_name'], $row['author_colour']),
405 'PM_AUTHOR_COLOUR' => get_username_string('colour', $row['author_id'], $row['author_name'], $row['author_colour']),
406 'U_PM_AUTHOR' => get_username_string('profile', $row['author_id'], $row['author_name'], $row['author_colour']),
407
408 'PM_SUBJECT' => $row['message_subject'],
409 'REPORT_TIME' => $user->format_date($row['report_time']),
410 'PM_TIME' => $user->format_date($row['message_time']),
411 'RECIPIENTS' => implode(', ', $address_list[$row['msg_id']]),
412 'ATTACH_ICON_IMG' => ($auth->acl_get('u_download') && $row['message_attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '',
413 ));
414 }
415 }
416
417 $template->assign_vars(array(
418 'L_PM_REPORTS_TOTAL' => $user->lang('PM_REPORTS_TOTAL', (int) $total),
419 'S_HAS_PM_REPORTS' => ($total != 0),
420 ));
421 }
422
423 // Latest 5 logs
424 if ($module->loaded('logs'))
425 {
426 $forum_list = array_values(array_intersect(get_forum_list('f_read'), get_forum_list('m_')));
427
428 if (!empty($forum_list))
429 {
430 $log_count = false;
431 $log = array();
432 view_log('mod', $log, $log_count, 5, 0, $forum_list);
433
434 foreach ($log as $row)
435 {
436 $template->assign_block_vars('log', array(
437 'USERNAME' => $row['username_full'],
438 'IP' => $row['ip'],
439 'TIME' => $user->format_date($row['time']),
440 'ACTION' => $row['action'],
441 'U_VIEW_TOPIC' => (!empty($row['viewtopic'])) ? $row['viewtopic'] : '',
442 'U_VIEWLOGS' => (!empty($row['viewlogs'])) ? $row['viewlogs'] : '')
443 );
444 }
445 }
446
447 $template->assign_vars(array(
448 'S_SHOW_LOGS' => (!empty($forum_list)) ? true : false,
449 'S_HAS_LOGS' => (!empty($log)) ? true : false)
450 );
451 }
452
453 $template->assign_var('S_MCP_ACTION', append_sid("{$phpbb_root_path}mcp.$phpEx"));
454 make_jumpbox(append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&mode=forum_view'), 0, false, 'm_', true);
455 }
456