<?php
/**
 * This file is part of 
 * pragmaMx - Web Content Management System.
 * Copyright by pragmaMx Developer Team - http://www.pragmamx.org
 *
 * pragmaMx is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * $Revision: 1.5.2.6 $
 * $Author: tora60 $
 * $Date: 2008/03/12 18:40:52 $
 */

if (!defined("mxAdminFileLoaded")) die("Access Denied");

if (!mxGetAdminPref('radminsuper')) {
    mxErrorScreen("Access Denied");
    die();
}

function ConfigureBan()
{
    global $prefix;

    $ban_ip = array();
    $ban_name = array();
    $ban_mail = array();

    $ban_auto = "";

    $ip_banned = sql_query("SELECT ban_type, ban_val FROM " . $prefix . "_user_ban ORDER BY ban_val ASC ");

    while (list($ban_type, $ban_val) = sql_fetch_row($ip_banned)) {
        if (($ban_type == "ban_auto") && ($ban_val == 1)) {
            $ban_auto = " checked";
        }

        if ($ban_type == "ban_ip") {
            $ban_ip[] = $ban_val;
        }
        if ($ban_type == "ban_name") {
            $ban_name[] = $ban_val;
        }
        if ($ban_type == "ban_mail") {
            $ban_mail[] = $ban_val;
        }
    }

    $ban_ip = (count($ban_ip) != 0) ? join(", ", $ban_ip) : "";
    $ban_name = (count($ban_name) != 0) ? join(", ", $ban_name) : "";
    $ban_mail = (count($ban_mail) != 0) ? join(", ", $ban_mail) : "";

    if (empty($ban_name)) {
        global $CensorListUsers;
        foreach ($CensorListUsers as $oldban_name) {
            $ban_name[] = $oldban_name;
        }
        $ban_name = (count($ban_name) != 0) ? join(", ", $ban_name) : "";
    }

    include ("header.php");
    GraphicAdmin(1);
    title(_ADMINBANCONFIG);
    
    OpenTable();
    echo "<form action=\"admin.php\" method=\"post\">\n"
     . "<fieldset><legend>" . _INFOHOWBAN . "</legend>\n"
     .  _INFOHOWBANHELP
     . "<center><table border=\"0\"><tr><td align=\"center\">\n"
     . "<textarea name=\"ip_ban\" cols=\"60\" rows=\"8\">$ban_ip</textarea><br />" . _CUTWITHCOMMATA . "\n"
     . "</td></tr>\n"
     . "</table>\n"
     . "<input type=\"hidden\" name=\"ip_type\" value=\"ban_ip\">\n"
     . "<input type=\"hidden\" name=\"op\" value=\"SaveSetBan\">\n"
     . "<input type=\"submit\" value=\"" . _SAVECHANGES . "\"></center>\n"
     . "</fieldset>\n"
     . "</form>";
    CloseTable();
    echo "<br>";
    OpenTable();
    echo "<form action=\"admin.php\" method=\"post\">\n"
     . "<fieldset><legend>" . _INFOHOWBANNAME . "</legend>\n"
     .  _INFOHOWBANNAMEHELP
     . "<center><table border=\"0\"><tr><td align=\"center\">\n"
     . "<textarea name=\"ip_ban\" cols=\"60\" rows=\"8\">$ban_name</textarea><br />" . _CUTWITHCOMMATA . "\n"
     . "</td></tr>\n"
     . "<tr><td>\n"
     . "<input type=\"checkbox\" value=\"1\" name=\"ip_auto\"{$ban_auto}>&nbsp;" . _AUTOBAN . "?\n"
     . "</td></tr>\n"
     . "</table>\n"
     . "<input type=\"hidden\" name=\"ip_type\" value=\"ban_name\">\n"
     . "<input type=\"hidden\" name=\"op\" value=\"SaveSetBan\">\n"
     . "<input type=\"submit\" value=\"" . _SAVECHANGES . "\"></center>\n"
     . "</fieldset>\n"
     . "</form>";
    CloseTable();
    echo "<br>";
    OpenTable();
    echo "<form action=\"admin.php\" method=\"post\">\n"
     . "<fieldset><legend>" . _INFOHOWBANMAIL . "</legend>\n"
     .  _INFOHOWBANMAILHELP
     . "<center><table border=\"0\"><tr><td align=\"center\">\n"
     . "<textarea name=\"ip_ban\" cols=\"60\" rows=\"8\">$ban_mail</textarea><br />" . _CUTWITHCOMMATA . "\n"
     . "</td></tr>\n"
     . "</table>\n"
     . "<input type=\"hidden\" name=\"ip_type\" value=\"ban_mail\">\n"
     . "<input type=\"hidden\" name=\"op\" value=\"SaveSetBan\">\n"
     . "<input type=\"submit\" value=\"" . _SAVECHANGES . "\"></center>\n"
     . "</fieldset>\n"
     . "</form>";
    CloseTable();
    echo "<br>";
    include ("footer.php");
}

