\filepath\filename
At line XXX -- code on this line for simple search --
Add AFTER/BEFORE/REPLACE
New code here
------------------------------------------------------------------------------------------------------------------------------------
\includes\admin.php
At line 315 -- elseif($_GET['c'] == "mods") --
Add BEFORE
elseif($_GET['c'] == "comms")
// ###################[ Comms ]##################################################################
{
CheckAdminAccess( ADMIN_OWNER|ADMIN_ADD_BAN|ADMIN_EDIT_OWN_BANS|ADMIN_EDIT_ALL_BANS );
if(!isset($_GET['o']))
{
// ====================[ ADMIN SIDE MENU START ] ===================
$banTabMenu = new CTabsMenu();
if($userbank->HasAccess(ADMIN_OWNER|ADMIN_ADD_BAN ) ) {
$banTabMenu->addMenuItem("Add a block", 0);
}
$banTabMenu->addMenuItem("Comms list", 1, "", "index.php?p=commslist",true);
$banTabMenu->outputMenu();
// ====================[ ADMIN SIDE MENU END ] ===================
include TEMPLATES_PATH . "/admin.comms.php";
if(isset($_GET['mode']) && $_GET['mode'] == "delete")
echo "";
elseif(isset($_GET['mode']) && $_GET['mode']=="unban")
echo "";
RewritePageTitle("Comms");
}
elseif($_GET['o'] == 'edit')
{
$banTabMenu = new CTabsMenu();
$banTabMenu->addMenuItem("Back", 0,"", "javascript:history.go(-1);", true);
$banTabMenu->outputMenu();
include TEMPLATES_PATH . "/admin.edit.comms.php";
RewritePageTitle("Edit Block Details");
}
}
------------------------------------------------------------------------------------------------------------------------------------
\includes\page-builder.php
At line 38 -- case "servers": --
Add BEFORE
case "commslist":
RewritePageTitle("Communications Block List");
$page = TEMPLATES_PATH ."/page.commslist.php";
break;
------------------------------------------------------------------------------------------------------------------------------------
\includes\sb-callback.php
At line 2969 (end of file) -- ?> --
Add BEFORE
function AddBlock($nickname, $type, $steam, $length, $reason)
{
$objResponse = new xajaxResponse();
global $userbank, $username;
if(!$userbank->HasAccess(ADMIN_OWNER|ADMIN_ADD_BAN))
{
$objResponse->redirect("index.php?p=login&m=no_access", 0);
$log = new CSystemLog("w", "Hacking Attempt", $username . " tried to add a block, but doesnt have access.");
return $objResponse;
}
$steam = trim($steam);
$error = 0;
// If they didnt type a steamid
if(empty($steam))
{
$error++;
$objResponse->addAssign("steam.msg", "innerHTML", "You must type a Steam ID or Community ID");
$objResponse->addScript("$('steam.msg').setStyle('display', 'block');");
}
else if((!is_numeric($steam)
&& !validate_steam($steam))
|| (is_numeric($steam)
&& (strlen($steam) < 15
|| !validate_steam($steam = FriendIDToSteamID($steam)))))
{
$error++;
$objResponse->addAssign("steam.msg", "innerHTML", "Please enter a valid Steam ID or Community ID");
$objResponse->addScript("$('steam.msg').setStyle('display', 'block');");
}
else
{
$objResponse->addAssign("steam.msg", "innerHTML", "");
$objResponse->addScript("$('steam.msg').setStyle('display', 'none');");
}
if($error > 0)
return $objResponse;
$nickname = RemoveCode($nickname);
$reason = RemoveCode($reason);
if(!$length)
$len = 0;
else
$len = $length*60;
// prune any old bans
PruneComms();
$typeW = "";
switch ((int)$type)
{
case 1:
$typeW = "type = 1";
break;
case 2:
$typeW = "type = 2";
break;
case 3:
$typeW = "(type = 1 OR type = 2)";
break;
default:
$typeW = "";
break;
}
// Check if the new steamid is already banned
$chk = $GLOBALS['db']->GetRow("SELECT count(bid) AS count FROM ".DB_PREFIX."_comms WHERE authid = ? AND (length = 0 OR ends > UNIX_TIMESTAMP()) AND RemovedBy IS NULL AND ".$typeW, array($steam));
if(intval($chk[0]) > 0)
{
$objResponse->addScript("ShowBox('Error', 'SteamID: $steam is already blocked.', 'red', '');");
return $objResponse;
}
// Check if player is immune
$admchk = $userbank->GetAllAdmins();
foreach($admchk as $admin)
if($admin['authid'] == $steam && $userbank->GetProperty('srv_immunity') < $admin['srv_immunity'])
{
$objResponse->addScript("ShowBox('Error', 'SteamID: Admin ".$admin['user']." ($steam) is immune.', 'red', '');");
return $objResponse;
}
if((int)$type == 1 || (int)$type == 3)
{
$pre = $GLOBALS['db']->Prepare("INSERT INTO ".DB_PREFIX."_comms(created,type,authid,name,ends,length,reason,aid,adminIp ) VALUES
(UNIX_TIMESTAMP(),1,?,?,(UNIX_TIMESTAMP() + ?),?,?,?,?)");
$GLOBALS['db']->Execute($pre,array($steam,
$nickname,
$length*60,
$len,
$reason,
$userbank->GetAid(),
$_SERVER['REMOTE_ADDR']));
}
if ((int)$type == 2 || (int)$type ==3)
{
$pre = $GLOBALS['db']->Prepare("INSERT INTO ".DB_PREFIX."_comms(created,type,authid,name,ends,length,reason,aid,adminIp ) VALUES
(UNIX_TIMESTAMP(),2,?,?,(UNIX_TIMESTAMP() + ?),?,?,?,?)");
$GLOBALS['db']->Execute($pre,array($steam,
$nickname,
$length*60,
$len,
$reason,
$userbank->GetAid(),
$_SERVER['REMOTE_ADDR']));
}
$objResponse->addScript("ShowBlockBox('".$steam."', '".(int)$type."', '".(int)$len."');");
$objResponse->addScript("TabToReload();");
$log = new CSystemLog("m", "Block Added", "Block against (" . $steam . ") has been added, reason: $reason, length: $length", true, $kickit);
return $objResponse;
}
function PrepareReblock($bid)
{
$objResponse = new xajaxResponse();
$ban = $GLOBALS['db']->GetRow("SELECT name, authid, type, length, reason FROM ".DB_PREFIX."_comms WHERE bid = '".$bid."';");
// clear any old stuff
$objResponse->addScript("$('nickname').value = ''");
$objResponse->addScript("$('steam').value = ''");
$objResponse->addScript("$('txtReason').value = ''");
$objResponse->addAssign("txtReason", "innerHTML", "");
// add new stuff
$objResponse->addScript("$('nickname').value = '" . $ban['name'] . "'");
$objResponse->addScript("$('steam').value = '" . $ban['authid']. "'");
$objResponse->addScriptCall("selectLengthTypeReason", $ban['length'], $ban['type']-1, addslashes($ban['reason']));
$objResponse->addScript("SwapPane(0);");
return $objResponse;
}
function PrepareBlockFromBan($bid)
{
$objResponse = new xajaxResponse();
// clear any old stuff
$objResponse->addScript("$('nickname').value = ''");
$objResponse->addScript("$('steam').value = ''");
$objResponse->addScript("$('txtReason').value = ''");
$objResponse->addAssign("txtReason", "innerHTML", "");
$ban = $GLOBALS['db']->GetRow("SELECT name, authid FROM ".DB_PREFIX."_bans WHERE bid = '".$bid."';");
// add new stuff
$objResponse->addScript("$('nickname').value = '" . $ban['name'] . "'");
$objResponse->addScript("$('steam').value = '" . $ban['authid']. "'");
$objResponse->addScript("SwapPane(0);");
return $objResponse;
}
function PasteBlock($sid, $name)
{
$objResponse = new xajaxResponse();
global $userbank, $username;
$sid = (int)$sid;
if(!$userbank->HasAccess(ADMIN_OWNER|ADMIN_ADD_BAN))
{
$objResponse->redirect("index.php?p=login&m=no_access", 0);
$log = new CSystemLog("w", "Hacking Attempt", $username . " tried paste a block, but doesn't have access.");
return $objResponse;
}
require INCLUDES_PATH.'/CServerRcon.php';
//get the server data
$data = $GLOBALS['db']->GetRow("SELECT ip, port, rcon FROM ".DB_PREFIX."_servers WHERE sid = ?;", array($sid));
if(empty($data['rcon'])) {
$objResponse->addScript("$('dialog-control').setStyle('display', 'block');");
$objResponse->addScript("ShowBox('Error', 'No RCON password for server ".$data['ip'].":".$data['port']."!', 'red', '', true);");
return $objResponse;
}
$r = new CServerRcon($data['ip'], $data['port'], $data['rcon']);
if(!$r->Auth())
{
$GLOBALS['db']->Execute("UPDATE ".DB_PREFIX."_servers SET rcon = '' WHERE sid = ?;", array($sid));
$objResponse->addScript("$('dialog-control').setStyle('display', 'block');");
$objResponse->addScript("ShowBox('Error', 'Wrong RCON password for server ".$data['ip'].":".$data['port']."!', 'red', '', true);");
return $objResponse;
}
$ret = $r->rconCommand("status");
$search = preg_match_all(STATUS_PARSE,$ret,$matches,PREG_PATTERN_ORDER);
$i = 0;
$found = false;
$index = -1;
foreach($matches[2] AS $match) {
if($match == $name) {
$found = true;
$index = $i;
break;
}
$i++;
}
if($found) {
$steam = $matches[3][$index];
$name = $matches[2][$index];
$objResponse->addScript("$('nickname').value = '" . addslashes($name) . "'");
$objResponse->addScript("$('steam').value = '" . $steam . "'");
} else {
$objResponse->addScript("ShowBox('Error', 'Can\'t get player info for ".addslashes(htmlspecialchars($name)).". Player is not on the server (".$data['ip'].":".$data['port'].") anymore!', 'red', '', true);");
$objResponse->addScript("$('dialog-control').setStyle('display', 'block');");
return $objResponse;
}
$objResponse->addScript("SwapPane(0);");
$objResponse->addScript("$('dialog-control').setStyle('display', 'block');");
$objResponse->addScript("$('dialog-placement').setStyle('display', 'none');");
return $objResponse;
}
******************************************************************
At line 2477-2478 -- if($ctype=="B")
$redir = "?p=banlist".$pagelink; --
Add AFTER
elseif($ctype=="C")
$redir = "?p=commslist".$pagelink;
******************************************************************
At line 2448-2449 -- elseif($ctype=="P")
$redir = "?p=admin&c=bans#^1"; --
Add AFTER
elseif($ctype=="C")
$redir = "?p=commslist".$pagelink;
******************************************************************
At line 2410-2411 -- elseif($ctype=="P")
$redir = "?p=admin&c=bans#^1"; --
ADD AFTER
elseif($ctype=="C")
$redir = "?p=commslist".$pagelink;
******************************************************************
At line 1348 -- {name: "Kick", callback: function(){KickPlayerConfirm('.$sid.', "'.str_replace('"', '\"', $player["name"]).'", 0);}}, --
Add AFTER
{name: "Block comms", callback: function(){window.location = "index.php?p=admin&c=comms&action=pasteBan&sid='.$sid.'&pName='.str_replace('"', '\"', $player["name"]).'"}},
******************************************************************
At line 66 -- $xajax->registerFunction("SendMail"); --
Add AFTER
$xajax->registerFunction("AddBlock");
$xajax->registerFunction("PrepareReblock");
$xajax->registerFunction("PrepareBlockFromBan");
$xajax->registerFunction("PasteBlock");
------------------------------------------------------------------------------------------------------------------------------------
\includes\system-functions.php
At line 765 -- function GetSVNRev() --
Add BEFORE
function PruneComms()
{
global $userbank;
$res = $GLOBALS['db']->Execute('UPDATE `'.DB_PREFIX.'_comms` SET `RemovedBy` = 0, `RemoveType` = \'E\', `RemovedOn` = UNIX_TIMESTAMP() WHERE `length` != 0 and `ends` < UNIX_TIMESTAMP() and `RemoveType` IS NULL');
return $res?true:false;
}
******************************************************************
At line 218 -- case "groups": --
Add BEFORE
case "comms":
$cat = "Communication blocks management";
break;
******************************************************************
At line 187 -- $submenu->addMenuItem("Bans", 0,"", "index.php?p=admin&c=bans", true); --
Add AFTER
if($userbank->HasAccess( ADMIN_OWNER|ADMIN_ADD_BAN|ADMIN_EDIT_OWN_BANS|ADMIN_EDIT_ALL_BANS))
$submenu->addMenuItem("Comms", 0,"", "index.php?p=admin&c=comms", true);
******************************************************************
At line 169 -- AddTab("Ban List", "index.php?p=banlist", "All of the bans in the database can be viewed from here."); --
Add AFTER
AddTab("Comm List", "index.php?p=commslist", "All of the communication bans (such as chat gags and voice mutes) in the database can be viewed from here.");
******************************************************************
At line 135-137 -- $tab_arr[2] = "Servers";
$tab_arr[3] = "Submit a ban";
$tab_arr[4] = "Protest a ban"; --
REPLACE
$tab_arr[2] = "Comm List";
$tab_arr[3] = "Servers";
$tab_arr[4] = "Submit a ban";
$tab_arr[5] = "Protest a ban";
------------------------------------------------------------------------------------------------------------------------------------
\pages\page.banlist.php
At line 470 -- $data['details_link'] = CreateLinkR('click','getdemo.php?type=B&id='.$res->fields['ban_id']); --
ADD BEFORE
$data['blockcomm_link'] = CreateLinkR(' Block Comms',"index.php?p=admin&c=comms".$pagelink."&blockfromban=".$res->fields['ban_id']."&key=".$_SESSION['banlist_postkey']."#^0");
******************************************************************
At line 345 -- $where = "WHERE CO.commenttxt LIKE ?"; --
REPLACE
$where = "WHERE CO.type = 'B' AND CO.commenttxt LIKE ?";
------------------------------------------------------------------------------------------------------------------------------------
\scripts\sourcebans.js
At line 1473 (end of file) -- } --
Add AFTER
function RemoveBlock(id, key, page, name, confirm)
{
if(confirm==0) {
ShowBox('Delete Block', 'Are you sure you want to delete the block for '+ name + '?', 'blue', '', true);
$('dialog-control').setHTML(' ');
} else if(confirm==1) {
if(page != "")
var pagelink = page;
else
var pagelink = "";
window.location = "index.php?p=commslist" + pagelink + "&a=delete&id="+ id +"&key="+ key;
}
}
function UnGag(id, key, page, name, popup)
{
if(popup==1) {
ShowBox('UnGag Reason', 'Please give a short comment, why you are going to ungag '+"\'"+ name +"\'"+'!