PHP Code:
<?php
function format_comment( $message, $htmlspecialchars_uni = TRUE, $noshoutbox = TRUE, $xss_clean = TRUE, $show_smilies = TRUE, $imagerel = "posts" )
{
$options = array(
"use_smilies" => $show_smilies,
"max_smilies" => 30,
"remove_badwords" => 1,
"htmlspecialchars" => $htmlspecialchars_uni,
"imagerel" => $imagerel,
"auto_url" => 1,
"short_url" => 1,
"image_preview" => 1
);
require_once( INC_PATH."/class_ts_parser.php" );
$TSParser = new TSParser( );
$TSParser->parse_message( $message, $options );
return $TSParser->message;
}
function fixAjaxText( $text = "" )
{
return trim( $text );
}
function showPreview( $postvalue = "" )
{
global $lang;
global $dateformat;
global $timeformat;
$message = TS_Global( $postvalue );
if ( $message && isset( $_POST['previewpost'] ) )
{
return "\r\n\t\t<table width=\"100%\" align=\"center\" cellpadding=\"5\" cellspacing=\"0\" border=\"0\">\r\n\t\t\t<tr>\r\n\t\t\t\t<td class=\"thead\">\r\n\t\t\t\t\t<span style=\"float: right;\">\r\n\t\t\t\t\t\t".my_datee( $dateformat." - ".$timeformat, TIMENOW )."\r\n\t\t\t\t\t</span>\r\n\t\t\t\t\t".$lang->global['buttonpreview']."\r\n\t\t\t\t</td>\r\n\t\t\t</tr>\r\n\t\t\t<tr>\t\t\t\t\r\n\t\t\t\t<td>".format_comment( $message )."</td>\r\n\t\t\t</tr>\r\n\t\t</table>\r\n\t\t<br />";
}
}
function update_loadavg( )
{
global $TSSECache;
if ( function_exists( "exec" ) && ( $stats = @exec( "uptime 2>&1" ) ) && trim( $stats ) != "" && $Var_312 )
{
$loadavg = $regs[2];
}
else if ( file_exists( "/proc/loadavg" ) && ( $filestuff = @file_get_contents( "/proc/loadavg" ) ) )
{
$loadavg = explode( " ", $filestuff );
$loadavg = $loadavg[1];
}
else
{
$loadavg = 0;
}
$loadavg = str_replace( ",", "", $loadavg );
$TSSECache->UpdateCache( "loadavg", $loadavg );
unset( $loadavg );
}
function TS_Match( $string, $find )
{
return strpos( $string, $find ) === FALSE ? FALSE : TRUE;
}
function TS_Global( $name = "" )
{
return isset( $_GET["{$name}"] ) ? !is_array( $_GET["{$name}"] ) ? trim( $_GET["{$name}"] ) : $_GET["{$name}"] : isset( $_POST["{$name}"] ) ? !is_array( $_POST["{$name}"] ) ? trim( $_POST["{$name}"] ) : $_POST["{$name}"] : "";
}
function fix_url( $url )
{
$url = htmlspecialchars( $url );
return str_replace( array( "&", " " ), array( "&", " " ), $url );
}
function htmlspecialchars_uni( $text, $entities = TRUE )
{
return str_replace( array( "<", ">", "\"" ), array( "<", ">", """ ), preg_replace( "/&(?!".( $entities ? "#[0-9]+|shy" : "(#[0-9]+|[a-z]+)" ).";)/si", "&", $text ) );
}
function ts_remove_badwords( $check )
{
global $badwords;
if ( empty( $badwords ) )
{
return $check;
}
if ( ( $barray = @explode( ",", $badwords ) ) && count( $barray ) )
{
foreach ( $barray as $b )
{
$check = @str_ireplace( $b, $b[0].@str_repeat( "*", strlen( $b ) - 2 ).$b[strlen( $b ) - 1], $check );
}
unset( $barray );
}
return $check;
}
function check_email( $email )
{
return preg_match( "#^[a-z0-9.!\\#\$%&'*+-/=?^_`{|}~]+@([0-9.]+|([^\\s'\"<>@,;]+\\.+[a-z]{2,6}))\$#si", $email );
}
function highlight( $search, $subject, $hlstart = "<b><font color='#f7071d'>", $hlend = "</font></b>" )
{
$srchlen = strlen( $search );
if ( $srchlen == 0 )
{
return $subject;
}
$find = $subject;
while ( $find = stristr( $find, $search ) )
{
$srchtxt = substr( $find, 0, $srchlen );
$find = substr( $find, $srchlen );
$subject = str_replace( $srchtxt, "{$hlstart}{$srchtxt}{$hlend}", $subject );
}
return $subject;
}
function TS_MTStoUTS( $datetime = "" )
{
if ( empty( $datetime ) )
{
return "";
}
$Parts = explode( " ", $datetime );
$Datebits = explode( "-", $Parts['0'] );
if ( isset( $Parts['1'] ) )
{
$Timebits = explode( ":", $Parts['1'] );
return mktime( $Timebits['0'], $Timebits['1'], $Timebits['2'], $Datebits['1'], $Datebits['2'], $Datebits['0'] );
}
return mktime( 0, 0, 0, $Datebits['1'], $Datebits['2'], $Datebits['0'] );
}
function build_breadcrumb( )
{
global $nav;
global $navbits;
global $BASEURL;
global $pic_base_url;
$navsep = " / ";
if ( isset( $navbits ) && is_array( $navbits ) )
{
@reset( $navbits );
foreach ( $navbits as $key => $navbit )
{
if ( isset( $navbits[$key + 1] ) )
{
$nav .= "<a href=\"".$navbit['url']."\">".$navbit['name']."</a>".( isset( $navbits[$key + 2] ) ? $navsep : "" );
}
}
}
$navsize = isset( $navbits ) && is_array( $navbits ) ? count( $navbits ) : 0;
$navbit = $navbits[$navsize - 1];
$activesep = $nav ? " / " : "";
echo "\r\n\t<div class=\"navbits\">\r\n\t\t<div id=\"shadetabs\">\r\n\t\t\t<img src=\"".$pic_base_url."tree_ltr.gif\" border=\"0\" class=\"inlineimg\" alt=\"\" /> ".$nav.$activesep.$navbit['name']."\r\n\t\t</div>\r\n\t</div>\r\n\t";
}
function add_breadcrumb( $name, $url = "" )
{
global $navbits;
$navsize = isset( $navbits ) && is_array( $navbits ) ? count( $navbits ) : 0;
$navbits[$navsize]['name'] = $name;
$navbits[$navsize]['url'] = $url;
}
function show_notice( $notice = "", $iserror = FALSE, $title = "", $BR = "<br />" )
{
global $BASEURL;
global $lang;
$defaulttemplate = ts_template( );
$imagepath = $BASEURL."/include/templates/".$defaulttemplate."/images/";
$lastword = $iserror ? "e" : "n";
$uniqeid = md5( TIMENOW );
return "\r\n\t<script type=\"text/javascript\">\r\n\t\tfunction ts_show_tag(id, status)\r\n\t\t{\r\n\t\t\tif (TSGetID(id)){if (status == true || status == false){TSGetID(id).style.display = (status == true)?\"none\":\"\";}\r\n\t\t\telse{TSGetID(id).style.display = (TSGetID(id).style.display == \"\")?\"none\":\"\";}}\r\n\t\t}\r\n\t</script>\r\n\t<div class=\"notification-border-".$lastword."\" id=\"notification_".$uniqeid."\" align=\"center\">\r\n\t\t<table class=\"notification-th-".$lastword."\" border=\"0\" cellpadding=\"2\" cellspacing=\"0\">\r\n\t\t\t<tbody>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td align=\"left\" width=\"100%\" class=\"none\">\r\n\t\t\t\t\t <span class=\"notification-title-".$lastword."\">".( $title ? $title : $lang->global['sys_message'] )."</span>\r\n\t\t\t\t\t</td>\r\n\t\t\t\t\t<td class=\"none\"><img src=\"".$imagepath."notification_close.gif\" alt=\"\" onclick=\"ts_show_tag('notification_".$uniqeid."', true);\" class=\"hand\" border=\"0\" height=\"13\" width=\"13\" /></td>\r\n\t\t\t\t</tr>\r\n\t\t\t</tbody>\r\n\t\t</table>\r\n\t\t<div class=\"notification-body\">\r\n\t\t\t".$notice."\r\n\t\t</div>\r\n\t</div>\r\n\t".$BR;
}
function sql_query( $_run_query )
{
global $usergroups;
global $TSDatabase;
if ( !defined( "DEBUGMODE" ) )
{
$query_start = array_sum( explode( " ", microtime( ) ) );
}
if ( !( $__return = mysql_query( $_run_query ) ) )
{
}
if ( !defined( "DEBUGMODE" ) )
{
$query_end = array_sum( $Var_960 - $query_start, 4 );
if ( !isset( $GLOBALS['queries'] ) )
{
$GLOBALS['GLOBALS']['queries'] = "";
}
if ( isset( $GLOBALS['totalqueries'] ) )
{
++$GLOBALS['totalqueries'];
}
else
{
$GLOBALS['GLOBALS']['totalqueries'] = 1;
}
$GLOBALS .= "queries";
}
return $__return;
}
function TSRowCount( $C, $T, $E = "" )
{
if ( !( $Q = sql_query( "SELECT COUNT({$C}) FROM ".$T.( $E ? " WHERE {$E}" : "" ) ) ) )
{
}
$R = mysql_fetch_row( $Q );
return $R[0];
}
function write_log( $Text )
{
sql_query( "INSERT INTO sitelog VALUES (NULL, NOW(), ".sqlesc( $Text ).")" );
}
function KPS( $Type = "+", $Points = "1.0", $ID = "" )
{
if ( $ID == 0 )
{
}
else
{
global $bonus;
global $TSSEConfig;
if ( !isset( $bonus ) )
{
$TSSEConfig->TSLoadConfig( "KPS" );
$bonus = $GLOBALS['bonus'];
}
if ( $bonus == "enable" || $bonus == "disablesave" )
{
$ID = str_replace( "'", "", $ID );
sql_query( "UPDATE users SET seedbonus = seedbonus {$Type} '{$Points}' WHERE id = '{$ID}'" );
}
}
}
function sent_mail( $to = "", $subject = "", $body = "", $type = "confirmation", $showmsg = TRUE, $multiple = FALSE, $multiplemail = "" )
{
global $rootpath;
global $SITEEMAIL;
global $charset;
global $lang;
global $TSSEConfig;
global $BASEURL;
$TSSEConfig->TSLoadConfig( "SMTP" );
$fromname = $SITENAME;
$fromemail = $SITEEMAIL;
$windows = FALSE;
if ( strtoupper( substr( PHP_OS, 0, 3 ) == "WIN" ) )
{
$eol = "\r\n";
$windows = TRUE;
}
else if ( strtoupper( substr( PHP_OS, 0, 3 ) == "MAC" ) )
{
$eol = "\r";
}
else
{
$eol = "\n";
}
$options = array( "use_smilies" => 0, "max_smilies" => 30, "remove_badwords" => 0, "htmlspecialchars" => 1, "imagerel" => "", "auto_url" => 1, "short_url" => 0, "image_preview" => 0 );
if ( !defined( "ANONYMIZER_DISABLED" ) )
{
define( "ANONYMIZER_DISABLED", TRUE );
}
require_once( INC_PATH."/class_ts_parser.php" );
$TSParser = new TSParser( );
$TSParser->parse_message( $body, $options );
$body = $TSParser->message;
$mid = md5( uniqid( rand( ), TRUE ).TIMENOW );
$name = $_SERVER['SERVER_NAME'];
$headers = "From: {$fromname} <{$fromemail}>".$eol;
$headers .= "Reply-To: ".( !defined( "REPLY_TO" ) ? "{$fromname} <{$fromemail}>" : REPLY_TO ).$eol;
$headers .= "Return-Path: ".( !defined( "REPLY_TO" ) ? "{$fromname} <{$fromemail}>" : REPLY_TO ).$eol;
$headers .= "Message-ID: <{$mid} thesystem@{$name}>".$eol;
$headers .= "X-Mailer: PHP v".phpversion( ).$eol;
$headers .= "MIME-Version: 1.0".$eol;
$headers .= "Content-Transfer-Encoding: 8bit".$eol;
$headers .= "Content-type: text/html; charset={$charset}".$eol;
$headers .= "X-Sender: PHP".$eol;
if ( $multiple )
{
$headers .= "Bcc: {$multiplemail}.{$eol}";
}
if ( $GLOBALS['smtptype'] == "default" )
{
$mail = mail( $to, $subject, $body, $headers );
if ( !$mail && $showmsg )
{
stderr( $lang->global['error'], $lang->global['mailerror'] );
}
}
else if ( $GLOBALS['smtptype'] == "advanced" )
{
if ( isset( $GLOBALS['smtp'] ) && $GLOBALS['smtp'] == "yes" )
{
ini_set( "SMTP", $GLOBALS['smtp_host'] );
ini_set( "smtp_port", $GLOBALS['smtp_port'] );
if ( $windows )
{
ini_set( "sendmail_from", $GLOBALS['smtp_from'] );
}
}
$mail = mail( $to, $subject, $body, $headers );
if ( !$mail && $showmsg )
{
stderr( $lang->global['error'], $lang->global['mailerror'] );
}
if ( isset( $GLOBALS['smtp'] ) && $GLOBALS['smtp'] == "yes" )
{
ini_restore( SMTP );
ini_restore( smtp_port );
if ( $windows )
{
ini_restore( "sendmail_from" );
}
}
}
else if ( $GLOBALS['smtptype'] == "external" )
{
$SMTP = array( );
$SMTP['secure_connection'] = $GLOBALS['secure_connection'];
$SMTP['smtpaddress'] = $GLOBALS['smtpaddress'];
$SMTP['smtpport'] = $GLOBALS['smtpport'];
$SMTP['accountname'] = $GLOBALS['accountname'];
$SMTP['accountpassword'] = $GLOBALS['accountpassword'];
require_once( INC_PATH."/class_ts_smtp.php" );
$TSMAIL = new TS_SMTP( $SMTP );
$TSMAIL->start( $to, trim( $subject ), trim( $body ), $fromemail, "", $charset, $fromemail, $BASEURL );
$Status = $TSMAIL->send( );
}
if ( $showmsg )
{
if ( $type == "confirmation" )
{
stderr( $lang->global['success'], sprintf( $lang->global['mailsent'], htmlspecialchars_uni( $to ) ), FALSE );
}
else if ( $type == "details" )
{
stderr( $lang->global['success'], sprintf( $lang->global['mailsent2'], htmlspecialchars_uni( $to ) ), FALSE );
}
}
else
{
return TRUE;
}
}
function TSBoot( $IPADDRESS = "" )
{
global $BASEURL;
global $rootpath;
global $SITENAME;
global $iplog1;
global $lang;
global $cachetime;
global $cache;
global $where;
global $UseMemcached;
global $querystring;
global $page;
global $securehash;
if ( empty( $_COOKIE['c_secure_pass'] ) || empty( $_COOKIE['c_secure_uid'] ) || strlen( $_COOKIE['c_secure_pass'] ) != 32 )
{
}
else if ( !( $id = intval( $_COOKIE['c_secure_uid'] ) ) )
{
if ( !( $res = sql_query( "SELECT HIGH_PRIORITY * FROM users WHERE id = ".sqlesc( $id ) ) ) )
{
}
}
else if ( !mysql_num_rows( $res ) )
{
}
else
{
$row = mysql_fetch_assoc( $res );
if ( $_COOKIE['c_secure_pass'] != securehash( $row['passhash'] ) )
{
}
else
{
if ( $iplog1 == "yes" && $IPADDRESS != $row['ip'] && !empty( $IPADDRESS ) )
{
if ( !sql_query( "REPLACE INTO iplog VALUES (".sqlesc( $IPADDRESS ).", '".$id."')" ) )
{
}
}
if ( $IPADDRESS != $row['ip'] )
{
$updateuser[] = "ip = ".sqlesc( $IPADDRESS );
}
if ( strlen( $row['torrent_pass'] ) != 32 )
{
$torrent_pass = md5( $row['username'].$Tmp_95.$row['passhash'] );
$updateuser[] = "torrent_pass = '{$torrent_pass}'";
}
if ( $where == "yes" && $page != $row['page'] && !defined( "SKIP_LOCATION_SAVE" ) && !ts_match( "ts_error", $page ) )
{
$updateuser[] = "page = ".sqlesc( $page.$querystring );
}
if ( 900 < TIMENOW - @ts_mtstouts( $row['last_login'] ) )
{
$updateuser[] = "last_login = '{$row['last_access']}'";
}
$updateuser[] = "last_access = NOW()";
if ( defined( "IN_FORUMS" ) )
{
if ( 900 < TIMENOW - $row['last_forum_active'] )
{
$updateuser[] = "last_forum_visit='".$row['last_forum_active']."'";
}
$updateuser[] = "last_forum_active='".TIMENOW."'";
}
$row['securitytoken_raw'] = sha1( $row['id'].sha1( $row['secret'] ).sha1( $securehash ) );
$row['securitytoken'] = TIMENOW."-".sha1( );
if ( 0 < count( $updateuser ) )
{
if ( !sql_query( "UPDATE LOW_PRIORITY users SET ".implode( ",", $updateuser )." WHERE id = '".$id."'" ) )
{
}
}
$GLOBALS['GLOBALS']['CURUSER'] = $row;
if ( $UseMemcached )
{
global $TSMemcache;
if ( $row2 = $TSMemcache->check( "usergroup_".$row['usergroup'] ) )
{
}
else
{
if ( !( $Query = sql_query( "SELECT HIGH_PRIORITY * FROM usergroups WHERE gid = '".$row['usergroup']."'" ) ) )
{
}
$TSMemcache->add( "usergroup_".$row['usergroup'], $row2 );
}
}
else
{
if ( !( $Query = sql_query( "SELECT HIGH_PRIORITY * FROM usergroups WHERE gid = '".$row['usergroup']."'" ) ) )
{
}
$row2 = mysql_fetch_assoc( $Query );
}
$GLOBALS['GLOBALS']['usergroups'] = $row2;
if ( $row2['isbanned'] != "no" || $row['enabled'] != "yes" || $row['status'] != "confirmed" )
{
print_no_permission( FALSE, TRUE, $row['notifs'] );
exit( );
}
unset( $row );
unset( $row2 );
$GLOBALS['GLOBALS']['ts_cron_image'] = !defined( "SKIP_CRON_JOBS" ) ? TRUE : FALSE;
}
}
}
function TSDetectUserIP( )
{
$ip = FALSE;
if ( !empty( $_SERVER['HTTP_CLIENT_IP'] ) )
{
$ip = $_SERVER['HTTP_CLIENT_IP'];
}
if ( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) )
{
$ips = explode( ", ", $_SERVER['HTTP_X_FORWARDED_FOR'] );
if ( $ip )
{
array_unshift( $ips, $ip );
$ip = FALSE;
}
$i = 0;
while ( $i < count( $ips ) )
{
if ( !preg_match( "/^(?:10|172\\.(?:1[6-9]|2\\d|3[01])|192\\.168)\\./", $ips[$i] ) )
{
if ( version_compare( phpversion( ), "5.0.0", ">=" ) )
{
if ( ip2long( $ips[$i] ) != FALSE )
{
$ip = $ips[$i];
break;
}
}
if ( ip2long( $ips[$i] ) != 0 - 1 )
{
$ip = $ips[$i];
break;
}
}
++$i;
}
}
return htmlspecialchars_uni( $ip ? $ip : $_SERVER['REMOTE_ADDR'] );
}
function mksize( $bytes = 0 )
{
if ( $bytes < 1000 * 1024 )
{
return number_format( $bytes / 1024, 2 )." KB";
}
if ( $bytes < 1000 * 1048576 )
{
return number_format( $bytes / 1048576, 2 )." MB";
}
if ( $bytes < 1000 * 1073741824 )
{
return number_format( $bytes / 1073741824, 2 )." GB";
}
return number_format( $bytes / 1.09951e+012, 2 )." TB";
}
function sqlesc( $value )
{
if ( function_exists( "get_magic_quotes_gpc" ) && get_magic_quotes_gpc( ) )
{
$value = stripslashes( $value );
}
return "'".mysql_real_escape_string( $value )."'";
}
function ts_template( )
{
global $CURUSER;
global $TSSECache;
global $trackerdefaulttemplate;
if ( isset( $CURUSER['stylesheet'] ) && !empty( $CURUSER['stylesheet'] ) && isset( $TSSECache->Cache['ts_themes']['content'] ) && !empty( $TSSECache->Cache['ts_themes']['content'] ) && in_array( $CURUSER['stylesheet'], explode( ",", $TSSECache->Cache['ts_themes']['content'] ), TRUE ) )
{
$GLOBALS['GLOBALS']['defaulttemplate'] = $CURUSER['stylesheet'];
return $CURUSER['stylesheet'];
}
return $trackerdefaulttemplate;
}
function mksecret( $length = 20, $UseNumbers = TRUE )
{
if ( $UseNumbers )
{
$set = array( "a", "A", "b", "B", "c", "C", "d", "D", "e", "E", "f", "F", "g", "G", "h", "H", "i", "I", "j", "J", "k", "K", "l", "L", "m", "M", "n", "N", "o", "O", "p", "P", "q", "Q", "r", "R", "s", "S", "t", "T", "u", "U", "v", "V", "w", "W", "x", "X", "y", "Y", "z", "Z", "1", "2", "3", "4", "5", "6", "7", "8", "9" );
}
else
{
$set = array( "a", "A", "b", "B", "c", "C", "d", "D", "e", "E", "f", "F", "g", "G", "h", "H", "i", "I", "j", "J", "k", "K", "l", "L", "m", "M", "n", "N", "o", "O", "p", "P", "q", "Q", "r", "R", "s", "S", "t", "T", "u", "U", "v", "V", "w", "W", "x", "X", "y", "Y", "z", "Z" );
}
$str = "";
$i = 1;
while ( $i <= $length )
{
$ch = rand( 0, count( $set ) - 1 );
$str .= $set[$Var_624];
++$i;
}
return $str;
}
function securehash( $var = "" )
{
global $securehash;
return md5( $var.USERIPADDRESS.$securehash );
}
function warn_donor( $s, $warnday = 3 )
{
if ( $s < 0 )
{
$s = 0;
}
$t = array( );
foreach ( array( "60:sec", "60:min", "24:hour", "0:day" ) as $x )
{
$y = explode( ":", $x );
if ( 1 < $y[0] )
{
$v = $s % $y[0];
$s = floor( $s / $y[0] );
}
else
{
$v = $s;
}
$t[$y[1]] = $v;
}
return $t['day'] < $warnday ? TRUE : FALSE;
}
function cutename( $name, $max = 35, $html = TRUE )
{
return $html ? htmlspecialchars_uni( $max < strlen( $name ) ? substr( $name, 0, $max )."..." : $name ) : $max < strlen( $name ) ? substr( $name, 0, $max )."..." : $name;
}
function get_extension( $file = "" )
{
return strtolower( substr( strrchr( $file, "." ), 1 ) );
}
function ts_nf( $number = 0 )
{
return number_format( $number, 0, ".", "," );
}
function ts_collapse( $id, $type = 1 )
{
global $BASEURL;
global $tscollapse;
$defaulttemplate = ts_template( );
if ( $type === 1 )
{
return "<a style=\"float: right;\" href=\"javascript: void(0);\" onclick=\"return toggle_collapse('".$id."')\"><img id=\"collapseimg_".$id."\" src=\"".$BASEURL."/include/templates/".$defaulttemplate."/images/collapse_tcat".( isset( $tscollapse[$Tmp_26] ) ? $tscollapse["collapseimg_".$id.""] : "" ).".png\" alt=\"\" border=\"0\" /></a>";
}
if ( $type === 2 )
{
return "<tbody id=\"collapseobj_".$id."\" style=\"".( isset( $tscollapse["collapseobj_".$id] ) ? $tscollapse["collapseobj_".$id] : "none" )."\">";
}
}
function is_mod( $user = array( ) )
{
return isset( $user['cansettingspanel'] ) && $user['cansettingspanel'] === "yes" || isset( $user['issupermod'] ) && $user['issupermod'] === "yes" || isset( $user['canstaffpanel'] ) && $user['canstaffpanel'] === "yes" ? TRUE : FALSE;
}
function pager( $perpage, $results, $address = "" )
{
global $lang;
global $BASEURL;
if ( $results < $perpage )
{
return array( "", "", "" );
}
if ( $results )
{
$totalpages = @ceil( $results / $perpage );
}
else
{
$totalpages = 0;
}
if ( isset( $_GET['showlast'] ) && $_GET['showlast'] == "true" )
{
$pagenumber = $totalpages;
}
else
{
$pagenumber = isset( $_GET['page'] ) ? intval( $_GET['page'] ) : isset( $_POST['page'] ) ? intval( $_POST['page'] ) : "";
}
sanitize_pageresults( $results, $pagenumber, $perpage, 200 );
$limitlower = ( $pagenumber - 1 ) * $perpage;
$limitupper = $pagenumber * $perpage;
if ( $results < $limitupper )
{
$limitupper = $results;
if ( $results < $limitlower )
{
$limitlower = $results - $perpage - 1;
}
}
if ( $limitlower < 0 )
{
$limitlower = 0;
}
$pagenav = $firstlink = $prevlink = $lastlink = $nextlink = "";
$curpage = 0;
if ( $results <= $perpage )
{
$show['pagenav'] = FALSE;
return array(
"",
"",
"LIMIT {$limitlower}, {$perpage}"
);
}
$show['pagenav'] = TRUE;
$total = ts_nf( $results );
$show['prev'] = $show['next'] = $show['first'] = $show['last'] = FALSE;
if ( 1 < $pagenumber )
{
$prevnumbers = fetch_start_end_total_array( $prevpage, $perpage, $results );
$show['prev'] = TRUE;
}
if ( $pagenumber < $totalpages )
{
$nextpage = $pagenumber + 1;
$nextnumbers = fetch_start_end_total_array( $nextpage, $perpage, $results );
$show['next'] = TRUE;
}
$pagenavpages = "3";
if ( !isset( $pagenavsarr ) || !is_array( $pagenavsarr ) )
{
$pagenavs = "10 50 100 500 1000";
$pagenavsarr[] = preg_split( "#\\s+#s", $pagenavs, 0 - 1, PREG_SPLIT_NO_EMPTY );
}
while ( $curpage++ < $totalpages )
{
if ( $pagenavpages <= abs( $curpage - $pagenumber ) && $pagenavpages != 0 )
{
if ( $curpage == 1 )
{
$firstnumbers = fetch_start_end_total_array( 1, $perpage, $results );
$show['first'] = TRUE;
}
if ( $curpage == $totalpages )
{
$lastnumbers = fetch_start_end_total_array( $totalpages, $perpage, $results );
$show['last'] = TRUE;
}
if ( in_array( abs( $curpage - $pagenumber ), $pagenavsarr ) && $curpage != 1 && $curpage != $totalpages )
{
$pagenumbers = fetch_start_end_total_array( $curpage, $perpage, $results );
$relpage = $curpage - $pagenumber;
if ( 0 < $relpage )
{
$relpage = "+".$relpage;
}
$pagenav .= "<li><a class=\"smalltext\" href=\"{$address}".( $curpage != 1 ? "page=".$curpage."&scrollto=tspager" : "scrollto=tspager" )."\" title=\"".sprintf( $lang->global['show_results'], $pagenumbers['first'], $pagenumbers['last'], $total )."\"><!--{$relpage}-->{$curpage}</a></li>";
}
}
else if ( $curpage == $pagenumber )
{
$numbers = fetch_start_end_total_array( $curpage, $perpage, $results );
$pagenav .= "<li><a name=\"current\" class=\"current\" title=\"".sprintf( $lang->global['showing_results'], $numbers['first'], $numbers['last'], $total )."\">{$curpage}</a></li>";
}
else
{
$pagenumbers = fetch_start_end_total_array( $curpage, $perpage, $results );
$pagenav .= "<li><a href=\"{$address}".( $curpage != 1 ? "page=".$curpage."&scrollto=tspager" : "scrollto=tspager" )."\" title=\"".sprintf( $lang->global['show_results'], $pagenumbers['first'], $pagenumbers['last'], $total )."\">{$curpage}</a></li>";
}
}
$prp = isset( $prevpage ) && $prevpage != 1 ? "page=".$prevpage."scrollto=tspager" : "scrollto=tspager";
$pagenav = "\r\n\t<a id=\"tspager\" name=\"tspager\"></a>\r\n\t<table width=\"100%\" border=\"0\" class=\"none\" style=\"clear: both;\">\r\n\t\t<tr>\r\n\t\t\t<td class=\"none\" width=\"100%\" style=\"padding: 0px 0px 1px 0px;\">\r\n\t\t\t\t<div style=\"float: left;\" id=\"navcontainer_f\">\r\n\t\t\t\t\t<ul>\r\n\t\t\t\t\t\t<li>{$pagenumber} - {$totalpages}</li>\r\n\t\t\t\t\t\t".( $show['first'] ? "<li><a class=\"smalltext\" href=\"".$address."scrollto=tspager\" title=\"".$lang->global['first_page']." - ".sprintf( $lang->global['show_results'], $firstnumbers['first'], $firstnumbers['last'], $total )."\">« ".$lang->global['first']."</a></li>" : "" ).( $show['prev'] ? "<li><a class=\"smalltext\" href=\"".$address.$prp."\" title=\"".$lang->global['prev_page']." - ".sprintf( $lang->global['show_results'], $prevnumbers['first'], $prevnumbers['last'], $total )."\"><</a></li>" : "" )."\r\n\t\t\t\t\t\t{$pagenav}\r\n\t\t\t\t\t\t".( $show['next'] ? "<li><a class=\"smalltext\" href=\"".$address."page=".$nextpage."&scrollto=tspager\" title=\"".$lang->global['next_page']." - ".sprintf( $lang->global['show_results'], $nextnumbers['first'], $nextnumbers['last'], $total )."\">></a></li>" : "" ).( $show['last'] ? "<li><a class=\"smalltext\" href=\"".$address."page=".$totalpages."&scrollto=tspager\" title=\"".$lang->global['last_page']." - ".sprintf( $lang->global['show_results'], $lastnumbers['first'], $lastnumbers['last'], $total )."\">".$lang->global['last']." <strong>»</strong></a></li>" : "" )."\r\n\t\t\t\t\t\t<li><a href=\"#\" id=\"quicknavpage\">".$lang->global['buttongo']."</a></li>\r\n\t\t\t\t\t</ul>\r\n\t\t\t\t</div>\r\n\t\t\t</td>\r\n\t\t</tr>\r\n\t</table>\r\n\t<script type=\"text/javascript\">\r\n\t\tmenu_register(\"quicknavpage\", true);\r\n\t</script>\r\n\t<div id=\"quicknavpage_menu\" class=\"menu_popup\" style=\"display:none;\">\r\n\t<form action=\"".$address."\" method=\"get\" onsubmit=\"return TSGoToPage('".$address."', '')\">\r\n\t\t<table border=\"0\" cellpadding=\"2\" cellspacing=\"1\">\r\n\t\t\t<tbody>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td class=\"thead\" nowrap=\"nowrap\">".$lang->global['gotopage']."</td>\r\n\t\t\t\t</tr>\r\n\t\t\t\t<tr>\r\n\t\t\t\t\t<td class=\"subheader\" title=\"\">\r\n\t\t\t\t\t\t<input id=\"Page_Number\" style=\"font-size: 11px;\" size=\"4\" type=\"text\">\r\n\t\t\t\t\t\t<input value=\"".$lang->global['buttongo']."\" type=\"button\" onclick=\"TSGoToPage('".$address."', '')\">\r\n\t\t\t\t\t</td>\r\n\t\t\t\t</tr>\r\n\t\t\t</tbody>\r\n\t\t</table>\r\n\t</form>\r\n\t</div>\r\n\t<script type=\"text/javascript\">\r\n\t\tmenu.activate(true);\r\n\t</script>\r\n\t";
$pagenav2 = str_replace( array( "quicknavpage", "Page_Number" ), array( "quicknavpage2", "Page_Number2" ), $pagenav );
return array(
$pagenav,
$pagenav2,
"LIMIT {$limitlower}, {$perpage}"
);
}
function sanitize_pageresults( $numresults, &$page, &$perpage, $maxperpage = 20, $defaultperpage = 20 )
{
$perpage = intval( $perpage );
if ( $perpage < 1 )
{
$perpage = $defaultperpage;
}
else if ( $maxperpage < $perpage )
{
$perpage = $maxperpage;
}
$numpages = ceil( $numresults / $perpage );
if ( $numpages == 0 )
{
$numpages = 1;
}
if ( $page < 1 )
{
$page = 1;
}
else if ( $numpages < $page )
{
$page = $numpages;
}
}
function fetch_start_end_total_array( $pagenumber, $perpage, $total )
{
$first = $perpage * ( $pagenumber - 1 );
$last = $first + $perpage;
if ( $total < $last )
{
$last = $total;
}
++$first;
return array(
"first" => ts_nf( $first ),
"last" => ts_nf( $last )
);
}
function get_user_color( $username, $namestyle, $white = FALSE )
{
if ( $white )
{
$new_username = "<font color=\"#ffffff\">".$username."</font>";
}
else
{
$new_username = str_replace( "{username}", $username, $namestyle );
}
return $new_username;
}
function int_check( $value )
{
global $CURUSER;
global $BASEURL;
global $lang;
$msg = sprintf( $lang->global['invalididlogmsg'], htmlspecialchars_uni( $_SERVER['REQUEST_URI'] ), "<a href=\"".$BASEURL."/userdetails.php?id=".$CURUSER['id']."\">".$CURUSER['username']."</a>", USERIPADDRESS, get_date_time( ) );
if ( is_array( $value ) )
{
foreach ( $value as $val )
{
if ( !is_valid_id( $val ) )
{
write_log( $msg );
print_no_permission( );
}
}
}
else if ( !is_valid_id( $value ) )
{
write_log( $msg );
print_no_permission( );
}
}
function is_valid_id( $id )
{
return is_numeric( $id ) && 0 < $id && floor( $id ) == $id;
}
function flood_check( $type = "", $last = "", $shoutbox = FALSE )
{
global $lang;
global $usergroups;
if ( !$usergroups['floodlimit'] )
{
return "";
}
$timecut = TIMENOW - $usergroups['floodlimit'];
if ( strstr( $last, "-" ) )
{
$last = ts_mtstouts( $last );
}
if ( $timecut <= $last && $usergroups['floodlimit'] != 0 )
{
$remaining_time = $usergroups['floodlimit'] - ( TIMENOW - $last );
if ( $shoutbox == 0 )
{
stderr( $lang->global['error'], sprintf( $lang->global['flooderror'], $usergroups['floodlimit'], $type, $remaining_time ), FALSE );
}
else
{
return "<font color=\"#9f040b\" size=\"2\">".sprintf( $lang->global['flooderror'], $usergroups['floodlimit'], $type, $remaining_time )."</font>";
}
}
}
function print_no_permission( $log = FALSE, $stdhead = TRUE, $extra = "" )
{
global $lang;
global $SITENAME;
global $BASEURL;
global $CURUSER;
if ( $log )
{
$page = htmlspecialchars_uni( $_SERVER['SCRIPT_NAME'] );
$query = htmlspecialchars_uni( $_SERVER['QUERY_STRING'] );
$message = sprintf( $lang->global['permissionlogmessage'], $page, $query, "<a href=\"".$BASEURL."/userdetails.php?id=".$CURUSER['id']."\">".$CURUSER['username']."</a>", $CURUSER['ip'] );
write_log( $message );
}
if ( $stdhead )
{
stdhead( $lang->global['nopermission'] );
echo sprintf( $lang->global['print_no_permission'], $SITENAME, $extra != "" ? "<font color=\"#9f040b\">".$extra."</font>" : $lang->global['print_no_permission_i'] );
stdfoot( );
}
else
{
echo sprintf( $lang->global['print_no_permission'], $SITENAME, $extra != "" ? "<font color=\"#9f040b\">".$extra."</font>" : $lang->global['print_no_permission_i'] );
stdfoot( );
}
exit( );
}
function my_datee( $format, $stamp = "", $offset = "", $ty = 1 )
{
global $CURUSER;
global $lang;
global $dateformat;
global $timezoneoffset;
global $dstcorrection;
if ( empty( $stamp ) )
{
$stamp = TIMENOW;
}
else if ( strstr( $stamp, "-" ) )
{
$stamp = ts_mtstouts( $stamp );
}
if ( !$offset && $offset != "0" )
{
if ( $CURUSER && 0 < $CURUSER['id'] )
{
$offset = $CURUSER['tzoffset'];
$dstcorr = ts_match( $CURUSER['options'], "O1" ) ? "yes" : "no";
}
else
{
$offset = $timezoneoffset;
$dstcorr = $dstcorrection;
}
if ( $dstcorr == "yes" )
{
++$offset;
if ( substr( $offset, 0, 1 ) != "-" )
{
$offset = "+".$offset;
}
}
}
if ( $offset == "-" )
{
$offset = 0;
}
$date = gmdate( $format, $stamp + $offset * 3600 );
if ( $dateformat == $format && $ty )
{
$stamp = TIMENOW;
$todaysdate = gmdate( $format, $stamp + $offset * 3600 );
$yesterdaysdate = gmdate( $format, $stamp - 86400 + $offset * 3600 );
if ( $todaysdate == $date )
{
$date = $lang->global['today'];
}
else if ( $yesterdaysdate == $date )
{
$date = $lang->global['yesterday'];
}
}
return $date;
}
function get_date_time( $timestamp = 0 )
{
if ( $timestamp )
{
return date( "Y-m-d H:i:s", $timestamp );
}
return date( "Y-m-d H:i:s" );
}
function gmtime( )
{
return ts_mtstouts( get_date_time( ) );
}
function sqlerr( $file = "", $line = "" )
{
redirect( "ts_error.php?errorid=5" );
exit( );
}
if ( !defined( "IN_TRACKER" ) )
{
exit( "<font face='verdana' size='2' color='darkred'><b>Error!</b> Direct initialization of this file is not allowed.</font>" );
}
?>