diff --git a/phpBB/includes/acp/acp_ban.php b/phpBB/includes/acp/acp_ban.php index 5aed78be08..22ae9d4e7b 100644 --- a/phpBB/includes/acp/acp_ban.php +++ b/phpBB/includes/acp/acp_ban.php @@ -156,7 +156,8 @@ class acp_ban break; } - self::display_ban_options($mode); + display_ban_end_options(); + display_ban_options($mode); $template->assign_vars(array( 'L_TITLE' => $this->page_title, @@ -173,126 +174,4 @@ class acp_ban 'U_FIND_USERNAME' => append_sid("{$phpbb_root_path}memberlist.$phpEx", 'mode=searchuser&form=acp_ban&field=ban'), )); } - - /** - * Display ban options - */ - static public function display_ban_options($mode) - { - global $user, $db, $template; - - // Ban length options - $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'] . ' -> '); - - $ban_end_options = ''; - foreach ($ban_end_text as $length => $text) - { - $ban_end_options .= ''; - } - - switch ($mode) - { - case 'user': - - $field = 'username'; - - $sql = 'SELECT b.*, u.user_id, u.username, u.username_clean - FROM ' . BANLIST_TABLE . ' b, ' . USERS_TABLE . ' u - WHERE (b.ban_end >= ' . time() . ' - OR b.ban_end = 0) - AND u.user_id = b.ban_userid - ORDER BY u.username_clean ASC'; - break; - - case 'ip': - - $field = 'ban_ip'; - - $sql = 'SELECT * - FROM ' . BANLIST_TABLE . ' - WHERE (ban_end >= ' . time() . " - OR ban_end = 0) - AND ban_ip <> '' - ORDER BY ban_ip"; - break; - - case 'email': - - $field = 'ban_email'; - - $sql = 'SELECT * - FROM ' . BANLIST_TABLE . ' - WHERE (ban_end >= ' . time() . " - OR ban_end = 0) - AND ban_email <> '' - ORDER BY ban_email"; - break; - } - $result = $db->sql_query($sql); - - $banned_options = $excluded_options = array(); - while ($row = $db->sql_fetchrow($result)) - { - $option = ''; - - if ($row['ban_exclude']) - { - $excluded_options[] = $option; - } - else - { - $banned_options[] = $option; - } - - $time_length = ($row['ban_end']) ? ($row['ban_end'] - $row['ban_start']) / 60 : 0; - - if ($time_length == 0) - { - // Banned permanently - $ban_length = $user->lang['PERMANENT']; - } - else if (isset($ban_end_text[$time_length])) - { - // Banned for a given duration - $ban_length = $user->lang('BANNED_UNTIL_DURATION', $ban_end_text[$time_length], $user->format_date($row['ban_end'], false, true)); - } - else - { - // Banned until given date - $ban_length = $user->lang('BANNED_UNTIL_DATE', $user->format_date($row['ban_end'], false, true)); - } - - $template->assign_block_vars('bans', array( - 'BAN_ID' => (int) $row['ban_id'], - 'LENGTH' => $ban_length, - 'A_LENGTH' => addslashes($ban_length), - 'REASON' => $row['ban_reason'], - 'A_REASON' => addslashes($row['ban_reason']), - 'GIVE_REASON' => $row['ban_give_reason'], - 'A_GIVE_REASON' => addslashes($row['ban_give_reason']), - )); - } - $db->sql_freeresult($result); - - $options = ''; - if ($excluded_options) - { - $options .= ''; - $options .= implode('', $excluded_options); - $options .= ''; - } - - if ($banned_options) - { - $options .= ''; - $options .= implode('', $banned_options); - $options .= ''; - } - - $template->assign_vars(array( - 'S_BAN_END_OPTIONS' => $ban_end_options, - 'S_BANNED_OPTIONS' => ($banned_options || $excluded_options) ? true : false, - 'BANNED_OPTIONS' => $options, - )); - } } diff --git a/phpBB/includes/functions_admin.php b/phpBB/includes/functions_admin.php index 4629706048..c116b605e8 100644 --- a/phpBB/includes/functions_admin.php +++ b/phpBB/includes/functions_admin.php @@ -3094,3 +3094,133 @@ function enable_bitfield_column_flag($table_name, $column_name, $flag, $sql_more ' . $sql_more; $db->sql_query($sql); } + +function display_ban_end_options() +{ + global $user, $template; + + // Ban length options + $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'] . ' -> '); + + $ban_end_options = ''; + foreach ($ban_end_text as $length => $text) + { + $ban_end_options .= ''; + } + + $template->assign_vars(array( + 'S_BAN_END_OPTIONS' => $ban_end_options + )); +} + +/** +* Display ban options +*/ +function display_ban_options($mode) +{ + global $user, $db, $template; + + switch ($mode) + { + case 'user': + + $field = 'username'; + + $sql = 'SELECT b.*, u.user_id, u.username, u.username_clean + FROM ' . BANLIST_TABLE . ' b, ' . USERS_TABLE . ' u + WHERE (b.ban_end >= ' . time() . ' + OR b.ban_end = 0) + AND u.user_id = b.ban_userid + ORDER BY u.username_clean ASC'; + break; + + case 'ip': + + $field = 'ban_ip'; + + $sql = 'SELECT * + FROM ' . BANLIST_TABLE . ' + WHERE (ban_end >= ' . time() . " + OR ban_end = 0) + AND ban_ip <> '' + ORDER BY ban_ip"; + break; + + case 'email': + + $field = 'ban_email'; + + $sql = 'SELECT * + FROM ' . BANLIST_TABLE . ' + WHERE (ban_end >= ' . time() . " + OR ban_end = 0) + AND ban_email <> '' + ORDER BY ban_email"; + break; + } + $result = $db->sql_query($sql); + + $banned_options = $excluded_options = array(); + while ($row = $db->sql_fetchrow($result)) + { + $option = ''; + + if ($row['ban_exclude']) + { + $excluded_options[] = $option; + } + else + { + $banned_options[] = $option; + } + + $time_length = ($row['ban_end']) ? ($row['ban_end'] - $row['ban_start']) / 60 : 0; + + if ($time_length == 0) + { + // Banned permanently + $ban_length = $user->lang['PERMANENT']; + } + else if (isset($ban_end_text[$time_length])) + { + // Banned for a given duration + $ban_length = $user->lang('BANNED_UNTIL_DURATION', $ban_end_text[$time_length], $user->format_date($row['ban_end'], false, true)); + } + else + { + // Banned until given date + $ban_length = $user->lang('BANNED_UNTIL_DATE', $user->format_date($row['ban_end'], false, true)); + } + + $template->assign_block_vars('bans', array( + 'BAN_ID' => (int) $row['ban_id'], + 'LENGTH' => $ban_length, + 'A_LENGTH' => addslashes($ban_length), + 'REASON' => $row['ban_reason'], + 'A_REASON' => addslashes($row['ban_reason']), + 'GIVE_REASON' => $row['ban_give_reason'], + 'A_GIVE_REASON' => addslashes($row['ban_give_reason']), + )); + } + $db->sql_freeresult($result); + + $options = ''; + if ($excluded_options) + { + $options .= ''; + $options .= implode('', $excluded_options); + $options .= ''; + } + + if ($banned_options) + { + $options .= ''; + $options .= implode('', $banned_options); + $options .= ''; + } + + $template->assign_vars(array( + 'S_BANNED_OPTIONS' => ($banned_options || $excluded_options) ? true : false, + 'BANNED_OPTIONS' => $options, + )); +} diff --git a/phpBB/includes/mcp/mcp_ban.php b/phpBB/includes/mcp/mcp_ban.php index 6f748f5433..c358680e00 100644 --- a/phpBB/includes/mcp/mcp_ban.php +++ b/phpBB/includes/mcp/mcp_ban.php @@ -185,15 +185,6 @@ class mcp_ban } } - // Ban length options - $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'] . ' -> '); - - $ban_end_options = ''; - foreach ($ban_end_text as $length => $text) - { - $ban_end_options .= ''; - } - // Define language vars $this->page_title = $user->lang[strtoupper($mode) . '_BAN']; @@ -218,7 +209,8 @@ class mcp_ban break; } - acp_ban::display_ban_options($mode); + display_ban_end_options(); + display_ban_options($mode); $template->assign_vars(array( 'L_TITLE' => $this->page_title,