.
*/
error_reporting(E_ALL);
header("Content-Type: text/html; charset=utf-8");
define("SECURECHECK", 1);
session_start();
$_SESSION['pubviewer']=true;
function create_tree($pid, $place, $alldata, $sid, $ip, $showicons, $sub)
{
global $lang;
global $ts3;
$gettree='';
if(!empty($alldata['channel']))
{
foreach($alldata['channel'] AS $key=>$value)
{
if ($pid==$value['pid'])
{
$chan_img='';
if(preg_match("^\[(.*)spacer([\w\p{L}\d]+)?\]^u", $value['channel_name'], $treffer) AND $value['pid']==0 AND $value['channel_flag_permanent']==1)
{
$getspacer=explode($treffer[0], $value['channel_name']);
$checkspacer=$getspacer[1][0].$getspacer[1][0].$getspacer[1][0];
if($treffer[1]=="*" or strlen($getspacer[1])==3 AND $checkspacer==$getspacer[1])
{
$spacer='';
for($i=0; $i<=50; $i++)
{
if(strlen($spacer)<50)
{
$spacer.=$getspacer[1];
}
else
{
break;
}
}
$gettree .= "
";
}
elseif($treffer[1]=="c")
{
$spacer=explode($treffer[0], $value['channel_name']);
$gettree .= "";
}
elseif($treffer[1]=="r")
{
$spacer=explode($treffer[0], $value['channel_name']);
$gettree .= "";
}
else
{
$spacer=explode($treffer[0], $value['channel_name']);
$gettree .= "";
}
}
else
{
$chanmaxclient=($value['channel_maxclients']=="-1" ? $alldata['server']['virtualserver_maxclients']:$value['channel_maxclients']);
if($value['channel_flag_password']==1)
{
$chan_img="
";
}
if($value['channel_flag_default']==1)
{
$chan_img.="
";
}
if($value['channel_codec']==3 OR $value['channel_codec']==5)
{
$chan_img.="
";
}
if($value['channel_needed_talk_power']>0)
{
$chan_img.="
";
}
if($value['channel_icon_id']!=0)
{
if($value['channel_icon_id']<0)
{
$value['channel_icon_id']=sprintf('%u', $value['channel_icon_id'] & 0xffffffff);
}
if($value['channel_icon_id']!=100 AND $value['channel_icon_id']!=200 AND $value['channel_icon_id']!=300 AND $value['channel_icon_id']!=500 AND $value['channel_icon_id']!=600)
{
if(file_exists('icons/'.$ip.'-'.$alldata['server']['virtualserver_port'].'/icon_'.$value['channel_icon_id']))
{
$chan_img.="
";
}
}
else
{
$chan_img.="
";
}
}
if($chanmaxclient<=$value['total_clients'] AND $value['channel_flag_password']==1)
{
$gettree .= "\n";
}
elseif($chanmaxclient<=$value['total_clients'])
{
$gettree .= "\n";
}
elseif($value['channel_flag_password']==1)
{
$gettree .= "\n";
}
else
{
$gettree .= "\n";
}
}
if($value['total_clients']>=1)
{
if(!empty($alldata['clients']))
{
foreach($alldata['clients'] AS $u_key=>$u_value)
{
if($value['cid'] == $u_value['cid'] AND $u_value['client_type']!="1")
{
$u_away_msg="";
if($u_value['client_away']=="1")
{
$u_status="away";
if(!empty($u_value['client_away_message']))
{
$u_away_msg="(".secure($u_value['client_away_message']).")
";
}
}
elseif($u_value['client_output_hardware']=="0")
{
$u_status="hwhead";
}
elseif($u_value['client_input_hardware']=="0")
{
$u_status="hwmic";
}
elseif($u_value['client_output_muted']=="1")
{
$u_status="head";
}
elseif($u_value['client_input_muted']=="1")
{
$u_status="mic";
}
elseif($u_value['client_flag_talking']=="0" AND $u_value['client_is_channel_commander']=="1")
{
$u_status="player_command";
}
elseif($u_value['client_flag_talking']=="1" AND $u_value['client_is_channel_commander']=="1")
{
$u_status="player_command_on";
}
elseif($u_value['client_flag_talking']=="1")
{
$u_status="player_on";
}
else
{
$u_status="player";
}
$g_img='';
if(!empty($alldata['cgroups']))
{
foreach($alldata['cgroups'] AS $key=>$cg_value)
{
if($cg_value['cgid']==$u_value['client_channel_group_id'])
{
$iconid=$cg_value['iconid'];
if($iconid<0)
{
$iconid=sprintf('%u', $iconid & 0xffffffff);
}
if($iconid!=0)
{
if($iconid!=100 AND $iconid!=200 AND $iconid!=300 AND $iconid!=500 AND $iconid!=600)
{
if(file_exists('icons/'.$ip.'-'.$alldata['server']['virtualserver_port'].'/icon_'.$iconid))
{
$g_img.="
";
}
}
else
{
$g_img.="
";
}
}
}
}
}
$getsgroups=explode(',', trim($u_value['client_servergroups']));
if(!empty($alldata['sgroups']))
{
foreach($alldata['sgroups'] AS $key=>$sg_value)
{
if(in_array($sg_value['sgid'], $getsgroups))
{
$iconid=$sg_value['iconid'];
if($iconid<0)
{
$iconid=sprintf('%u', $iconid & 0xffffffff);
}
if($iconid!=0)
{
if($iconid!=100 AND $iconid!=200 AND $iconid!=300 AND $iconid!=500 AND $iconid!=600)
{
if(file_exists('icons/'.$ip.'-'.$alldata['server']['virtualserver_port'].'/icon_'.$iconid))
{
$g_img.="
";
}
}
else
{
$g_img.="
";
}
}
}
}
}
if($u_value['client_icon_id']!=0)
{
if($u_value['client_icon_id']<0)
{
$u_value['client_icon_id']=sprintf('%u', $u_value['client_icon_id'] & 0xffffffff);
}
if($u_value['client_icon_id']!=100 AND $u_value['client_icon_id']!=200 AND $u_value['client_icon_id']!=300 AND $u_value['client_icon_id']!=500 AND $u_value['client_icon_id']!=600)
{
if(file_exists('icons/'.$ip.'-'.$alldata['server']['virtualserver_port'].'/icon_'.$u_value['client_icon_id']))
{
$g_img.="
";
}
}
else
{
$g_img.="
";
}
}
if(!empty($u_value['client_country']))
{
$g_img.="
";
}
$gettree.= "\n".$place."\n
\n
\n
".secure($u_value['client_nickname'])."
\n
".$g_img."
".$u_away_msg."
\n
\n";
}
}
}
}
if(empty($sub))
{
$sub2=$value['channel_name'];
}
else
{
$sub2=$sub.'/'.$value['channel_name'];
}
$gettree.=create_tree($value['cid'], $place."", $alldata, $sid, $ip, $showicons, $sub2);
}
}
}
return $gettree;
}
require("functions.inc.php");
require("config.php");
require("site/lang.php");
require("ts3admin.class.php");
$showicons='left';
if(isset($_GET['showicons']))
{
switch($_GET['showicons']) {
case 'left':
$showicons="left";
break;
case 'right':
$showicons="right";
break;
}
}
$tree='';
$bgcolor=isset($_GET['bgcolor']) ? secure($_GET['bgcolor']):'000000';
$fontcolor=isset($_GET['fontcolor']) ? secure($_GET['fontcolor']):'ffffff';
$ts3=new ts3admin($server[$_GET['skey']]['ip'], $server[$_GET['skey']]['tport']);
$con=$ts3->connect();
if($con['success']!==true)
{
$tree.=$con['errors'][0];;
}
else
{
$select=$ts3->selectServer($_GET['sid'], 'serverId');
$whoami=$ts3->getElement('data', $ts3->whoAmI());
if($select['success']!==true)
{
$tree.=$select['errors'][0];
}
else
{
$geticons=1;
include("site/filetransfer.php");
$alldata=array();
$serverinfo=$ts3->serverInfo();
$alldata['server']=$serverinfo['data'];
$channellist=$ts3->channelList("-topic -flags -voice -limits -icon");
$alldata['channel']=$channellist['data'];
$clientlist=$ts3->clientList("-uid -away -voice -times -groups -info -icon -country");
$alldata['clients']=$clientlist['data'];
$sgrouplist=$ts3->serverGroupList();
$alldata['sgroups']=$sgrouplist['data'];
$cgrouplist=$ts3->channelGroupList();
$alldata['cgroups']=$cgrouplist['data'];
if(!empty($alldata['server']) AND !empty($alldata['channel']) AND !empty($alldata['clients']))
{
if($alldata['server']['virtualserver_icon_id']<0)
{
$alldata['server']['virtualserver_icon_id']=sprintf('%u', $alldata['server']['virtualserver_icon_id'] & 0xffffffff);
}
if($alldata['server']['virtualserver_icon_id']!=100 AND $alldata['server']['virtualserver_icon_id']!=200 AND $alldata['server']['virtualserver_icon_id']!=300 AND $alldata['server']['virtualserver_icon_id']!=500 AND $alldata['server']['virtualserver_icon_id']!=600)
{
$servericon=true;
if(!file_exists('icons/'.$server[$_GET['skey']]['ip'].'-'.$alldata['server']['virtualserver_port'].'/icon_'.$alldata['server']['virtualserver_icon_id']))
{
$servericon=false;
}
}
$tree.="".($alldata['server']['virtualserver_icon_id']!=0 ? "

":'')."
";
$tree.= create_tree(0, "", $alldata, $_GET['sid'], $server[$_GET['skey']]['ip'], $showicons, '');
}
else
{
$tree.=$serverinfo['errors'][0]."
";
$tree.=$channellist['errors'][0]."
";
$tree.=$clientlist['errors'][0]."
";
$tree.=$sgrouplist['errors'][0]."
";
$tree.=$cgrouplist['errors'][0]."
";
}
}
}
?>