Verzeichnisstruktur phpBB-3.1.0


Veröffentlicht
27.10.2014

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

report.php

Zuletzt modifiziert: 09.10.2024, 12:50 - Dateigröße: 9.03 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  define('IN_PHPBB', true);
 018  $phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : './';
 019  $phpEx = substr(strrchr(__FILE__, '.'), 1);
 020  include($phpbb_root_path . 'common.' . $phpEx);
 021  include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
 022   
 023  // Start session management
 024  $user->session_begin();
 025  $auth->acl($user->data);
 026  $user->setup('mcp');
 027   
 028  $forum_id        = request_var('f', 0);
 029  $post_id        = request_var('p', 0);
 030  $pm_id            = request_var('pm', 0);
 031  $reason_id        = request_var('reason_id', 0);
 032  $report_text    = utf8_normalize_nfc(request_var('report_text', '', true));
 033  $user_notify    = ($user->data['is_registered']) ? request_var('notify', 0) : false;
 034   
 035  $submit = (isset($_POST['submit'])) ? true : false;
 036   
 037  if (!$post_id && (!$pm_id || !$config['allow_pm_report']))
 038  {
 039      trigger_error('NO_POST_SELECTED');
 040  }
 041   
 042  if ($post_id)
 043  {
 044      $redirect_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", "f=$forum_id&amp;p=$post_id") . "#p$post_id";
 045      $return_forum_url = append_sid("{$phpbb_root_path}viewforum.$phpEx", "f=$forum_id");
 046      $pm_id = 0;
 047  }
 048  else
 049  {
 050      $redirect_url = append_sid("{$phpbb_root_path}ucp.$phpEx", "i=pm&mode=view&p=$pm_id");
 051      $return_forum_url = '';
 052      $post_id = 0;
 053      $forum_id = 0;
 054  }
 055   
 056  // Has the report been cancelled?
 057  if (isset($_POST['cancel']))
 058  {
 059      redirect($redirect_url);
 060  }
 061   
 062  if ($post_id)
 063  {
 064      // Grab all relevant data
 065      $sql = 'SELECT t.*, p.*
 066          FROM ' . POSTS_TABLE . ' p, ' . TOPICS_TABLE . " t
 067          WHERE p.post_id = $post_id
 068              AND p.topic_id = t.topic_id";
 069      $result = $db->sql_query($sql);
 070      $report_data = $db->sql_fetchrow($result);
 071      $db->sql_freeresult($result);
 072   
 073      if (!$report_data)
 074      {
 075          trigger_error('POST_NOT_EXIST');
 076      }
 077   
 078      $forum_id                             = (int) $report_data['forum_id'];
 079      $topic_id                             = (int) $report_data['topic_id'];
 080      $reported_post_text                    = $report_data['post_text'];
 081      $reported_post_bitfield                = $report_data['bbcode_bitfield'];
 082      $reported_post_uid                    = $report_data['bbcode_uid'];
 083      $reported_post_enable_bbcode        = $report_data['enable_bbcode'];
 084      $reported_post_enable_smilies        = $report_data['enable_smilies'];
 085      $reported_post_enable_magic_url        = $report_data['enable_magic_url'];
 086   
 087      $sql = 'SELECT *
 088          FROM ' . FORUMS_TABLE . '
 089          WHERE forum_id = ' . $forum_id;
 090      $result = $db->sql_query($sql);
 091      $forum_data = $db->sql_fetchrow($result);
 092      $db->sql_freeresult($result);
 093   
 094      if (!$forum_data)
 095      {
 096          trigger_error('FORUM_NOT_EXIST');
 097      }
 098   
 099      // Check required permissions
 100      $acl_check_ary = array('f_list' => 'POST_NOT_EXIST', 'f_read' => 'USER_CANNOT_READ', 'f_report' => 'USER_CANNOT_REPORT');
 101   
 102      foreach ($acl_check_ary as $acl => $error)
 103      {
 104          if (!$auth->acl_get($acl, $forum_id))
 105          {
 106              trigger_error($error);
 107          }
 108      }
 109      unset($acl_check_ary);
 110   
 111      if ($report_data['post_reported'])
 112      {
 113          $message = $user->lang['ALREADY_REPORTED'];
 114          $message .= '<br /><br />' . sprintf($user->lang['RETURN_TOPIC'], '<a href="' . $redirect_url . '">', '</a>');
 115          $message .= '<br /><br />' . sprintf($user->lang['RETURN_FORUM'], '<a href="' . $return_forum_url . '">', '</a>');
 116          trigger_error($message);
 117      }
 118  }
 119  else
 120  {
 121      // Grab all relevant data
 122      $sql = 'SELECT p.*, pt.*
 123          FROM ' . PRIVMSGS_TABLE . ' p, ' . PRIVMSGS_TO_TABLE . " pt
 124          WHERE p.msg_id = $pm_id
 125              AND p.msg_id = pt.msg_id
 126              AND (p.author_id = " . $user->data['user_id'] . " OR pt.user_id = " . $user->data['user_id'] . ")";
 127      $result = $db->sql_query($sql);
 128      $report_data = $db->sql_fetchrow($result);
 129      $db->sql_freeresult($result);
 130   
 131      if (!$report_data)
 132      {
 133          $user->add_lang('ucp');
 134          trigger_error('NO_MESSAGE');
 135      }
 136   
 137      if ($report_data['message_reported'])
 138      {
 139          $message = $user->lang['ALREADY_REPORTED_PM'];
 140          $message .= '<br /><br />' . sprintf($user->lang['RETURN_PM'], '<a href="' . $redirect_url . '">', '</a>');
 141          trigger_error($message);
 142      }
 143   
 144      $reported_post_text                 = $report_data['message_text'];
 145      $reported_post_bitfield                = $report_data['bbcode_bitfield'];
 146      $reported_post_uid                    = $report_data['bbcode_uid'];
 147      $reported_post_enable_bbcode        = $report_data['enable_bbcode'];
 148      $reported_post_enable_smilies        = $report_data['enable_smilies'];
 149      $reported_post_enable_magic_url        = $report_data['enable_magic_url'];
 150  }
 151   
 152  if ($config['enable_post_confirm'] && !$user->data['is_registered'])
 153  {
 154      $captcha = $phpbb_container->get('captcha.factory')->get_instance($config['captcha_plugin']);
 155      $captcha->init(CONFIRM_REPORT);
 156  }
 157   
 158  $error    = array();
 159  $s_hidden_fields = '';
 160   
 161  // Submit report?
 162  if ($submit && $reason_id)
 163  {
 164      if (isset($captcha))
 165      {
 166          $visual_confirmation_response = $captcha->validate();
 167          if ($visual_confirmation_response)
 168          {
 169              $error[] = $visual_confirmation_response;
 170          }
 171      }
 172   
 173      $sql = 'SELECT *
 174          FROM ' . REPORTS_REASONS_TABLE . "
 175          WHERE reason_id = $reason_id";
 176      $result = $db->sql_query($sql);
 177      $row = $db->sql_fetchrow($result);
 178      $db->sql_freeresult($result);
 179   
 180      if (!$row || (!$report_text && strtolower($row['reason_title']) == 'other'))
 181      {
 182          $error[] = $user->lang('EMPTY_REPORT');
 183      }
 184   
 185      if (!sizeof($error))
 186      {
 187          if (isset($captcha))
 188          {
 189              $captcha->reset();
 190          }
 191   
 192          $sql_ary = array(
 193              'reason_id'                            => (int) $reason_id,
 194              'post_id'                            => $post_id,
 195              'pm_id'                                => $pm_id,
 196              'user_id'                            => (int) $user->data['user_id'],
 197              'user_notify'                        => (int) $user_notify,
 198              'report_closed'                        => 0,
 199              'report_time'                        => (int) time(),
 200              'report_text'                        => (string) $report_text,
 201              'reported_post_text'                => $reported_post_text,
 202              'reported_post_uid'                    => $reported_post_uid,
 203              'reported_post_bitfield'            => $reported_post_bitfield,
 204              'reported_post_enable_bbcode'        => $reported_post_enable_bbcode,
 205              'reported_post_enable_smilies'        => $reported_post_enable_smilies,
 206              'reported_post_enable_magic_url'    => $reported_post_enable_magic_url,
 207          );
 208   
 209          $sql = 'INSERT INTO ' . REPORTS_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
 210          $db->sql_query($sql);
 211          $report_id = $db->sql_nextid();
 212   
 213          $phpbb_notifications = $phpbb_container->get('notification_manager');
 214   
 215          if ($post_id)
 216          {
 217              $sql = 'UPDATE ' . POSTS_TABLE . '
 218                  SET post_reported = 1
 219                  WHERE post_id = ' . $post_id;
 220              $db->sql_query($sql);
 221   
 222              if (!$report_data['topic_reported'])
 223              {
 224                  $sql = 'UPDATE ' . TOPICS_TABLE . '
 225                      SET topic_reported = 1
 226                      WHERE topic_id = ' . $report_data['topic_id'] . '
 227                          OR topic_moved_id = ' . $report_data['topic_id'];
 228                  $db->sql_query($sql);
 229              }
 230   
 231              $lang_return = $user->lang['RETURN_TOPIC'];
 232              $lang_success = $user->lang['POST_REPORTED_SUCCESS'];
 233   
 234              $phpbb_notifications->add_notifications('notification.type.report_post', array_merge($report_data, $row, $forum_data, array(
 235                  'report_text'    => $report_text,
 236              )));
 237          }
 238          else
 239          {
 240              $sql = 'UPDATE ' . PRIVMSGS_TABLE . '
 241                  SET message_reported = 1
 242                  WHERE msg_id = ' . $pm_id;
 243              $db->sql_query($sql);
 244   
 245              $sql_ary = array(
 246                  'msg_id'        => $pm_id,
 247                  'user_id'        => ANONYMOUS,
 248                  'author_id'        => (int) $report_data['author_id'],
 249                  'pm_deleted'    => 0,
 250                  'pm_new'        => 0,
 251                  'pm_unread'        => 0,
 252                  'pm_replied'    => 0,
 253                  'pm_marked'        => 0,
 254                  'pm_forwarded'    => 0,
 255                  'folder_id'        => PRIVMSGS_INBOX,
 256              );
 257   
 258              $sql = 'INSERT INTO ' . PRIVMSGS_TO_TABLE . ' ' . $db->sql_build_array('INSERT', $sql_ary);
 259              $db->sql_query($sql);
 260   
 261              $lang_return = $user->lang['RETURN_PM'];
 262              $lang_success = $user->lang['PM_REPORTED_SUCCESS'];
 263   
 264              $phpbb_notifications->add_notifications('notification.type.report_pm', array_merge($report_data, $row, array(
 265                  'report_text'    => $report_text,
 266                  'from_user_id'    => $report_data['author_id'],
 267                  'report_id'        => $report_id,
 268              )));
 269          }
 270   
 271          meta_refresh(3, $redirect_url);
 272   
 273          $message = $lang_success . '<br /><br />' . sprintf($lang_return, '<a href="' . $redirect_url . '">', '</a>');
 274          if ($return_forum_url)
 275          {
 276              $message .= '<br /><br />' . sprintf($user->lang['RETURN_FORUM'], '<a href="' . $return_forum_url . '">', '</a>');
 277          }
 278          trigger_error($message);
 279      }
 280      else if (isset($captcha) && $captcha->is_solved() !== false)
 281      {
 282          $s_hidden_fields .= build_hidden_fields($captcha->get_hidden_fields());
 283      }
 284  }
 285   
 286  // Generate the reasons
 287  display_reasons($reason_id);
 288   
 289  $page_title = ($pm_id) ? $user->lang['REPORT_MESSAGE'] : $user->lang['REPORT_POST'];
 290   
 291  if (isset($captcha) && $captcha->is_solved() === false)
 292  {
 293      $template->assign_vars(array(
 294          'S_CONFIRM_CODE'    => true,
 295          'CAPTCHA_TEMPLATE'    => $captcha->get_template(),
 296      ));
 297  }
 298   
 299  $template->assign_vars(array(
 300      'ERROR'                => (sizeof($error)) ? implode('<br />', $error) : '',
 301      'S_REPORT_POST'        => ($pm_id) ? false : true,
 302      'REPORT_TEXT'        => $report_text,
 303      'S_REPORT_ACTION'    => append_sid("{$phpbb_root_path}report.$phpEx", 'f=' . $forum_id . '&amp;p=' . $post_id . '&amp;pm=' . $pm_id),
 304      'S_HIDDEN_FIELDS'    => (sizeof($s_hidden_fields)) ? $s_hidden_fields : null,
 305   
 306      'S_NOTIFY'            => $user_notify,
 307      'S_CAN_NOTIFY'        => ($user->data['is_registered']) ? true : false,
 308      'S_IN_REPORT'        => true,
 309  ));
 310   
 311  generate_forum_nav($forum_data);
 312   
 313  // Start output of page
 314  page_header($page_title);
 315   
 316  $template->set_filenames(array(
 317      'body' => 'report_body.html')
 318  );
 319   
 320  page_footer();
 321