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

mcp_ban.php

Zuletzt modifiziert: 09.10.2024, 12:52 - Dateigröße: 8.50 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  class mcp_ban
 023  {
 024      var $u_action;
 025   
 026      function main($id, $mode)
 027      {
 028          global $db, $user, $auth, $template, $request, $phpbb_dispatcher;
 029          global $phpbb_root_path, $phpEx;
 030   
 031          include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
 032   
 033          // Include the admin banning interface...
 034          include($phpbb_root_path . 'includes/acp/acp_ban.' . $phpEx);
 035   
 036          $bansubmit        = $request->is_set_post('bansubmit');
 037          $unbansubmit    = $request->is_set_post('unbansubmit');
 038   
 039          $user->add_lang(array('acp/ban', 'acp/users'));
 040          $this->tpl_name = 'mcp_ban';
 041   
 042          /**
 043          * Use this event to pass perform actions when a ban is issued or revoked
 044          *
 045          * @event core.mcp_ban_main
 046          * @var    bool    bansubmit    True if a ban is issued
 047          * @var    bool    unbansubmit    True if a ban is removed
 048          * @var    string    mode        Mode of the ban that is being worked on
 049          * @since 3.1.0-RC5
 050          */
 051          $vars = array(
 052              'bansubmit',
 053              'unbansubmit',
 054              'mode',
 055          );
 056          extract($phpbb_dispatcher->trigger_event('core.mcp_ban_main', compact($vars)));
 057   
 058          // Ban submitted?
 059          if ($bansubmit)
 060          {
 061              // Grab the list of entries
 062              $ban                = $request->variable('ban', '', $mode === 'user');
 063              $ban_length            = $request->variable('banlength', 0);
 064              $ban_length_other    = $request->variable('banlengthother', '');
 065              $ban_exclude        = $request->variable('banexclude', 0);
 066              $ban_reason            = $request->variable('banreason', '', true);
 067              $ban_give_reason    = $request->variable('bangivereason', '', true);
 068   
 069              if ($ban)
 070              {
 071                  if (confirm_box(true))
 072                  {
 073                      $abort_ban = false;
 074                      /**
 075                      * Use this event to modify the ban details before the ban is performed
 076                      *
 077                      * @event core.mcp_ban_before
 078                      * @var    string    mode                One of the following: user, ip, email
 079                      * @var    string    ban                    Either string or array with usernames, ips or email addresses
 080                      * @var    int        ban_length            Ban length in minutes
 081                      * @var    string    ban_length_other    Ban length as a date (YYYY-MM-DD)
 082                      * @var    bool    ban_exclude            Are we banning or excluding from another ban
 083                      * @var    string    ban_reason            Ban reason displayed to moderators
 084                      * @var    string    ban_give_reason        Ban reason displayed to the banned user
 085                      * @var    mixed    abort_ban            Either false, or an error message that is displayed to the user.
 086                      *                                    If a string is given the bans are not issued.
 087                      * @since 3.1.0-RC5
 088                      */
 089                      $vars = array(
 090                          'mode',
 091                          'ban',
 092                          'ban_length',
 093                          'ban_length_other',
 094                          'ban_exclude',
 095                          'ban_reason',
 096                          'ban_give_reason',
 097                          'abort_ban',
 098                      );
 099                      extract($phpbb_dispatcher->trigger_event('core.mcp_ban_before', compact($vars)));
 100   
 101                      if ($abort_ban)
 102                      {
 103                          trigger_error($abort_ban);
 104                      }
 105                      user_ban($mode, $ban, $ban_length, $ban_length_other, $ban_exclude, $ban_reason, $ban_give_reason);
 106   
 107                      /**
 108                      * Use this event to perform actions after the ban has been performed
 109                      *
 110                      * @event core.mcp_ban_after
 111                      * @var    string    mode                One of the following: user, ip, email
 112                      * @var    string    ban                    Either string or array with usernames, ips or email addresses
 113                      * @var    int        ban_length            Ban length in minutes
 114                      * @var    string    ban_length_other    Ban length as a date (YYYY-MM-DD)
 115                      * @var    bool    ban_exclude            Are we banning or excluding from another ban
 116                      * @var    string    ban_reason            Ban reason displayed to moderators
 117                      * @var    string    ban_give_reason        Ban reason displayed to the banned user
 118                      * @since 3.1.0-RC5
 119                      */
 120                      $vars = array(
 121                          'mode',
 122                          'ban',
 123                          'ban_length',
 124                          'ban_length_other',
 125                          'ban_exclude',
 126                          'ban_reason',
 127                          'ban_give_reason',
 128                      );
 129                      extract($phpbb_dispatcher->trigger_event('core.mcp_ban_after', compact($vars)));
 130   
 131                      trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">&laquo; ' . $user->lang['BACK_TO_PREV'] . '</a>');
 132                  }
 133                  else
 134                  {
 135                      $hidden_fields = array(
 136                          'mode'                => $mode,
 137                          'ban'                => $ban,
 138                          'bansubmit'            => true,
 139                          'banlength'            => $ban_length,
 140                          'banlengthother'    => $ban_length_other,
 141                          'banexclude'        => $ban_exclude,
 142                          'banreason'            => $ban_reason,
 143                          'bangivereason'        => $ban_give_reason,
 144                      );
 145   
 146                      /**
 147                      * Use this event to pass data from the ban form to the confirmation screen
 148                      *
 149                      * @event core.mcp_ban_confirm
 150                      * @var    array    hidden_fields    Hidden fields that are passed through the confirm screen
 151                      * @since 3.1.0-RC5
 152                      */
 153                      $vars = array('hidden_fields');
 154                      extract($phpbb_dispatcher->trigger_event('core.mcp_ban_confirm', compact($vars)));
 155   
 156                      confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields($hidden_fields));
 157                  }
 158              }
 159          }
 160          else if ($unbansubmit)
 161          {
 162              $ban = $request->variable('unban', array(''));
 163   
 164              if ($ban)
 165              {
 166                  if (confirm_box(true))
 167                  {
 168                      user_unban($mode, $ban);
 169   
 170                      trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . '<br /><br /><a href="' . $this->u_action . '">&laquo; ' . $user->lang['BACK_TO_PREV'] . '</a>');
 171                  }
 172                  else
 173                  {
 174                      confirm_box(false, $user->lang['CONFIRM_OPERATION'], build_hidden_fields(array(
 175                          'mode'            => $mode,
 176                          'unbansubmit'    => true,
 177                          'unban'            => $ban)));
 178                  }
 179              }
 180          }
 181   
 182          // Ban length options
 183          $ban_end_text = array(0 => $user->lang['PERMANENT'], 30 => $user->lang['30_MINS'], 60 => $user->lang['1_HOUR'], 360 => $user->lang['6_HOURS'], 1440 => $user->lang['1_DAY'], 10080 => $user->lang['7_DAYS'], 20160 => $user->lang['2_WEEKS'], 40320 => $user->lang['1_MONTH'], -1 => $user->lang['UNTIL'] . ' -&gt; ');
 184   
 185          $ban_end_options = '';
 186          foreach ($ban_end_text as $length => $text)
 187          {
 188              $ban_end_options .= '<option value="' . $length . '">' . $text . '</option>';
 189          }
 190   
 191          // Define language vars
 192          $this->page_title = $user->lang[strtoupper($mode) . '_BAN'];
 193   
 194          $l_ban_explain = $user->lang[strtoupper($mode) . '_BAN_EXPLAIN'];
 195          $l_ban_exclude_explain = $user->lang[strtoupper($mode) . '_BAN_EXCLUDE_EXPLAIN'];
 196          $l_unban_title = $user->lang[strtoupper($mode) . '_UNBAN'];
 197          $l_unban_explain = $user->lang[strtoupper($mode) . '_UNBAN_EXPLAIN'];
 198          $l_no_ban_cell = $user->lang[strtoupper($mode) . '_NO_BANNED'];
 199   
 200          switch ($mode)
 201          {
 202              case 'user':
 203                  $l_ban_cell = $user->lang['USERNAME'];
 204              break;
 205   
 206              case 'ip':
 207                  $l_ban_cell = $user->lang['IP_HOSTNAME'];
 208              break;
 209   
 210              case 'email':
 211                  $l_ban_cell = $user->lang['EMAIL_ADDRESS'];
 212              break;
 213          }
 214   
 215          acp_ban::display_ban_options($mode);
 216   
 217          $template->assign_vars(array(
 218              'L_TITLE'                => $this->page_title,
 219              'L_EXPLAIN'                => $l_ban_explain,
 220              'L_UNBAN_TITLE'            => $l_unban_title,
 221              'L_UNBAN_EXPLAIN'        => $l_unban_explain,
 222              'L_BAN_CELL'            => $l_ban_cell,
 223              'L_BAN_EXCLUDE_EXPLAIN'    => $l_ban_exclude_explain,
 224              'L_NO_BAN_CELL'            => $l_no_ban_cell,
 225   
 226              'S_USERNAME_BAN'    => ($mode == 'user') ? true : false,
 227   
 228              'U_ACTION'            => $this->u_action,
 229              'U_FIND_USERNAME'    => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&amp;form=mcp_ban&amp;field=ban'),
 230          ));
 231   
 232          if ($mode === 'email' && !$auth->acl_get('a_user'))
 233          {
 234              return;
 235          }
 236   
 237          // As a "service" we will check if any post id is specified and populate the username of the poster id if given
 238          $post_id = $request->variable('p', 0);
 239          $user_id = $request->variable('u', 0);
 240          $pre_fill = false;
 241   
 242          if ($user_id && $user_id <> ANONYMOUS)
 243          {
 244              $sql = 'SELECT username, user_email, user_ip
 245                  FROM ' . USERS_TABLE . '
 246                  WHERE user_id = ' . $user_id;
 247              $result = $db->sql_query($sql);
 248              switch ($mode)
 249              {
 250                  case 'user':
 251                      $pre_fill = (string) $db->sql_fetchfield('username');
 252                  break;
 253   
 254                  case 'ip':
 255                      $pre_fill = (string) $db->sql_fetchfield('user_ip');
 256                  break;
 257   
 258                  case 'email':
 259                      $pre_fill = (string) $db->sql_fetchfield('user_email');
 260                  break;
 261              }
 262              $db->sql_freeresult($result);
 263          }
 264          else if ($post_id)
 265          {
 266              $post_info = phpbb_get_post_data($post_id, 'm_ban');
 267   
 268              if (sizeof($post_info) && !empty($post_info[$post_id]))
 269              {
 270                  switch ($mode)
 271                  {
 272                      case 'user':
 273                          $pre_fill = $post_info[$post_id]['username'];
 274                      break;
 275   
 276                      case 'ip':
 277                          $pre_fill = $post_info[$post_id]['poster_ip'];
 278                      break;
 279   
 280                      case 'email':
 281                          $pre_fill = $post_info[$post_id]['user_email'];
 282                      break;
 283                  }
 284   
 285              }
 286          }
 287   
 288          if ($pre_fill)
 289          {
 290              // left for legacy template compatibility
 291              $template->assign_var('USERNAMES', $pre_fill);
 292              $template->assign_var('BAN_QUANTIFIER', $pre_fill);
 293          }
 294      }
 295  }
 296