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

acp_ban.php

Zuletzt modifiziert: 09.10.2024, 12:52 - Dateigröße: 8.31 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 acp_ban
 023  {
 024      var $u_action;
 025   
 026      function main($id, $mode)
 027      {
 028          global $user, $template, $request, $phpbb_dispatcher;
 029          global $phpbb_root_path, $phpEx;
 030   
 031          if (!function_exists('user_ban'))
 032          {
 033              include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
 034          }
 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 = 'acp_ban';
 041          $form_key = 'acp_ban';
 042          add_form_key($form_key);
 043   
 044          if (($bansubmit || $unbansubmit) && !check_form_key($form_key))
 045          {
 046              trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
 047          }
 048   
 049          // Ban submitted?
 050          if ($bansubmit)
 051          {
 052              // Grab the list of entries
 053              $ban                = $request->variable('ban', '', true);
 054              $ban_length            = $request->variable('banlength', 0);
 055              $ban_length_other    = $request->variable('banlengthother', '');
 056              $ban_exclude        = $request->variable('banexclude', 0);
 057              $ban_reason            = $request->variable('banreason', '', true);
 058              $ban_give_reason    = $request->variable('bangivereason', '', true);
 059   
 060              if ($ban)
 061              {
 062                  $abort_ban = false;
 063                  /**
 064                  * Use this event to modify the ban details before the ban is performed
 065                  *
 066                  * @event core.acp_ban_before
 067                  * @var    string    mode                One of the following: user, ip, email
 068                  * @var    string    ban                    Either string or array with usernames, ips or email addresses
 069                  * @var    int        ban_length            Ban length in minutes
 070                  * @var    string    ban_length_other    Ban length as a date (YYYY-MM-DD)
 071                  * @var    bool    ban_exclude            Are we banning or excluding from another ban
 072                  * @var    string    ban_reason            Ban reason displayed to moderators
 073                  * @var    string    ban_give_reason        Ban reason displayed to the banned user
 074                  * @var    mixed    abort_ban            Either false, or an error message that is displayed to the user.
 075                  *                                    If a string is given the bans are not issued.
 076                  * @since 3.1.0-RC5
 077                  */
 078                  $vars = array(
 079                      'mode',
 080                      'ban',
 081                      'ban_length',
 082                      'ban_length_other',
 083                      'ban_exclude',
 084                      'ban_reason',
 085                      'ban_give_reason',
 086                      'abort_ban',
 087                  );
 088                  extract($phpbb_dispatcher->trigger_event('core.acp_ban_before', compact($vars)));
 089   
 090                  if ($abort_ban)
 091                  {
 092                      trigger_error($abort_ban . adm_back_link($this->u_action));
 093                  }
 094                  user_ban($mode, $ban, $ban_length, $ban_length_other, $ban_exclude, $ban_reason, $ban_give_reason);
 095   
 096                  /**
 097                  * Use this event to perform actions after the ban has been performed
 098                  *
 099                  * @event core.acp_ban_after
 100                  * @var    string    mode                One of the following: user, ip, email
 101                  * @var    string    ban                    Either string or array with usernames, ips or email addresses
 102                  * @var    int        ban_length            Ban length in minutes
 103                  * @var    string    ban_length_other    Ban length as a date (YYYY-MM-DD)
 104                  * @var    bool    ban_exclude            Are we banning or excluding from another ban
 105                  * @var    string    ban_reason            Ban reason displayed to moderators
 106                  * @var    string    ban_give_reason        Ban reason displayed to the banned user
 107                  * @since 3.1.0-RC5
 108                  */
 109                  $vars = array(
 110                      'mode',
 111                      'ban',
 112                      'ban_length',
 113                      'ban_length_other',
 114                      'ban_exclude',
 115                      'ban_reason',
 116                      'ban_give_reason',
 117                  );
 118                  extract($phpbb_dispatcher->trigger_event('core.acp_ban_after', compact($vars)));
 119   
 120                  trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action));
 121              }
 122          }
 123          else if ($unbansubmit)
 124          {
 125              $ban = $request->variable('unban', array(''));
 126   
 127              if ($ban)
 128              {
 129                  user_unban($mode, $ban);
 130   
 131                  trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action));
 132              }
 133          }
 134   
 135          // Define language vars
 136          $this->page_title = $user->lang[strtoupper($mode) . '_BAN'];
 137   
 138          $l_ban_explain = $user->lang[strtoupper($mode) . '_BAN_EXPLAIN'];
 139          $l_ban_exclude_explain = $user->lang[strtoupper($mode) . '_BAN_EXCLUDE_EXPLAIN'];
 140          $l_unban_title = $user->lang[strtoupper($mode) . '_UNBAN'];
 141          $l_unban_explain = $user->lang[strtoupper($mode) . '_UNBAN_EXPLAIN'];
 142          $l_no_ban_cell = $user->lang[strtoupper($mode) . '_NO_BANNED'];
 143   
 144          switch ($mode)
 145          {
 146              case 'user':
 147                  $l_ban_cell = $user->lang['USERNAME'];
 148              break;
 149   
 150              case 'ip':
 151                  $l_ban_cell = $user->lang['IP_HOSTNAME'];
 152              break;
 153   
 154              case 'email':
 155                  $l_ban_cell = $user->lang['EMAIL_ADDRESS'];
 156              break;
 157          }
 158   
 159          self::display_ban_options($mode);
 160   
 161          $template->assign_vars(array(
 162              'L_TITLE'                => $this->page_title,
 163              'L_EXPLAIN'                => $l_ban_explain,
 164              'L_UNBAN_TITLE'            => $l_unban_title,
 165              'L_UNBAN_EXPLAIN'        => $l_unban_explain,
 166              'L_BAN_CELL'            => $l_ban_cell,
 167              'L_BAN_EXCLUDE_EXPLAIN'    => $l_ban_exclude_explain,
 168              'L_NO_BAN_CELL'            => $l_no_ban_cell,
 169   
 170              'S_USERNAME_BAN'    => ($mode == 'user') ? true : false,
 171   
 172              'U_ACTION'            => $this->u_action,
 173              'U_FIND_USERNAME'    => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&amp;form=acp_ban&amp;field=ban'),
 174          ));
 175      }
 176   
 177      /**
 178      * Display ban options
 179      */
 180      static public function display_ban_options($mode)
 181      {
 182          global $user, $db, $template;
 183   
 184          // Ban length options
 185          $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; ');
 186   
 187          $ban_end_options = '';
 188          foreach ($ban_end_text as $length => $text)
 189          {
 190              $ban_end_options .= '<option value="' . $length . '">' . $text . '</option>';
 191          }
 192   
 193          switch ($mode)
 194          {
 195              case 'user':
 196   
 197                  $field = 'username';
 198   
 199                  $sql = 'SELECT b.*, u.user_id, u.username, u.username_clean
 200                      FROM ' . BANLIST_TABLE . ' b, ' . USERS_TABLE . ' u
 201                      WHERE (b.ban_end >= ' . time() . '
 202                              OR b.ban_end = 0)
 203                          AND u.user_id = b.ban_userid
 204                      ORDER BY u.username_clean ASC';
 205              break;
 206   
 207              case 'ip':
 208   
 209                  $field = 'ban_ip';
 210   
 211                  $sql = 'SELECT *
 212                      FROM ' . BANLIST_TABLE . '
 213                      WHERE (ban_end >= ' . time() . "
 214                              OR ban_end = 0)
 215                          AND ban_ip <> ''
 216                      ORDER BY ban_ip";
 217              break;
 218   
 219              case 'email':
 220   
 221                  $field = 'ban_email';
 222   
 223                  $sql = 'SELECT *
 224                      FROM ' . BANLIST_TABLE . '
 225                      WHERE (ban_end >= ' . time() . "
 226                              OR ban_end = 0)
 227                          AND ban_email <> ''
 228                      ORDER BY ban_email";
 229              break;
 230          }
 231          $result = $db->sql_query($sql);
 232   
 233          $banned_options = $excluded_options = array();
 234          while ($row = $db->sql_fetchrow($result))
 235          {
 236              $option = '<option value="' . $row['ban_id'] . '">' . $row[$field] . '</option>';
 237   
 238              if ($row['ban_exclude'])
 239              {
 240                  $excluded_options[] = $option;
 241              }
 242              else
 243              {
 244                  $banned_options[] = $option;
 245              }
 246   
 247              $time_length = ($row['ban_end']) ? ($row['ban_end'] - $row['ban_start']) / 60 : 0;
 248   
 249              if ($time_length == 0)
 250              {
 251                  // Banned permanently
 252                  $ban_length = $user->lang['PERMANENT'];
 253              }
 254              else if (isset($ban_end_text[$time_length]))
 255              {
 256                  // Banned for a given duration
 257                  $ban_length = $user->lang('BANNED_UNTIL_DURATION', $ban_end_text[$time_length], $user->format_date($row['ban_end'], false, true));
 258              }
 259              else
 260              {
 261                  // Banned until given date
 262                  $ban_length = $user->lang('BANNED_UNTIL_DATE', $user->format_date($row['ban_end'], false, true));
 263              }
 264   
 265              $template->assign_block_vars('bans', array(
 266                  'BAN_ID'        => (int) $row['ban_id'],
 267                  'LENGTH'        => $ban_length,
 268                  'A_LENGTH'        => addslashes($ban_length),
 269                  'REASON'        => $row['ban_reason'],
 270                  'A_REASON'        => addslashes($row['ban_reason']),
 271                  'GIVE_REASON'    => $row['ban_give_reason'],
 272                  'A_GIVE_REASON'    => addslashes($row['ban_give_reason']),
 273              ));
 274          }
 275          $db->sql_freeresult($result);
 276   
 277          $options = '';
 278          if ($excluded_options)
 279          {
 280              $options .= '<optgroup label="' . $user->lang['OPTIONS_EXCLUDED'] . '">';
 281              $options .= implode('', $excluded_options);
 282              $options .= '</optgroup>';
 283          }
 284   
 285          if ($banned_options)
 286          {
 287              $options .= '<optgroup label="' . $user->lang['OPTIONS_BANNED'] . '">';
 288              $options .= implode('', $banned_options);
 289              $options .= '</optgroup>';
 290          }
 291   
 292          $template->assign_vars(array(
 293              'S_BAN_END_OPTIONS'    => $ban_end_options,
 294              'S_BANNED_OPTIONS'    => ($banned_options || $excluded_options) ? true : false,
 295              'BANNED_OPTIONS'    => $options,
 296          ));
 297      }
 298  }
 299