Guest User

Untitled

a guest
Oct 22nd, 2017
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 20.60 KB | None | 0 0
  1. <?php
  2.  
  3. //error_reporting(E_ALL);
  4.  
  5. function sendCmd($fp, $cmd){
  6.     $msg = '';
  7.     fputs($fp, $cmd);
  8.     while(strpos($msg, 'msg=') === false){
  9.         $msg .= fread($fp, 8096);
  10.     }
  11.     if(!strpos($msg, 'msg=ok')){
  12.         return false;
  13.     }else{
  14.         return $msg;
  15.     }
  16.     echo $msg;
  17. }
  18.  
  19. function splitInfo($info){
  20.     $info = trim(str_replace('error id=0 msg=ok', '', $info));
  21.     $info = explode(' ', $info);
  22.     foreach ($info as $var) {
  23.         if(strpos($var, '=')=== FALSE){
  24.             $return[$var] = '';
  25.         }else{
  26.             $b = trim(substr($var, 0, (strpos($var, '='))));
  27.             $return[$b] = substr($var, (strpos($var, '=')+1));
  28.         }
  29.     }
  30.     return $return;
  31. }
  32.  
  33. function trimInfo($info){
  34.     $info = trim(str_replace('error id=0 msg=ok', '', $info));
  35.     $info = explode('|', $info);
  36.     return $info;
  37. }
  38.  
  39. function sortUsers($a, $b){
  40.     if($a["client_talk_power"] != $b["client_talk_power"]){
  41.         return ($a["client_talk_power"] > $b["client_talk_power"]) ? -1 : 1;
  42.     }
  43.     if($a["client_is_talker"] != $b["client_is_talker"]){
  44.         return ($a["client_is_talker"] > $b["client_is_talker"]) ? -1 : 1;
  45.     }
  46.     return strcasecmp(strtolower($a["client_nickname"]), strtolower($b["client_nickname"]));
  47. }
  48.  
  49. function sortRanks($a, $b){
  50.     if($a["client_channel_group_id"] != $b["client_channel_group_id"]){
  51.         return ($a["client_channel_group_id"] < $b["client_channel_group_id"]) ? -1 : 1;
  52.     }
  53.     return ($a['client_channel_group_id'] < $b['client_channel_group_id']) ? -1 : 1;
  54. }
  55.  
  56. function convert_bytes($byte){
  57.     if(!$byte or !is_numeric($byte) or $byte < 0) return false;
  58.     $bz = array(" B", " kB", " MB", " GB", " TB");
  59.     $count=0;
  60.     while($byte > 1024) { $byte /= 1024; $count++; }
  61.     return round($byte,2).$bz[$count];
  62. }
  63.  
  64. function rep($var, $reverse = false){
  65.     $search = array('\\\\', "\/", "\s", "\p", "\a", "\b", "\f", "\n", "\r", "\t", "\v");
  66.     $replace = array(chr(92), chr(47), chr(32), chr(124), chr(7), chr(8), chr(12), chr(10), chr(3), chr(9), chr(11));
  67.     if(!$reverse) return str_replace($search, $replace, htmlspecialchars($var));   
  68.     return str_replace($replace, $search, htmlspecialchars($var));
  69. }
  70.  
  71. function chancut($var,$ts3){
  72.     if($ts3['config']['chancut'] >= '1'){
  73.         $count = strlen($var);
  74.         if($count > $ts3['config']['chancut']){
  75.             $pos = $ts3['config']['chancut']-3;
  76.             $var = substr($var, 0, $pos).'...';
  77.         }
  78.     }
  79.     return $var;
  80. }
  81.  
  82. function nickcut($var,$ts3){
  83.     if($ts3['config']['nickcut'] >= '1'){
  84.         $count = strlen($var);
  85.         if($count > $ts3['config']['nickcut']){
  86.             $pos = $ts3['config']['nickcut']-3;
  87.             $var = substr($var, 0, $pos).'...';
  88.         }
  89.     }
  90.     return $var;
  91. }
  92.  
  93. function servergroups($ts3) {
  94.     $return = '';
  95.     if(isset($ts3['config']['showgroups']) && $ts3['config']['showgroups'] == '1'){
  96.         $return .= "<div class=\"servergroups container\"><h3>Servergroups:</h3>\n";
  97.         foreach ($ts3['config']['sgroup'] as $var){
  98.             $return .= "  <div class=\"servergroups icon\"><img src=\"" . $ts3['config']['img_dir'] . "/" . $var['p'] . "\" alt=\"\" /></div>\n";
  99.             $return .= "  <div class=\"servergroups rang\">" . $var['n'] . "</div>\n";
  100.             $return .= "  <div style=\"clear:both\"></div>\n";
  101.         }
  102.         $return .= "</div>\n";
  103.     }
  104.     return $return;
  105. }
  106.  
  107. function channelgroups($ts3) {
  108.     $return = '';
  109.     if(isset($ts3['config']['showgroups']) && $ts3['config']['showgroups'] == '1'){
  110.         $return .= "<div class=\"channelgroups container\"><h3>Channelgroups:</h3>\n";
  111.         foreach ($ts3['config']['cgroup'] as $var) {
  112.             $return .= " <div class=\"channelgroups icon\"><img src=\"" . $ts3['config']['img_dir'] . "/" . $var['p'] . "\" alt=\"\" /></div>\n";
  113.             $return .= " <div class=\"channelgroups rang\">" . $var['n'] . "</div>\n";
  114.             $return .= " <div style=\"clear:both\"></div>\n";
  115.         }
  116.         $return .= "</div>\n";
  117.     }
  118.     return $return;
  119. }
  120.  
  121. function stats($ts3){
  122.     $return = '';
  123.     $info_img = "<img class=\"status\" src=\"" . $ts3['config']['img_dir'] . "/status_info.png\" alt=\"\" />\n";
  124.     if(isset($ts3['config']['stats']) && $ts3['config']['stats'] == 1){
  125.         $return .= "\n<!-- Serverstatistik Anfang -->\n<div class=\"status\"><h3>Information:</h3></div>\n";
  126.         $days = ($ts3['sinfo']['virtualserver_uptime']/60/60/24)%365;
  127.         $hours = ($ts3['sinfo']['virtualserver_uptime']/60/60)%24;
  128.         $minutes = ($ts3['sinfo']['virtualserver_uptime']/60)%60;
  129.         $seconds = ($ts3['sinfo']['virtualserver_uptime'])%60;
  130.         $ts3['sinfo']['virtualserver_uptime'] = (($days < 10) ? " " : "").$days."D ".(($hours < 10) ? ' ' : "").$hours.":".(($minutes < 10) ? '0' : "").$minutes.":".(($seconds < 10) ? '0' : "").$seconds;
  131.         $ts3['sinfo']['virtualserver_version'] = preg_replace('/\[.*\]/', '', rep($ts3['sinfo']['virtualserver_version']));
  132.         $ts3['sinfo']['virtualserver_clientsonline'] = $ts3['sinfo']['virtualserver_clientsonline'] - $ts3['sinfo']['virtualserver_queryclientsonline'].' / '.$ts3['sinfo']['virtualserver_maxclients'].' ('.$ts3['sinfo']['virtualserver_reserved_slots'].')';
  133.         $ts3['sinfo']['virtualserver_ip'] = $ts3['config']['ip'].':'.$ts3['config']['port'];
  134.         $ts3['sinfo']['connection_bytes_in'] = convert_bytes($ts3['sinfo']['connection_bytes_received_total']);
  135.         $ts3['sinfo']['connection_bytes_out']  = convert_bytes($ts3['sinfo']['connection_bytes_sent_total']);
  136.         $ts3['sinfo']['connection_bytes_total'] = $ts3['sinfo']['connection_bytes_in'].' / '.$ts3['sinfo']['connection_bytes_out'];
  137.         $return .= "<div class=\"status\">\n";
  138.         $return .= "<table>\n";
  139.         foreach ($ts3['config']['serverinfo'] as $key => $var){
  140.             if($var['show'] == 1){
  141.                 $return .= "<tr><td>" . $info_img . " " . $var['label'] . ":</td><td>" . rep($ts3['sinfo'][$key]) . "</td></tr>\n";
  142.             }
  143.         }
  144.         $return .= "</table>\n";
  145.         $return .= "</div>\n<!-- Serverstatistik Ende -->\n";
  146.     }
  147.     return $return;
  148. }
  149.  
  150. function spacer($var){
  151.  
  152.     $repeat = 50;
  153.    
  154.     if(preg_match('/spacer/', $var) !== 0){
  155.  
  156.         $temp = explode("]", $var);
  157.  
  158.         if($temp[1] != ""){
  159.  
  160.             switch(substr($temp[0], 1, 1)){
  161.        
  162.                 case "*" : 
  163.                     $return .= str_repeat($temp[1], $repeat);
  164.                     break;
  165.                    
  166.                 case "l" :
  167.                     $return .= $temp[1];
  168.                     break;
  169.                    
  170.                 case "c" :
  171.                     $return .= $temp[1];
  172.                     break;
  173.                    
  174.                 case "r" :
  175.                     $return .= $temp[1];
  176.                     break;
  177.             }  
  178.         }          
  179.     }
  180.     return $return;
  181. }
  182.  
  183. function special_spacer($var){
  184.  
  185.     $repeat = 50;
  186.    
  187.     if(preg_match('/spacer/', $var) !== 0){
  188.  
  189.         $temp = explode("]", $var);
  190.  
  191.         if($temp[1] != ""){
  192.  
  193.             switch(substr($temp[1], 0, 3)){
  194.  
  195.                 case "___" :   
  196.                     $return .= str_repeat("&#8212;", $repeat);
  197.                     break;
  198.  
  199.                 case "---" :   
  200.                     $return .= str_repeat("&#8211;", $repeat);
  201.                     break;
  202.                    
  203.                 case "-.-" :
  204.                     $return .= str_repeat("&#8211; &#8901; &#8211;", $repeat);
  205.                     break;
  206.                    
  207.                 case "-.." :
  208.                     $return .= str_repeat("&#8211; &#8901; &#8901;", $repeat);
  209.                     break;
  210.                    
  211.                 case "..." :   
  212.                     $return .= str_repeat("&#8901; &#8901; &#8901;", $repeat);
  213.                     break;
  214.             }
  215.         }
  216.     }
  217.     return $return;
  218. }
  219.  
  220. function tree($ts3,$csid){
  221.     $return = "";
  222.     if(isset($ts3['config']['ip']) && $ts3['config']['port'] && $csid == '0'){
  223.         if($ts3['sinfo']["virtualserver_clientsonline"] - $ts3['sinfo']["virtualserver_queryclientsonline"] >= $ts3['sinfo']["virtualserver_maxclients"]) $return .= "<ul style=\"list-style-type:none;padding-left:0px;\"><li class=\"channel\"><img style=\"vertical-align: middle;\" src=\"" . $ts3['config']['img_dir'] . "/server_red.png\" alt=\"\" /> <a id=\"ip\" href=\"ts3server://" . $ts3['config']['ip'] . "?port=" . $ts3['config']['port'] . "\" />" . rep($ts3['sinfo']['virtualserver_name']) . "</a>\n";
  224.         else if($ts3['sinfo']["virtualserver_flag_password"] == 1) $return .= "<ul style=\"list-style-type:none;padding-left:0px;\"><li class=\"channel\"><img style=\"vertical-align: middle;\" src=\"" . $ts3['config']['img_dir'] . "/server_yellow.png\" alt=\"\" /> <a id=\"ip\" href=\"ts3server://" . $ts3['config']['ip'] . "?port=" . $ts3['config']['port'] . "\" />" . rep($ts3['sinfo']['virtualserver_name']) . "</a>\n";
  225.         else $return .= "<ul style=\"list-style-type:none;padding-left:0px;\"><li class=\"channel\"><img style=\"vertical-align: middle;\" src=\"" . $ts3['config']['img_dir'] . "/server_green.png\" alt=\"\" /> <a id=\"ip\" href=\"ts3server://" . $ts3['config']['ip'] . "?port=" . $ts3['config']['port'] . "\" >" . rep($ts3['sinfo']['virtualserver_name']) . "</a>\n";
  226.         if($ts3['sinfo']["virtualserver_icon_id"] != 0 && $ts3['config']['serverimg'] != '') $return .= "<div class=\"iconcontainer\"><img class=\"channel flags server\" src=\"" . $ts3['config']['img_dir'] . "/" . $ts3['config']['serverimg'] . "\" alt=\"\" /></div>\n";
  227.         else $return .= "";
  228.     }
  229.     $return .= "\n<!-- Channellist Anfang -->\n<ul class=\"channellist\">\n";
  230.     foreach ($ts3['clist'] as $key => $var){
  231.         if($var['pid'] == $csid){
  232.             if(preg_match('/spacer/', $var["channel_name"]) !== 0) $return .= "\n<!-- Spacer Anfang -->\n<li class=\"channel\">\n";
  233.             else if($var["channel_maxclients"] > -1 && ($var["total_clients"] >= $var["channel_maxclients"])) $return .= "<li class=\"channel\"><img style=\"vertical-align: middle;\" src=\"" . $ts3['config']['img_dir'] . "/channel_red.png\" alt=\"\" />\n";
  234.             else if($var["channel_maxfamilyclients"] > -1 && ($var["total_clients_family"] >= $var["channel_maxfamilyclients"])) $return .= "<li class=\"channel\"><img style=\"vertical-align: middle;\" src=\"" . $ts3['config']['img_dir'] . "/channel_red.png\" alt=\"\" />\n";
  235.             else if($var["channel_flag_password"] == 1) $return .= "<li class=\"channel\"><img style=\"vertical-align: middle;\" src=\"" . $ts3['config']['img_dir'] . "/channel_yellow.png\" alt=\"\" />\n";
  236.             else $return .= "<li class=\"channel\"><img style=\"vertical-align: middle;\" src=\"" . $ts3['config']['img_dir'] . "/channel_green.png\" alt=\"\" />\n";
  237.             // Spacerchannel           
  238.             if(preg_match('/spacer/', $var["channel_name"]) !== 0 && substr($temp[0], 1, 1) == "*" || "l" || "c" || "r") $var['channel_spacer_name'] .= spacer($var['channel_name']);
  239.             else if(preg_match('/spacer/', $var["channel_name"]) !== 0 && substr($temp[1], 0, 3) == "___" || "---" || "-.-" || "-.." || "...") $var['channel_spacer_name'] .= special_spacer($var['channel_name']);
  240.             if(preg_match('/spacer/', $var["channel_name"]) !== 0) $return .= chancut(rep($var['channel_spacer_name']),$ts3) ."\n</li>\n<!-- Spacer Ende -->\n";
  241.             else $return .= chancut(rep($var['channel_name']),$ts3);
  242.             $return .= "\n<!-- Icons Channel und Games Anfang -->\n<div class=\"iconcontainer\">\n";
  243.             // Icons for Games         
  244.             if(array_key_exists($var['cid'], $ts3['config']['icons'])){
  245.                 $return .= "<img class=\"channel flags games\" src=\"" . $ts3['config']['img_dir'] . "/" . $ts3['config']['icons'][$var['cid']] . "\" alt=\"\" />\n";
  246.             }      
  247.             if($var["channel_flag_default"] == 1) $return .= "<img class=\"channel flags\" src=\"" . $ts3['config']['img_dir'] . "/channel_default.png\" alt=\"\" />\n";
  248.             if($var["channel_needed_talk_power"] > 0) $return .= "<img class=\"channel flags\" src=\"" . $ts3['config']['img_dir'] . "/channel_moderated.png\" alt=\"\" />\n";
  249.             if($var["channel_flag_password"] == 1) $return .= "<img class=\"channel flags\" src=\"" . $ts3['config']['img_dir'] . "/channel_locked.png\" alt=\"\" />\n";
  250.             if($var["channel_codec"] == 3) $return .= "<img class=\"channel flags\" src=\"" . $ts3['config']['img_dir'] . "/channel_music.png\" alt=\"\" />\n";
  251.             else $return .= "";
  252.             $return .= "</div>\n<!-- Icons Channel und Games Ende -->\n";
  253.             $return .= tree($ts3,$var['cid']);
  254.             if($var['total_clients'] >= '1' && isset($ts3['plist'])){
  255.                 $return .= "<!-- Playerlist Anfang -->\n<ul class=\"playerlist\">\n";
  256.                 foreach($ts3['plist'] as $u_key => $u_var){
  257.                     if($u_var['cid'] == $var['cid']){
  258.                         if($u_var['client_flag_talking']){
  259.                             $p_img = 'player_talking.png';
  260.                         }
  261.                         else if($u_var['client_flag_talking'] && $u_var['client_is_channel_commander']){
  262.                             $p_img = 'player_commander_talking.png';
  263.                         }
  264.                         else if($u_var['client_is_channel_commander']){
  265.                             $p_img = 'player_commander.png';
  266.                         }
  267.                         else if($u_var['client_away']){
  268.                             $p_img = 'player_away.png';
  269.                         }
  270.                         else if($u_var['client_input_muted']){
  271.                             $p_img = 'player_mic_muted.png';
  272.                         }
  273.                         else if(!$u_var['client_input_hardware']){
  274.                             $p_img = 'player_mic_disabled.png';
  275.                         }
  276.                         else if($u_var['client_output_muted']){
  277.                             $p_img = 'player_snd_muted.png';
  278.                         }
  279.                         else if(!$u_var['client_output_hardware']){
  280.                             $p_img = 'player_snd_disabled.png';
  281.                         }
  282.                         else $p_img = 'player_normal.png';
  283.                         $g_img = '';
  284.                         $g_temp = '';
  285.                         if(strpos($u_var['client_servergroups'], ',') !== FALSE){
  286.                             $g_temp = explode(',', $u_var['client_servergroups']);
  287.                         }else{
  288.                             $g_temp[0] = $u_var['client_servergroups'];
  289.                         }
  290.                         if(isset($ts3['config']['cgroup'][$u_var['client_channel_group_id']]['p'])){
  291.                             $g_img .= "<img src=\"" . $ts3['config']['img_dir'] . "/" . $ts3['config']['cgroup'][$u_var['client_channel_group_id']]['p'] . "\" alt=\"\" />\n";
  292.                         }
  293.                         foreach ($g_temp as $sg_var) {
  294.                             if(isset($ts3['config']['sgroup'][$sg_var]['p'])){
  295.                                 $g_img .= "<img src=\"" . $ts3['config']['img_dir'] . "/" . $ts3['config']['sgroup'][$sg_var]['p'] . "\" alt=\"\" />\n";
  296.                             }
  297.                         }
  298.                         if($u_var['client_is_priority_speaker']){
  299.                             $s_img = 'player_priority_speaker.png';
  300.                             $img = "<img src=\"" . $ts3['config']['img_dir'] . "/" . $s_img . "\" alt=\"\" />\n";
  301.                         }
  302.                         else if($u_var['client_talk_power'] < $var['channel_needed_talk_power']){
  303.                             $s_img = 'player_mic_muted.png';
  304.                             $img = "<img src=\"" . $ts3['config']['img_dir'] . "/" . $s_img . "\" alt=\"\" />\n";
  305.                         }
  306.                         else if($u_var['client_is_talker']){
  307.                             $s_img = 'player_is_talker.png';
  308.                             $img = "<img src=\"" . $ts3['config']['img_dir'] . "/" . $s_img . "\" alt=\"\" />\n";
  309.                         }
  310.                         $return .= "<li class=\"player\"><img style=\"vertical-align: middle;\" src=\"" . $ts3['config']['img_dir'] . "/" . $p_img . "\" alt=\"\" />";
  311.                         $return .= nickcut(rep($u_var['client_nickname']),$ts3);
  312.                         $return .= "<span style=\"float:right;\">" . $g_img . "</span>";
  313.                         if($u_var['client_is_priority_speaker']){
  314.                             $return .= "<span style=\"float:right;\">" . $img . "</span>";
  315.                         }
  316.                         else if($u_var['client_talk_power'] < $var['channel_needed_talk_power']){
  317.                             $return .= "<span style=\"float:right;\">" . $img . "</span>";
  318.                         }
  319.                         else if($u_var['client_is_talker']){
  320.                             $return .= "<span style=\"float:right;\">" . $img . "</span>";
  321.                         }
  322.                         $return .= "</li>\n";
  323.                     }
  324.                 }
  325.                 $return .= "</ul>\n<!-- Playerlist Ende -->\n";
  326.             }
  327.             $return .= "</li>\n";
  328.         }
  329.     }
  330.     if(isset($ts3['config']['ip']) && $ts3['config']['port'] && $csid == '0'){
  331.         $return .= "</ul></li>\n";
  332.     }
  333.     $return .= "</ul>\n<!-- Channellist Ende -->\n";
  334.     return $return;
  335. }
  336.  
  337. function show($ts3) {
  338.     if($ts3['config']['cache'] >= '1'){
  339.         if(!file_exists($ts3['config']['cache_dir'])){
  340.             $ts3['error']['cache_dir'] = '<div class="error"><img style="vertical-align: middle;" src="'.$ts3['config']['img_dir'].'/warning.png" alt=""> Cache directory doesn\'t exist.</div>';
  341.         }else{
  342.             if(!is_readable($ts3['config']['cache_dir']) || !is_writable($ts3['config']['cache_dir'])){
  343.                 $ts3['error']['cache_dir'] = '<div class="error"><img style="vertical-align: middle;" src="'.$ts3['config']['img_dir'].'/warning.png" alt=""> Cache directory is not writeable or readable.</div>';
  344.             }else{
  345.                 $ts3['cache_files']['time'] = $ts3['config']['cache_dir'].'/time.txt';
  346.                 $ts3['cache_files']['page'] = $ts3['config']['cache_dir'].'/page.txt';
  347.                 foreach ($ts3['cache_files'] as $value) {
  348.                     if(!file_exists($value)){
  349.                         $fp = fopen($value, 'w');
  350.                         fwrite($fp, ' ');
  351.                         fclose($fp);
  352.                         $ts3['cache_neu'] = '1';
  353.                     }
  354.                 }
  355.                 $fp = fopen($ts3['cache_files']['time'], 'r');
  356.                 $ts3['cache_time_a'] = fread($fp, filesize($ts3['cache_files']['time']));
  357.                 if($ts3['cache_time_a'] <= time()){
  358.                     $ts3['cache_neu'] = '1';
  359.                     fclose($fp);
  360.                     $fp = fopen($ts3['cache_files']['time'], 'w');
  361.                     $ts3['cache_time_b'] = time() + $ts3['config']['cache'];
  362.                     fwrite($fp, $ts3['cache_time_b']);
  363.                 }
  364.                 fclose($fp);
  365.             }
  366.         }
  367.     }else{
  368.         $ts3['cache_neu'] = '1';
  369.     }
  370.     $ts3['echo'] = "<div id=\"body\">\n";
  371.     if((isset($ts3['cache_neu']) &&  $ts3['cache_neu'] == '1')  || isset($ts3['error']['cache_dir'])){
  372.         $fp = @fsockopen($ts3['config']['ip'], $ts3['config']['qport'], $errno, $errstr, 2);
  373.         if($fp){
  374.             $cmd = "use port=".$ts3['config']['port']."\n";
  375.             if(!($select = sendCmd($fp, $cmd))){
  376.                 $ts3['error']['server_id'] = '<div class="error"><img style="vertical-align: middle;" src="'.$ts3['config']['img_dir'].'/server_offline.png" alt=""> Server offline</div>';
  377.             }
  378.             $cmd = "serverinfo\n";
  379.             $ts3['sinfo'] = sendCmd($fp, $cmd);
  380.             $ts3['sinfo'] = splitInfo($ts3['sinfo']);
  381.             $cmd = "channellist -topic -flags -voice -limits\n";
  382.             $ts3['clist_t'] = sendCmd($fp, $cmd);
  383.             $ts3['clist_t'] = trimInfo($ts3['clist_t']);
  384.             foreach ($ts3['clist_t'] as $var) {
  385.                 $ts3['clist'][] = splitInfo($var);
  386.             }
  387.             $cmd = "clientlist -uid -away -voice -groups\n";
  388.             $ts3['plist_t'] = sendCmd($fp, $cmd);
  389.             $ts3['plist_t'] = trimInfo($ts3['plist_t']);
  390.             foreach ($ts3['plist_t'] as $var) {
  391.                 if(strpos($var, 'client_type=0') !== FALSE) {
  392.                     $ts3['plist'][] = splitInfo($var);
  393.                 }
  394.             }
  395.             if(isset($ts3['plist']) && is_array($ts3['plist'])) {
  396.                 foreach ($ts3['plist'] as $key => $var) {
  397.                     if(strpos($var['client_servergroups'], ',') !== FALSE){
  398.                         $t = strpos($var['client_servergroups'], ',');
  399.                         $ts3['plist'][$key]['nickname'] = substr($var['client_servergroups'], 0, $t);
  400.                     }else{
  401.                         $ts3['plist'][$key]['nickname'] = $var['client_servergroups'];
  402.                     }
  403.                 }
  404.                 uasort($ts3['plist'], "sortRanks");
  405.                 uasort($ts3['plist'], "sortUsers");
  406.             }
  407.             $cmd = "quit\n";
  408.             fputs($fp, $cmd);
  409.             fclose($fp);
  410.         }else{
  411.             $ts3['error']['ts_con'] = '<div class="error"><img style="vertical-align: middle;" src="'.$ts3['config']['img_dir'].'/error.png" alt=""> Can\'t connect to server.</div>';
  412.         }
  413.         if(isset($ts3['error'])){
  414.             foreach ($ts3['error'] as $value) {
  415.                 $ts3['echo'] .= $value.'<br />';
  416.             }
  417.         }else{
  418.             $ts3['echo'] .= tree($ts3,'0').servergroups($ts3).channelgroups($ts3).stats($ts3);
  419.         }
  420.     }else{
  421.         $ts3['echo'] = file_get_contents($ts3['cache_files']['page']);
  422.     }
  423.     if($ts3['config']['cache'] >= '1' && isset($ts3['cache_neu']) && $ts3['cache_neu'] == '1'){
  424.         $fp = fopen($ts3['cache_files']['page'], 'w');
  425.         fwrite($fp, $ts3['echo']);
  426.         fclose($fp);
  427.     }
  428.     /** Replace <ul></ul> von leeren Channels ohne Inhalt **/
  429.     $ts3['echo'] = str_replace("<!-- Channellist Anfang -->\n<ul class=\"channellist\"></ul><!-- Channellist Ende -->\n", "", $ts3['echo']);
  430.     $ts3['echo'] = str_replace("<!-- Playerlist Anfang -->\n<ul class=\"playerlist\">\n</ul>\n<!-- Playerlist Ende -->\n", "", $ts3['echo']);
  431.    
  432.     $ts3['echo'] = mb_convert_encoding($ts3['echo'], "ISO-8859-1", "UTF-8");
  433.     return $ts3['echo'];
  434. }
  435.  
  436. ?>
Add Comment
Please, Sign In to add comment