Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

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_pm_reports.php

Zuletzt modifiziert: 09.10.2024, 12:52 - Dateigröße: 12.98 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_reports
024  * Handling the reports queue
025  */
026  class mcp_pm_reports
027  {
028      var $p_master;
029      var $u_action;
030   
031      function mcp_pm_reports(&$p_master)
032      {
033          $this->p_master = &$p_master;
034      }
035   
036      function main($id, $mode)
037      {
038          global $auth, $db, $user, $template, $request;
039          global $config, $phpbb_root_path, $phpEx, $action, $phpbb_container;
040   
041          include_once($phpbb_root_path . 'includes/functions_posting.' . $phpEx);
042          include_once($phpbb_root_path . 'includes/functions_privmsgs.' . $phpEx);
043   
044          /* @var $pagination \phpbb\pagination */
045          $pagination = $phpbb_container->get('pagination');
046          $start = $request->variable('start', 0);
047   
048          $this->page_title = 'MCP_PM_REPORTS';
049   
050          switch ($action)
051          {
052              case 'close':
053              case 'delete':
054                  include_once($phpbb_root_path . 'includes/functions_messenger.' . $phpEx);
055   
056                  $report_id_list = $request->variable('report_id_list', array(0));
057   
058                  if (!sizeof($report_id_list))
059                  {
060                      trigger_error('NO_REPORT_SELECTED');
061                  }
062   
063                  if (!function_exists('close_report'))
064                  {
065                      include($phpbb_root_path . 'includes/mcp/mcp_reports.' . $phpEx);
066                  }
067   
068                  close_report($report_id_list, $mode, $action, true);
069   
070              break;
071          }
072   
073          switch ($mode)
074          {
075              case 'pm_report_details':
076   
077                  $user->add_lang(array('posting', 'viewforum', 'viewtopic', 'ucp'));
078   
079                  $report_id = $request->variable('r', 0);
080   
081                  $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
082                      FROM ' . REPORTS_TABLE . ' r, ' . REPORTS_REASONS_TABLE . ' rr, ' . USERS_TABLE . ' u
083                      WHERE r.report_id = ' . $report_id . '
084                          AND rr.reason_id = r.reason_id
085                          AND r.user_id = u.user_id
086                          AND r.post_id = 0
087                      ORDER BY report_closed ASC';
088                  $result = $db->sql_query_limit($sql, 1);
089                  $report = $db->sql_fetchrow($result);
090                  $db->sql_freeresult($result);
091   
092                  if (!$report_id || !$report)
093                  {
094                      trigger_error('NO_REPORT');
095                  }
096   
097                  /* @var $phpbb_notifications \phpbb\notification\manager */
098                  $phpbb_notifications = $phpbb_container->get('notification_manager');
099   
100                  $phpbb_notifications->mark_notifications_by_parent('report_pm', $report_id, $user->data['user_id']);
101   
102                  $pm_id = $report['pm_id'];
103                  $report_id = $report['report_id'];
104   
105                  $pm_info = phpbb_get_pm_data(array($pm_id));
106   
107                  if (!sizeof($pm_info))
108                  {
109                      trigger_error('NO_REPORT_SELECTED');
110                  }
111   
112                  $pm_info = $pm_info[$pm_id];
113   
114                  write_pm_addresses(array('to' => $pm_info['to_address'], 'bcc' => $pm_info['bcc_address']), (int) $pm_info['author_id']);
115   
116                  $reason = array('title' => $report['reason_title'], 'description' => $report['reason_description']);
117                  if (isset($user->lang['report_reasons']['TITLE'][strtoupper($reason['title'])]) && isset($user->lang['report_reasons']['DESCRIPTION'][strtoupper($reason['title'])]))
118                  {
119                      $reason['description'] = $user->lang['report_reasons']['DESCRIPTION'][strtoupper($reason['title'])];
120                      $reason['title'] = $user->lang['report_reasons']['TITLE'][strtoupper($reason['title'])];
121                  }
122   
123                  // Process message, leave it uncensored
124                  $parse_flags = ($pm_info['bbcode_bitfield'] ? OPTION_FLAG_BBCODE : 0) | OPTION_FLAG_SMILIES;
125                  $message = generate_text_for_display($pm_info['message_text'], $pm_info['bbcode_uid'], $pm_info['bbcode_bitfield'], $parse_flags, false);
126   
127                  $report['report_text'] = make_clickable(bbcode_nl2br($report['report_text']));
128   
129                  if ($pm_info['message_attachment'] && $auth->acl_get('u_pm_download'))
130                  {
131                      $sql = 'SELECT *
132                          FROM ' . ATTACHMENTS_TABLE . '
133                          WHERE post_msg_id = ' . $pm_id . '
134                              AND in_message = 1
135                          ORDER BY filetime DESC';
136                      $result = $db->sql_query($sql);
137   
138                      while ($row = $db->sql_fetchrow($result))
139                      {
140                          $attachments[] = $row;
141                      }
142                      $db->sql_freeresult($result);
143   
144                      if (sizeof($attachments))
145                      {
146                          $update_count = array();
147                          parse_attachments(0, $message, $attachments, $update_count);
148                      }
149   
150                      // Display not already displayed Attachments for this post, we already parsed them. ;)
151                      if (!empty($attachments))
152                      {
153                          $template->assign_var('S_HAS_ATTACHMENTS', true);
154   
155                          foreach ($attachments as $attachment)
156                          {
157                              $template->assign_block_vars('attachment', array(
158                                  'DISPLAY_ATTACHMENT'    => $attachment)
159                              );
160                          }
161                      }
162                  }
163   
164                  $template->assign_vars(array(
165                      'S_MCP_REPORT'            => true,
166                      'S_PM'                    => true,
167                      'S_CLOSE_ACTION'        => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=pm_reports&amp;mode=pm_report_details&amp;r=' . $report_id),
168                      'S_CAN_VIEWIP'            => $auth->acl_getf_global('m_info'),
169                      'S_POST_REPORTED'        => $pm_info['message_reported'],
170                      'S_REPORT_CLOSED'        => $report['report_closed'],
171                      'S_USER_NOTES'            => true,
172   
173                      'U_MCP_REPORT'                => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=pm_reports&amp;mode=pm_report_details&amp;r=' . $report_id),
174                      'U_MCP_REPORTER_NOTES'        => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&amp;mode=user_notes&amp;u=' . $report['user_id']),
175                      'U_MCP_USER_NOTES'            => append_sid("{$phpbb_root_path}mcp.$phpEx", 'i=notes&amp;mode=user_notes&amp;u=' . $pm_info['author_id']),
176                      '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']) : '',
177                      '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']) : '',
178   
179                      'EDIT_IMG'                => $user->img('icon_post_edit', $user->lang['EDIT_POST']),
180                      'MINI_POST_IMG'            => $user->img('icon_post_target', 'POST'),
181   
182                      '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>'),
183                      'REPORTED_IMG'                => $user->img('icon_topic_reported', $user->lang['POST_REPORTED']),
184                      'REPORT_DATE'                => $user->format_date($report['report_time']),
185                      'REPORT_ID'                    => $report_id,
186                      'REPORT_REASON_TITLE'        => $reason['title'],
187                      'REPORT_REASON_DESCRIPTION'    => $reason['description'],
188                      'REPORT_TEXT'                => $report['report_text'],
189   
190                      'POST_AUTHOR_FULL'        => get_username_string('full', $pm_info['author_id'], $pm_info['username'], $pm_info['user_colour']),
191                      'POST_AUTHOR_COLOUR'    => get_username_string('colour', $pm_info['author_id'], $pm_info['username'], $pm_info['user_colour']),
192                      'POST_AUTHOR'            => get_username_string('username', $pm_info['author_id'], $pm_info['username'], $pm_info['user_colour']),
193                      'U_POST_AUTHOR'            => get_username_string('profile', $pm_info['author_id'], $pm_info['username'], $pm_info['user_colour']),
194   
195                      'REPORTER_FULL'                => get_username_string('full', $report['user_id'], $report['username'], $report['user_colour']),
196                      'REPORTER_COLOUR'            => get_username_string('colour', $report['user_id'], $report['username'], $report['user_colour']),
197                      'REPORTER_NAME'                => get_username_string('username', $report['user_id'], $report['username'], $report['user_colour']),
198                      'U_VIEW_REPORTER_PROFILE'    => get_username_string('profile', $report['user_id'], $report['username'], $report['user_colour']),
199   
200                      'POST_PREVIEW'            => $message,
201                      'POST_SUBJECT'            => ($pm_info['message_subject']) ? $pm_info['message_subject'] : $user->lang['NO_SUBJECT'],
202                      'POST_DATE'                => $user->format_date($pm_info['message_time']),
203                      'POST_IP'                => $pm_info['author_ip'],
204                      'POST_IPADDR'            => ($auth->acl_getf_global('m_info') && $request->variable('lookup', '')) ? @gethostbyaddr($pm_info['author_ip']) : '',
205                      'POST_ID'                => $pm_info['msg_id'],
206   
207                      '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' : '',
208                  ));
209   
210                  $this->tpl_name = 'mcp_post';
211   
212              break;
213   
214              case 'pm_reports':
215              case 'pm_reports_closed':
216                  $user->add_lang(array('ucp'));
217   
218                  $sort_days = $total = 0;
219                  $sort_key = $sort_dir = '';
220                  $sort_by_sql = $sort_order_sql = array();
221                  phpbb_mcp_sorting($mode, $sort_days, $sort_key, $sort_dir, $sort_by_sql, $sort_order_sql, $total);
222   
223                  $limit_time_sql = ($sort_days) ? 'AND r.report_time >= ' . (time() - ($sort_days * 86400)) : '';
224   
225                  if ($mode == 'pm_reports')
226                  {
227                      $report_state = 'p.message_reported = 1 AND r.report_closed = 0';
228                  }
229                  else
230                  {
231                      $report_state = 'r.report_closed = 1';
232                  }
233   
234                  $sql = 'SELECT r.report_id
235                      FROM ' . PRIVMSGS_TABLE . ' p, ' . REPORTS_TABLE . ' r ' . (($sort_order_sql[0] == 'u') ? ', ' . USERS_TABLE . ' u' : '') . (($sort_order_sql[0] == 'r') ? ', ' . USERS_TABLE . ' ru' : '') . "
236                      WHERE $report_state
237                          AND r.pm_id = p.msg_id
238                          " . (($sort_order_sql[0] == 'u') ? 'AND u.user_id = p.author_id' : '') . '
239                          ' . (($sort_order_sql[0] == 'r') ? 'AND ru.user_id = r.user_id' : '') . "
240                          AND r.post_id = 0
241                          $limit_time_sql
242                      ORDER BY $sort_order_sql";
243                  $result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
244   
245                  $i = 0;
246                  $report_ids = array();
247                  while ($row = $db->sql_fetchrow($result))
248                  {
249                      $report_ids[] = $row['report_id'];
250                      $row_num[$row['report_id']] = $i++;
251                  }
252                  $db->sql_freeresult($result);
253   
254                  if (sizeof($report_ids))
255                  {
256                      $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
257                          FROM ' . REPORTS_TABLE . ' r, ' . PRIVMSGS_TABLE . ' p, ' . USERS_TABLE . ' u, ' . USERS_TABLE . ' ru
258                          WHERE ' . $db->sql_in_set('r.report_id', $report_ids) . "
259                              AND r.pm_id = p.msg_id
260                              AND p.author_id = u.user_id
261                              AND ru.user_id = r.user_id
262                          ORDER BY $sort_order_sql";
263                      $result = $db->sql_query($sql);
264   
265                      $pm_list = $pm_by_id = array();
266                      while ($row = $db->sql_fetchrow($result))
267                      {
268                          $pm_by_id[(int) $row['msg_id']] = $row;
269                          $pm_list[] = (int) $row['msg_id'];
270                      }
271                      $db->sql_freeresult($result);
272   
273                      if (sizeof($pm_list))
274                      {
275                          $address_list = get_recipient_strings($pm_by_id);
276   
277                          foreach ($pm_list as $message_id)
278                          {
279                              $row = $pm_by_id[$message_id];
280                              $template->assign_block_vars('postrow', array(
281                                  'U_VIEW_DETAILS'            => append_sid("{$phpbb_root_path}mcp.$phpEx", "i=pm_reports&amp;mode=pm_report_details&amp;r={$row['report_id']}"),
282   
283                                  'PM_AUTHOR_FULL'        => get_username_string('full', $row['author_id'], $row['username'], $row['user_colour']),
284                                  'PM_AUTHOR_COLOUR'        => get_username_string('colour', $row['author_id'], $row['username'], $row['user_colour']),
285                                  'PM_AUTHOR'                => get_username_string('username', $row['author_id'], $row['username'], $row['user_colour']),
286                                  'U_PM_AUTHOR'            => get_username_string('profile', $row['author_id'], $row['username'], $row['user_colour']),
287   
288                                  'REPORTER_FULL'            => get_username_string('full', $row['reporter_id'], $row['reporter_name'], $row['reporter_colour']),
289                                  'REPORTER_COLOUR'        => get_username_string('colour', $row['reporter_id'], $row['reporter_name'], $row['reporter_colour']),
290                                  'REPORTER'                => get_username_string('username', $row['reporter_id'], $row['reporter_name'], $row['reporter_colour']),
291                                  'U_REPORTER'            => get_username_string('profile', $row['reporter_id'], $row['reporter_name'], $row['reporter_colour']),
292   
293                                  'PM_SUBJECT'            => ($row['message_subject']) ? $row['message_subject'] : $user->lang['NO_SUBJECT'],
294                                  'PM_TIME'                => $user->format_date($row['message_time']),
295                                  'REPORT_ID'                => $row['report_id'],
296                                  'REPORT_TIME'            => $user->format_date($row['report_time']),
297   
298                                  'RECIPIENTS'            => implode($user->lang['COMMA_SEPARATOR'], $address_list[$row['msg_id']]),
299                                  'ATTACH_ICON_IMG'        => ($auth->acl_get('u_download') && $row['message_attachment']) ? $user->img('icon_topic_attach', $user->lang['TOTAL_ATTACHMENTS']) : '',
300                              ));
301                          }
302                      }
303                  }
304   
305                  $base_url = $this->u_action . "&amp;st=$sort_days&amp;sk=$sort_key&amp;sd=$sort_dir";
306                  $pagination->generate_template_pagination($base_url, 'pagination', 'start', $total, $config['topics_per_page'], $start);
307   
308                  // Now display the page
309                  $template->assign_vars(array(
310                      'L_EXPLAIN'                => ($mode == 'pm_reports') ? $user->lang['MCP_PM_REPORTS_OPEN_EXPLAIN'] : $user->lang['MCP_PM_REPORTS_CLOSED_EXPLAIN'],
311                      'L_TITLE'                => ($mode == 'pm_reports') ? $user->lang['MCP_PM_REPORTS_OPEN'] : $user->lang['MCP_PM_REPORTS_CLOSED'],
312   
313                      'S_PM'                    => true,
314                      'S_MCP_ACTION'            => $this->u_action,
315                      'S_CLOSED'                => ($mode == 'pm_reports_closed') ? true : false,
316   
317                      'TOTAL'                    => $total,
318                      'TOTAL_REPORTS'            => $user->lang('LIST_REPORTS', (int) $total),
319                      )
320                  );
321   
322                  $this->tpl_name = 'mcp_reports';
323              break;
324          }
325      }
326  }
327