Banlog Stats

MobileHacks

New Member
Banlog Stats

What it does? - Adds a simple banlog to show who has been banned, for what reason, and how long until that ban is up.

Demo


Instructions:

First, create a file called 'banlog.php' in your forum root. Copy/paste this in that file

PHP:
<?php  

// ######################## SET PHP ENVIRONMENT ###########################  
error_reporting(E_ALL & ~E_NOTICE);  

define('THIS_SCRIPT', 'banlist');   

// #################### PRE-CACHE TEMPLATES AND DATA ######################  
// get special phrase groups  
$phrasegroups = array();  

// get special data templates from the datastore  
$specialtemplates = array();  

// pre-cache templates used by all actions  
$globaltemplates = array(   
        'my_banlist'  
);  

// pre-cache templates used by specific actions  
$actiontemplates = array();  

// ########################## REQUIRE BACK-END ############################  
require_once('./global.php');  

// #################### HARD CODE JAVASCRIPT PATHS ########################  
$headinclude = str_replace('clientscript', $vbulletin->options['bburl'] . '/clientscript', $headinclude);  

// ########################################################################  
// ######################### START MAIN SCRIPT ############################  
// ########################################################################  

$navbits = array();   

$navbits[$parent] = 'The Ban Log';  

$navbits = construct_navbits($navbits);  
eval('$navbar = "' . fetch_template('navbar') . '";');  

