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