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. |
|
(Beispiel Datei-Icons)
|
Auf das Icon klicken um den Quellcode anzuzeigen |
acp_ban.php
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&form=acp_ban&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'] . ' -> ');
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