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

acp_ban.php

Zuletzt modifiziert: 09.10.2024, 12:52 - Dateigröße: 8.40 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          include($phpbb_root_path . 'includes/functions_user.' . $phpEx);
 032   
 033          $bansubmit    = $request->is_set_post('bansubmit');
 034          $unbansubmit = $request->is_set_post('unbansubmit');
 035   
 036          $user->add_lang(array('acp/ban', 'acp/users'));
 037          $this->tpl_name = 'acp_ban';
 038          $form_key = 'acp_ban';
 039          add_form_key($form_key);
 040   
 041          if (($bansubmit || $unbansubmit) && !check_form_key($form_key))
 042          {
 043              trigger_error($user->lang['FORM_INVALID'] . adm_back_link($this->u_action), E_USER_WARNING);
 044          }
 045   
 046          // Ban submitted?
 047          if ($bansubmit)
 048          {
 049              // Grab the list of entries
 050              $ban                = $request->variable('ban', '', true);
 051              $ban_length            = $request->variable('banlength', 0);
 052              $ban_length_other    = $request->variable('banlengthother', '');
 053              $ban_exclude        = $request->variable('banexclude', 0);
 054              $ban_reason            = $request->variable('banreason', '', true);
 055              $ban_give_reason    = $request->variable('bangivereason', '', true);
 056   
 057              if ($ban)
 058              {
 059                  $abort_ban = false;
 060                  /**
 061                  * Use this event to modify the ban details before the ban is performed
 062                  *
 063                  * @event core.acp_ban_before
 064                  * @var    string    mode                One of the following: user, ip, email
 065                  * @var    string    ban                    Either string or array with usernames, ips or email addresses
 066                  * @var    int        ban_length            Ban length in minutes
 067                  * @var    string    ban_length_other    Ban length as a date (YYYY-MM-DD)
 068                  * @var    bool    ban_exclude            Are we banning or excluding from another ban
 069                  * @var    string    ban_reason            Ban reason displayed to moderators
 070                  * @var    string    ban_give_reason        Ban reason displayed to the banned user
 071                  * @var    mixed    abort_ban            Either false, or an error message that is displayed to the user.
 072                  *                                    If a string is given the bans are not issued.
 073                  * @since 3.1.0-RC5
 074                  */
 075                  $vars = array(
 076                      'mode',
 077                      'ban',
 078                      'ban_length',
 079                      'ban_length_other',
 080                      'ban_exclude',
 081                      'ban_reason',
 082                      'ban_give_reason',
 083                      'abort_ban',
 084                  );
 085                  extract($phpbb_dispatcher->trigger_event('core.acp_ban_before', compact($vars)));
 086   
 087                  if ($abort_ban)
 088                  {
 089                      trigger_error($abort_ban . adm_back_link($this->u_action));
 090                  }
 091                  user_ban($mode, $ban, $ban_length, $ban_length_other, $ban_exclude, $ban_reason, $ban_give_reason);
 092   
 093                  /**
 094                  * Use this event to perform actions after the ban has been performed
 095                  *
 096                  * @event core.acp_ban_after
 097                  * @var    string    mode                One of the following: user, ip, email
 098                  * @var    string    ban                    Either string or array with usernames, ips or email addresses
 099                  * @var    int        ban_length            Ban length in minutes
 100                  * @var    string    ban_length_other    Ban length as a date (YYYY-MM-DD)
 101                  * @var    bool    ban_exclude            Are we banning or excluding from another ban
 102                  * @var    string    ban_reason            Ban reason displayed to moderators
 103                  * @var    string    ban_give_reason        Ban reason displayed to the banned user
 104                  * @since 3.1.0-RC5
 105                  */
 106                  $vars = array(
 107                      'mode',
 108                      'ban',
 109                      'ban_length',
 110                      'ban_length_other',
 111                      'ban_exclude',
 112                      'ban_reason',
 113                      'ban_give_reason',
 114                  );
 115                  extract($phpbb_dispatcher->trigger_event('core.acp_ban_after', compact($vars)));
 116   
 117                  trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action));
 118              }
 119          }
 120          else if ($unbansubmit)
 121          {
 122              $ban = $request->variable('unban', array(''));
 123   
 124              if ($ban)
 125              {
 126                  user_unban($mode, $ban);
 127   
 128                  trigger_error($user->lang['BAN_UPDATE_SUCCESSFUL'] . adm_back_link($this->u_action));
 129              }
 130          }
 131   
 132          // Define language vars
 133          $this->page_title = $user->lang[strtoupper($mode) . '_BAN'];
 134   
 135          $l_ban_explain = $user->lang[strtoupper($mode) . '_BAN_EXPLAIN'];
 136          $l_ban_exclude_explain = $user->lang[strtoupper($mode) . '_BAN_EXCLUDE_EXPLAIN'];
 137          $l_unban_title = $user->lang[strtoupper($mode) . '_UNBAN'];
 138          $l_unban_explain = $user->lang[strtoupper($mode) . '_UNBAN_EXPLAIN'];
 139          $l_no_ban_cell = $user->lang[strtoupper($mode) . '_NO_BANNED'];
 140   
 141          switch ($mode)
 142          {
 143              case 'user':
 144                  $l_ban_cell = $user->lang['USERNAME'];
 145              break;
 146   
 147              case 'ip':
 148                  $l_ban_cell = $user->lang['IP_HOSTNAME'];
 149              break;
 150   
 151              case 'email':
 152                  $l_ban_cell = $user->lang['EMAIL_ADDRESS'];
 153              break;
 154          }
 155   
 156          self::display_ban_options($mode);
 157   
 158          $template->assign_vars(array(
 159              'L_TITLE'                => $this->page_title,
 160              'L_EXPLAIN'                => $l_ban_explain,
 161              'L_UNBAN_TITLE'            => $l_unban_title,
 162              'L_UNBAN_EXPLAIN'        => $l_unban_explain,
 163              'L_BAN_CELL'            => $l_ban_cell,
 164              'L_BAN_EXCLUDE_EXPLAIN'    => $l_ban_exclude_explain,
 165              'L_NO_BAN_CELL'            => $l_no_ban_cell,
 166   
 167              'S_USERNAME_BAN'    => ($mode == 'user') ? true : false,
 168   
 169              'U_ACTION'            => $this->u_action,
 170              'U_FIND_USERNAME'    => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&amp;form=acp_ban&amp;field=ban'),
 171          ));
 172      }
 173   
 174      /**
 175      * Display ban options
 176      */
 177      static public function display_ban_options($mode)
 178      {
 179          global $user, $db, $template;
 180   
 181          // Ban length options
 182          $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; ');
 183   
 184          $ban_end_options = '';
 185          foreach ($ban_end_text as $length => $text)
 186          {
 187              $ban_end_options .= '<option value="' . $length . '">' . $text . '</option>';
 188          }
 189   
 190          switch ($mode)
 191          {
 192              case 'user':
 193   
 194                  $field = 'username';
 195                  $l_ban_cell = $user->lang['USERNAME'];
 196   
 197                  $sql = 'SELECT b.*, u.user_id, u.username, u.username_clean
 198                      FROM ' . BANLIST_TABLE . ' b, ' . USERS_TABLE . ' u
 199                      WHERE (b.ban_end >= ' . time() . '
 200                              OR b.ban_end = 0)
 201                          AND u.user_id = b.ban_userid
 202                      ORDER BY u.username_clean ASC';
 203              break;
 204   
 205              case 'ip':
 206   
 207                  $field = 'ban_ip';
 208                  $l_ban_cell = $user->lang['IP_HOSTNAME'];
 209   
 210                  $sql = 'SELECT *
 211                      FROM ' . BANLIST_TABLE . '
 212                      WHERE (ban_end >= ' . time() . "
 213                              OR ban_end = 0)
 214                          AND ban_ip <> ''
 215                      ORDER BY ban_ip";
 216              break;
 217   
 218              case 'email':
 219   
 220                  $field = 'ban_email';
 221                  $l_ban_cell = $user->lang['EMAIL_ADDRESS'];
 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