$querygroups = array(); 
foreach ($vbulletin->usergroupcache AS $usergroupid => $usergroup) 
{ 
    if (!($usergroup['genericoptions'] & $vbulletin->bf_ugp_genericoptions['isnotbannedgroup'])) 
    { 
        $querygroups["$usergroupid"] = $usergroup['title']; 
    } 
} 
if (!empty($querygroups)) 
{ 
    // now query users from the specified groups 
    $getusers = $db->query_read(" 
        SELECT user.userid, user.username, user.usergroupid AS busergroupid, 
        userban.usergroupid AS ousergroupid, 
        IF(userban.displaygroupid = 0, userban.usergroupid, userban.displaygroupid) AS odisplaygroupid, 
        bandate, liftdate, reason, 
        adminuser.userid AS adminid, adminuser.username AS adminname 
        FROM " . TABLE_PREFIX . "user AS user 
        LEFT JOIN " . TABLE_PREFIX . "userban AS userban ON(userban.userid = user.userid) 
        LEFT JOIN " . TABLE_PREFIX . "user AS adminuser ON(adminuser.userid = userban.adminid) 
        WHERE user.usergroupid IN(" . implode(',', array_keys($querygroups)) . ") 
        ORDER BY userban.liftdate ASC, user.username 
    "); 
    if ($db->num_rows($getusers)) 
    { 
        $users = array(); 
        while ($user = $db->fetch_array($getusers)) 
        { 
            $temporary = iif($user['liftdate'], 1, 0); 
            $users["$temporary"][] = $user; 
        } 
    } 
    $db->free_result($getusers); 
     
    // show temporarily banned users 
    if (!empty($users[1])) 
    { 
        foreach ($users[1] AS $user) 
        { 
            if ($user['liftdate'] == 0) 
            { 
                $user['banperiod'] = $vbphrase['permanent']; 
                $user['banlift'] = $vbphrase['never']; 
                $user['banremaining'] = $vbphrase['forever']; 
            } 
            else 
            { 
                $user['banlift'] = vbdate($vbulletin->options['dateformat'] . ', ~' . $vbulletin->options['timeformat'], $user['liftdate']); 
                $user['banperiod'] = ceil(($user['liftdate'] - $user['bandate']) / 86400); 
                if ($user['banperiod'] == 1) 
                { 
                    $user['banperiod'] .= " $vbphrase[day]"; 
                } 
                else 
                { 
                    $user['banperiod'] .= " $vbphrase[days]"; 
                } 
     
                $remain = $user['liftdate'] - TIMENOW; 
                $remain_days = floor($remain / 86400); 
                $remain_hours = ceil(($remain - ($remain_days * 86400)) / 3600); 
                if ($remain_hours == 24) 
                { 
                    $remain_days += 1; 
                    $remain_hours = 0; 
                } 
     
                if ($remain_days < 0) 
                { 
                    $user['banremaining'] = "<i>$vbphrase[will_be_lifted_soon]</i>"; 
                } 
                else 
                { 
                    if ($remain_days == 1) 
                    { 
                        $day_word = $vbphrase['day']; 
                    } 
                    else 
                    { 
                        $day_word = $vbphrase['days']; 
                    } 
                    if ($remain_hours == 1) 
                    { 
                        $hour_word = $vbphrase['hour']; 
                    } 
                    else 
                    { 
                        $hour_word = $vbphrase['hours']; 
                    } 
                    $user['banremaining'] = "$remain_days $day_word, $remain_hours $hour_word"; 
                } 
            } 
            $lista .= "<tr> 
                <td valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".$user['username']."</div> 
                </td> 
                <td align=\"center\" valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".$user['adminname']."</div> 
                </td> 
                <td align=\"right\" valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".vbdate($vbulletin->options['dateformat'], $user['bandate'])."</div> 
                </td> 
                <td align=\"center\" valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".$user['banperiod']."</div> 
                </td> 
                <td align=\"right\" valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".$user['banlift']."</div> 
                </td> 
                <td align=\"center\" valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".$user['banremaining']."</div> 
                </td> 
                <td align=\"right\" valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".$user['reason']."</div> 
                </td> 
            </tr>"; 
        } 
    } 
     
    // show permanently banned users 
    if (!empty($users[0])) 
    { 
        foreach ($users[0] AS $user) 
        { 
            if ($user['liftdate'] == 0) 
            { 
                $user['banperiod'] = "Permanent"; 
                $user['banlift'] = "Never"; 
                $user['banremaining'] = "Forever"; 
            } 
            else 
            { 
                $user['banlift'] = vbdate($vbulletin->options['dateformat'] . ', ~' . $vbulletin->options['timeformat'], $user['liftdate']); 
                $user['banperiod'] = ceil(($user['liftdate'] - $user['bandate']) / 86400); 
                if ($user['banperiod'] == 1) 
                { 
                    $user['banperiod'] .= " $vbphrase[day]"; 
                } 
                else 
                { 
                    $user['banperiod'] .= " $vbphrase[days]"; 
                } 
     
                $remain = $user['liftdate'] - TIMENOW; 
                $remain_days = floor($remain / 86400); 
                $remain_hours = ceil(($remain - ($remain_days * 86400)) / 3600); 
                if ($remain_hours == 24) 
                { 
                    $remain_days += 1; 
                    $remain_hours = 0; 
                } 
     
                if ($remain_days < 0) 
                { 
                    $user['banremaining'] = "<i>$vbphrase[will_be_lifted_soon]</i>"; 
                } 
                else 
                { 
                    if ($remain_days == 1) 
                    { 
                        $day_word = $vbphrase['day']; 
                    } 
                    else 
                    { 
                        $day_word = $vbphrase['days']; 
                    } 
                    if ($remain_hours == 1) 
                    { 
                        $hour_word = $vbphrase['hour']; 
                    } 
                    else 
                    { 
                        $hour_word = $vbphrase['hours']; 
                    } 
                    $user['banremaining'] = "$remain_days $day_word, $remain_hours $hour_word"; 
                } 
            } 
            $listb .= "<tr> 
                <td valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".$user['username']."</div> 
                </td> 
                <td align=\"center\" valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".$user['adminname']."</div> 
                </td> 
                <td align=\"right\" valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".vbdate($vbulletin->options['dateformat'], $user['bandate'])."</div> 
                </td> 
                <td align=\"center\" valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".$user['banperiod']."</div> 
                </td> 
                <td align=\"center\" valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".$user['banlift']."</div> 
                </td> 
                <td align=\"center\" valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".$user['banremaining']."</div> 
                </td> 
                <td align=\"right\" valign=\"top\" class=\"alt1\"> 
                <div class=\"smallfont\">".$user['reason']."</div> 
                </td> 
            </tr>"; 
        } 
    } 
} 

eval('print_output("' . fetch_template('my_banlist') . '");');  

?>
Next, create a new template for each style you have called 'my_banlist'

Copy/paste this code:

PHP:
$stylevar[htmldoctype]
<html xmlns="http://www.w3.org/1999/xhtml" dir="$stylevar[textdirection]" lang="$stylevar[languagecode]">
<head>
$headinclude
<title>Banlog - $vboptions[bbtitle]</title>
</head>
<body>

$header
$navbar

<table class="tborder" align="center" border="0" cellpadding="3" cellspacing="2" width="100%">
    <tr>
        <td colspan="7" class="tcat">
        <strong>Banned Users: Temporary Bans</strong>
        </td>
    </tr>
    <tr>
        <td align="center" class="alt1">
        <strong>User Name</strong>
        </td><br />
        <td align="center" class="alt1">
        <strong>Banned By</strong>
        </td>
        <td align="center" class="alt1">
        <strong>Banned On</strong>
        </td>
        <td align="center" class="alt1">
        <strong>Ban Period</strong>
        </td>
        <td align="center" class="alt1">
        <strong>Ban Will Be Lifted On</strong>
        </td>
                <td align="center" class="alt1">
        <strong>Ban Time Remaining</strong>
        </td>
                <td align="center" class="alt1">
        <strong>Ban Reason</strong>
        </td>
    </tr>

<if condition="$lista == ''">

</table><br />

        <div align="center"><strong>No one is currently banned...  Hmmmm...  Must be a good day!</strong></div>

<else />

        $lista

</table><br />

</if>



<table class="tborder" align="center" border="0" cellpadding="3" cellspacing="2" width="100%">
    <tr>
        <td colspan="7" class="tcat">
        <strong>Banned Users: Permanent Bans</strong>
        </td>
    </tr>
    <tr>
        <td align="center" class="alt1">
        <strong>User Name</strong>
        </td><br />
        <td align="center" class="alt1">
        <strong>Banned By</strong>
        </td>
        <td align="center" class="alt1">
        <strong>Banned On</strong>
        </td>
        <td align="center" class="alt1">
        <strong>Ban Period</strong>
        </td>
        <td align="center" class="alt1">
        <strong>Ban Will Be Lifted On</strong>
        </td>
                <td align="center" class="alt1">
        <strong>Ban Time Remaining</strong>
        </td>
                <td align="center" class="alt1">
        <strong>Ban Reason</strong>
        </td>
    </tr>


<if condition="$listb == ''">

</table><br />

        <div align="center"><strong>No one is currently banned...  Hmmmm...  Must be a good day!</strong></div>

<else />

        $listb

</table><br />

</if>

$footer
</body>
</html>
 
Back
Top