function SaveSetBan($ip_ban, $ip_type)
{
    global $user_prefix, $prefix;
    $ip_type = (isset($_POST['ip_type'])) ? strip_tags($_POST['ip_type']) : header("Location:admin.php");
    $$ip_type = trim($ip_type);
    $ban_insert = false;
    switch ($ip_type) {
        case "ban_ip":
            // IPs
            @sql_query("delete from " . $prefix . "_user_ban WHERE ban_type='ban_ip'");
            $ip_ban = explode(",", $ip_ban);
            foreach($ip_ban as $ban_ip) {
                $ban_ip = trim("" . strip_tags($ban_ip) . "");
                if (preg_match('#^((\d|[1-9]\d|2[0-4]\d|25[0-5]|1\d\d)(?:\.(\d|[1-9]\d|2[0-4]\d|25[0-5]|1\d\d)){3})$#', $ban_ip)) {
                    $ban_insert = sql_query("insert into " . $prefix . "_user_ban (ban_type, ban_val) values ('ban_ip', '$ban_ip')");
                }
            }
            break;

        case "ban_name":
            // Bentuzernamen
            $ip_auto = (isset($_POST['ip_auto'])) ? intval($_POST['ip_auto']) : 0;
            @sql_query("delete from " . $prefix . "_user_ban WHERE ban_type='ban_name'");
            $ip_ban = explode(",", $ip_ban);
            foreach($ip_ban as $ban_name) {
                $ban_name = trim("" . strip_tags($ban_name) . "");
                if ((!ereg("[^a-zA-Z0-9 _-]", $ban_name)) && (!is_numeric($ban_name))) {
                    $ban_insert = sql_query("insert into " . $prefix . "_user_ban (ban_type, ban_val) values ('ban_name', '{$ban_name}')");
                    if ($ip_auto == 1) {
                        @sql_query("UPDATE " . $user_prefix . "_users SET user_stat='2' WHERE uname='{$ban_name}'");
                    }
                }
            }
            @sql_query("UPDATE " . $prefix . "_user_ban SET ban_val='{$ip_auto}' WHERE ban_type='ban_auto'");
            break;

        case "ban_mail":
            // eMailadressen
            @sql_query("delete from " . $prefix . "_user_ban WHERE ban_type='ban_mail'");
            $ip_ban = explode(",", $ip_ban);
            foreach($ip_ban as $ban_mail) {
                $ban_mail = mxAddSlashesForSQL(trim(strip_tags($ban_mail)));
                #if (mxCheckEmail($ban_mail)) {
                    $ban_insert = sql_query("insert into " . $prefix . "_user_ban (ban_type, ban_val) values ('ban_mail', '" . $ban_mail . "')");
                #}
            }
            break;

        default:
            header("Location:admin.php");
            exit();
            break;
    }

    include ("header.php");
    GraphicAdmin(1);
    openTable();
    echo '<center>';
    if ($ban_insert) {
        echo "<h3>" . _IPADDED . "</h3>";
    }
    echo " <a href=\"admin.php?op=ConfigureBan\">" . _BACKTO . " - " . _ADMINMENU . "</a></center> ";
    closeTable();
    include ("footer.php");
}

switch ($op) {
    case "ConfigureBan":
        ConfigureBan();
        break;

    case "SaveSetBan":
        SaveSetBan($ip_ban, $ip_type);
        break;
}

?>