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.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

(Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

mcp_front.php

Zuletzt modifiziert: 02.04.2025, 15:02 - Dateigröße: 17.18 KiB


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&amp;mode=approve_details&amp;p=' . $row['post_id']),
149                          'U_MCP_FORUM'        => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&amp;mode=forum_view&amp;f=' . $row['forum_id']),
150                          'U_MCP_TOPIC'        => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=main&amp;mode=topic_view&amp;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) ? '&amp;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'] . "&amp;i=reports&amp;mode=report_details"),
284                          'U_MCP_FORUM'        => append_sid("{$phpbb_root_path}mcp.$phpEx", 'f=' . $row['forum_id'] . "&amp;i=$id&amp;mode=forum_view"),
285                          'U_MCP_TOPIC'        => append_sid("{$phpbb_root_path}mcp.$phpEx", 't=' . $row['topic_id'] . "&amp;i=$id&amp;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'] . "&amp;i=pm_reports&amp;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&amp;mode=forum_view'), 0, false, 'm_', true);
455  }
456