Please make sure IN_MYBB is defined.");
}
$page->add_breadcrumb_item($lang->banning, "index.php?module=config-banning");
$plugins->run_hooks("admin_config_banning_begin");
$mybb->input['filter'] = $mybb->get_input('filter');
if($mybb->input['action'] == "add" && $mybb->request_method == "post")
{
$plugins->run_hooks("admin_config_banning_add");
if(!trim($mybb->input['filter']))
{
$errors[] = $lang->error_missing_ban_input;
}
$query = $db->simple_select("banfilters", "fid", "filter = '".$db->escape_string($mybb->input['filter'])."' AND type = '".$mybb->get_input('type', MyBB::INPUT_INT)."'");
if($db->num_rows($query))
{
$errors[] = $lang->error_filter_already_banned;
}
if(!$errors)
{
$new_filter = array(
"filter" => $db->escape_string($mybb->input['filter']),
"type" => $mybb->get_input('type', MyBB::INPUT_INT),
"dateline" => TIME_NOW
);
$fid = $db->insert_query("banfilters", $new_filter);
$plugins->run_hooks("admin_config_banning_add_commit");
if($mybb->input['type'] == 1)
{
$cache->update_bannedips();
}
else if($mybb->input['type'] == 3)
{
$cache->update_bannedemails();
}
// Log admin action
log_admin_action($fid, $mybb->input['filter'], (int)$mybb->input['type']);
if($mybb->input['type'] == 1)
{
flash_message($lang->success_ip_banned, 'success');
admin_redirect("index.php?module=config-banning");
}
else if($mybb->input['type'] == 2)
{
flash_message($lang->success_username_disallowed, 'success');
admin_redirect("index.php?module=config-banning&type=usernames");
}
else if($mybb->input['type'] == 3)
{
flash_message($lang->success_email_disallowed, 'success');
admin_redirect("index.php?module=config-banning&type=emails");
}
}
else
{
if($mybb->input['type'] == 1)
{
$mybb->input['type'] = "ips";
}
else if($mybb->input['type'] == 2)
{
$mybb->input['type'] = "usernames";
}
else if($mybb->input['type'] == 3)
{
$mybb->input['type'] = "emails";
}
$mybb->input['action'] = '';
}
}
if($mybb->input['action'] == "delete")
{
$query = $db->simple_select("banfilters", "*", "fid='".$mybb->get_input('fid', MyBB::INPUT_INT)."'");
$filter = $db->fetch_array($query);
// Does the filter not exist?
if(!$filter)
{
flash_message($lang->error_invalid_filter, 'error');
admin_redirect("index.php?module=config-banning");
}
$plugins->run_hooks("admin_config_banning_delete");
if($filter['type'] == 3)
{
$type = "emails";
}
else if($filter['type'] == 2)
{
$type = "usernames";
}
else
{
$type = "ips";
}
// User clicked no
if($mybb->get_input('no'))
{
admin_redirect("index.php?module=config-banning&type={$type}");
}
if($mybb->request_method == "post")
{
// Delete the ban filter
$db->delete_query("banfilters", "fid='{$filter['fid']}'");
$plugins->run_hooks("admin_config_banning_delete_commit");
// Log admin action
log_admin_action($filter['fid'], $filter['filter'], (int)$filter['type']);
// Banned IP? Rebuild banned IP cache
if($filter['type'] == 1)
{
$cache->update_bannedips();
}
else if($filter['type'] == 3)
{
$cache->update_bannedemails();
}
flash_message($lang->success_ban_deleted, 'success');
admin_redirect("index.php?module=config-banning&type={$type}");
}
else
{
$page->output_confirm_action("index.php?module=config-banning&action=delete&fid={$filter['fid']}", $lang->confirm_ban_deletion);
}
}
if(!$mybb->input['action'])
{
$plugins->run_hooks("admin_config_banning_start");
switch($mybb->get_input('type'))
{
case "emails":
$type = "3";
$title = $lang->disallowed_email_addresses;
break;
case "usernames":
$type = "2";
$title = $lang->disallowed_usernames;
break;
default:
$type = "1";
$title = $lang->banned_ip_addresses;
$mybb->input['type'] = "ips";
}
$page->output_header($title);
$sub_tabs['ips'] = array(
'title' => $lang->banned_ips,
'link' => "index.php?module=config-banning",
'description' => $lang->banned_ips_desc
);
$sub_tabs['users'] = array(
'title' => $lang->banned_accounts,
'link' => "index.php?module=user-banning"
);
$sub_tabs['usernames'] = array(
'title' => $lang->disallowed_usernames,
'link' => "index.php?module=config-banning&type=usernames",
'description' => $lang->disallowed_usernames_desc
);
$sub_tabs['emails'] = array(
'title' => $lang->disallowed_email_addresses,
'link' => "index.php?module=config-banning&type=emails",
'description' => $lang->disallowed_email_addresses_desc
);
$page->output_nav_tabs($sub_tabs, $mybb->input['type']);
if($errors)
{
$page->output_inline_error($errors);
}
$query = $db->simple_select("banfilters", "COUNT(fid) AS filter", "type='{$type}'");
$total_rows = $db->fetch_field($query, "filter");
$pagenum = $mybb->get_input('page', MyBB::INPUT_INT);
if($pagenum)
{
$start = ($pagenum - 1) * 20;
$pages = ceil($total_rows / 20);
if($pagenum > $pages)
{
$start = 0;
$pagenum = 1;
}
}
else
{
$start = 0;
$pagenum = 1;
}
$form = new Form("index.php?module=config-banning&action=add", "post", "add");
if($mybb->input['type'] == "usernames")
{
$form_container = new FormContainer($lang->add_disallowed_username);
$form_container->output_row($lang->username." *", $lang->username_desc, $form->generate_text_box('filter', $mybb->input['filter'], array('id' => 'filter')), 'filter');
$buttons[] = $form->generate_submit_button($lang->disallow_username);
}
else if($mybb->input['type'] == "emails")
{
$form_container = new FormContainer($lang->add_disallowed_email_address);
$form_container->output_row($lang->email_address." *", $lang->email_address_desc, $form->generate_text_box('filter', $mybb->input['filter'], array('id' => 'filter')), 'filter');
$buttons[] = $form->generate_submit_button($lang->disallow_email_address);
}
else
{
$form_container = new FormContainer($lang->ban_an_ip_address);
$form_container->output_row($lang->ip_address." *", $lang->ip_address_desc, $form->generate_text_box('filter', $mybb->input['filter'], array('id' => 'filter')), 'filter');
$buttons[] = $form->generate_submit_button($lang->ban_ip_address);
}
$form_container->end();
echo $form->generate_hidden_field("type", $type);
$form->output_submit_wrapper($buttons);
$form->end();
echo '
';
$table = new Table;
if($mybb->input['type'] == "usernames")
{
$table->construct_header($lang->username);
$table->construct_header($lang->date_disallowed, array("class" => "align_center", "width" => 200));
$table->construct_header($lang->last_attempted_use, array("class" => "align_center", "width" => 200));
}
else if($mybb->input['type'] == "emails")
{
$table->construct_header($lang->email_address);
$table->construct_header($lang->date_disallowed, array("class" => "align_center", "width" => 200));
$table->construct_header($lang->last_attempted_use, array("class" => "align_center", "width" => 200));
}
else
{
$table->construct_header($lang->ip_address);
$table->construct_header($lang->ban_date, array("class" => "align_center", "width" => 200));
$table->construct_header($lang->last_access, array("class" => "align_center", "width" => 200));
}
$table->construct_header($lang->controls, array("width" => 1));
$query = $db->simple_select("banfilters", "*", "type='{$type}'", array('limit_start' => $start, 'limit' => 20, "order_by" => "filter", "order_dir" => "asc"));
while($filter = $db->fetch_array($query))
{
$filter['filter'] = htmlspecialchars_uni($filter['filter']);
if($filter['lastuse'] > 0)
{
$last_use = my_date('relative', $filter['lastuse']);
}
else
{
$last_use = $lang->never;
}
if($filter['dateline'] > 0)
{
$date = my_date('relative', $filter['dateline']);
}
else
{
$date = $lang->na;
}
$table->construct_cell($filter['filter']);
$table->construct_cell($date, array("class" => "align_center"));
$table->construct_cell($last_use, array("class" => "align_center"));
$table->construct_cell("post_code}\" onclick=\"return AdminCP.deleteConfirmation(this, '{$lang->confirm_ban_deletion}');\">style}/images/icons/delete.png\" title=\"{$lang->delete}\" alt=\"{$lang->delete}\" />", array("class" => "align_center"));
$table->construct_row();
}
if($table->num_rows() == 0)
{
$table->construct_cell($lang->no_bans, array("colspan" => 4));
$table->construct_row();
}
$table->output($title);
echo "
".draw_admin_pagination($pagenum, "20", $total_rows, "index.php?module=config-banning&type={$mybb->get_input('type')}&page={page}");
$page->output_footer();
}