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