Daten fürs Board 3 Portal aus ACP in Teamspeak Mod übernehme
Verfasst: 15.08.2009 08:57
ich habe da mal 2 spezielle Probleme.
Ich möchte gerne einen Teamspeak Mod fürs Board3 einbauen, allerdings gestatten es mir alle Mods die ich gefunden habe nur die Box ein/auszublenden. Ich möchte nun aber direkt im ACP die Konfiguration der Server vornehmen. Also IP, Serverport, etc.
Der Einbau ins ACP fürs Portal habe ich bereits geschafft, dieses sieht nun so aus :
Includes/acp/acp_portal.php
Das klappt einwandfrei, nun möchte ich gerne diese Variabeln übertragen. Dazu habe ich mir einen Teamspeak Viewer runtergeladen : http://www.kitnetwork.de/wbb/contents/d ... ak-viewer/ und ihn mit einer modifizierten PHPBB version kombiniert. Diese stammt von phpbbmagic und erlaubt es die CSS für das aussehen aus dem Styleordner zu laden. Dazu komme ich später.
Der Teamspeak Mod hat nun eine Config, diese sieht so aus :
Nur wie kann ich hier nun die Variabeln aus dem ACP nehmen ? Ich möchte gerne $serverAddress mit dem Inhalt aus 'portal_teamspeak1_ip1' füllen. Leider führten alle Versuche zu Fehlermeldungen 
Als Alternative müsste man die Variabeln ja auch hier definieren können, dieses ist die Hauptdatei des TS
TS_Viewer.php
Hier wurden legentlich zum Original ein paar Dinge aus dem PHPBB Forum eingtragen. Ansonsten sind die Dateien fast gleich.
Weiss jemand wie ich nun die ACP Daten übernehmen könnte ?
Nun zu meinem 2.ten Problem
In der TS_Viewer.php wird die CSS folgendermassen aufgerufen :
Das klappt auch , aber ich habe die Styleswitcherbox aktiviert. Gibt es eine Möglichkeit , das der Styleswitch der ja temporär erfolgt, mit einbezogen wird ? Also Lösung müsste man den Stylesheet Pfad in der html Datei definieren und dann per Variable oder so in die TS_Viewer.php eintragen, nur wie ?
Ich möchte gerne einen Teamspeak Mod fürs Board3 einbauen, allerdings gestatten es mir alle Mods die ich gefunden habe nur die Box ein/auszublenden. Ich möchte nun aber direkt im ACP die Konfiguration der Server vornehmen. Also IP, Serverport, etc.
Der Einbau ins ACP fürs Portal habe ich bereits geschafft, dieses sieht nun so aus :
Includes/acp/acp_portal.php
Code: Alles auswählen
// <-- START TeamSpeakViewer MOD (1) -->
case 'teamspeak1':
$display_vars = array(
'title' => 'ACP_PORTAL_TEAMSPEAK1_SETTINGS',
'vars' => array(
'legend1' => 'ACP_PORTAL_TEAMSPEAK1_SETTINGS',
'portal_teamspeak1_enabled' => array('lang' => 'PORTAL_TEAMSPEAK1' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_teamspeak1_height' => array('lang' => 'PORTAL_TEAMSPEAK1_HEIGHT' , 'validate' => 'int' , 'type' => 'text:3:3', 'explain' => true),
'legend2' => 'ACP_PORTAL_TEAMSPEAK1_SETTINGSDATA',
'portal_teamspeak1_ip1' => array('lang' => 'PORTAL_TEAMSPEAK1_IP1' , 'validate' => 'string', 'type' => 'text:15:15', 'explain' => true),
'portal_teamspeak1_ip2' => array('lang' => 'PORTAL_TEAMSPEAK1_IP2' , 'validate' => 'string', 'type' => 'text:15:15', 'explain' => true),
'portal_teamspeak1_queryport' => array('lang' => 'PORTAL_TEAMSPEAK1_QUERYPORT' , 'validate' => 'string', 'type' => 'text:5:6', 'explain' => true),
'portal_teamspeak1_udpport' => array('lang' => 'PORTAL_TEAMSPEAK1_UDPPORT' , 'validate' => 'string', 'type' => 'text:5:6', 'explain' => true),
'portal_teamspeak1_dorefresh' => array('lang' => 'PORTAL_TEAMSPEAK1_DOREFRESH' , 'validate' => 'bool', 'type' => 'radio:yes_no', 'explain' => true),
'portal_teamspeak1_refreshtime' => array('lang' => 'PORTAL_TEAMSPEAK1_REFRESHTIME' , 'validate' => 'string', 'type' => 'text:3:3', 'explain' => true),
)
);
break;
// <-- END TeamSpeakViewer MOD -->
Der Teamspeak Mod hat nun eine Config, diese sieht so aus :
Code: Alles auswählen
<?php
/*
* Name = TeamSpeak Viewer
* Version = 2.0
* Datum = 01.02.2006
* Datei = TSV_Config.php
* * * * * * * * * * * * * * * * * * */
class tss2info {
var $TS_Version = "2.0";
//////////////////////////////////////////////////////////
////// TeamSpeak Einstellungen ///////////////////////////
//
var $sitetitle = "TeamSpeak"; // SeitenTitle und Scriptversion
var $serverAddress = "XXXXXX"; // Hier die TeamSpeak IP Adresse eintragen !!wichtig!! (Beispiel: 192.168.7.1)
var $serverQueryPort = "51241"; // TeamSpeak QueryPort.. Schau in die server.ini von TeamSpeak (Standard 51234)
var $serverUDPPort = "10064"; // UDP Port für Teamspeak der auch hinter der IP Adresse genutzt wird (Standard 8767)
var $serverPasswort = ""; // Serverpasswort das bei Serversettings eingestellt wird (wenn kein Passwort erteilt, dann leer lassen)
// (Passwort wird meistens bei Clanservern gebraucht)
//
//
//////////////////////////////////////////////////////////
////// Erweiterte Einstellungen //////////////////////////
//
var $tabellenbreite = "150"; // Mindestbreite der Teamspeaktabelle (die einbindung mit einem IFRAME sollte 20px mehr betragen)
var $alternativer_nick = "GastNick"; // Alternativer Gastname
//
//
////// Aktivieren & Deaktivieren /////////////////////////
//
// 1 = aktiviert
// 0 = deaktiviert
//
//var $TS_subchannel_ausgabe = 0; // Sollen die Subchannels angezeigt werden? FUNKTION NOCH NICHT INTEGRIERT!!!
var $TS_channelflags_ausgabe = 1; // Sollen die Channelrechte angezeigt werden? (R,M,S,P etc.)
var $TS_userstatus_ausgabe = 1; // Soll der Status des Players angezeigt werden? (U,R,SA etc.)
var $TS_channel_anzeigen = 1; // Sollen die Channel angezeigt werden? (0 = nur Playerausgabe)
var $TS_leerchannel_anzeigen = 1; // Sollen die leeren Channel angezeigt werden?
var $TS_title_anzeigen = 1; // Soll der Title über den Channels sichtbar sein?
var $TS_overlib_mouseover = 0; // Soll der Mouseover Effekt vorhanden sein?
var $TS_refresh = 1; // Refreshen generell erlauben (inkl. Refreshlink)
var $TS_autorefresh = 0; // Autorefresh erlauben oder nicht
var $TS_autorefresh_zeit = 10; // Zeit in Sekunden angeben (Funktioniert nur, wenn autorefresh aktiviert wurde)
var $TS_blendtrans = 1; // Überblendeffekt an oder aus?
//
// Debugmodus
// (u.a. kann damit die Channelid angezeigt werden sollte sie gebraucht werden bei dem verstecken einzelner Channels)
var $TS_debug_modus = 0; // Debugmodus zur Fehlersuche an oder aus? (es werden sämtliche Variablen ausgegeben)
//
var $TS_hide_channels = array(); // Welche Channels sollen versteckt werden?
//
// Beispiel: array(CHANNELID,CHANNELID,CHANNELID,CHANNELID)
//
//
//////////////////////////////////////////////////////////
////// PHPKIT Einstellungen //////////////////////////////
//
var $phpkit_config = "../admin/config/config.php"; // Ort ab dem TeamSpeak Viewer Ordner wo die config.php des PHPKIT's liegt.
var $phpkit_gast_nick = "PHPKIT_GastNick"; // Name des Gastes der durch das PHPKIT connectet
var $include_phpkit = 0; // 1 = aktiv ; 0 = inaktiv
//
//////////////////////////////////////////////////////////
/*******************************************************/
/* Ab hier darf >>> KEIN <<< Text mehr geändert werden */
/*******************************************************/
//internal
var $socket;
// external
var $serverStatus = "offline";
var $playerList = array();
var $channelList = array();
// opens a connection to the teamspeak server
function getSocket($host, $port, $errno, $errstr, $timeout) {
unset($socket);
$attempts = 1;
while($attempts <= 1 and !$socket) {
$attempts++;
$socket = @fsockopen($host, $port, $errno, $errstr, $timeout);
$this->errno = $errno;
$this->errstr = $errstr;
if($socket and fread($socket, 4) == "[TS]") {
fgets($socket, 128);
return $socket;
}
}// end while
return false;
}// end function getSocket(...)
// sends a query to the teamspeak server
function sendQuery($socket, $query) {
fputs($socket, $query."\n");
}// end function sendQuery(...)
// answer OK?
function getOK($socket) {
$result = fread($socket, 2);
fgets($socket, 128);
return($result == "OK");
}// end function getOK(...)
// closes the connection to the teamspeak server
function closeSocket($socket) {
fputs($socket, "quit");
fclose($socket);
}// end function closeSocket(...)
// retrieves the next argument in a tabulator-separated string (PHP scanf function bug workaround)
function getNext($evalString) {
$pos = strpos($evalString, "\t");
if(is_integer($pos)) {
return substr($evalString, 0, $pos);
} else {
return $evalString;
}// end if
}// end function getNext($evalString);
// removes the first argument in a tabulator-separated string (PHP scanf function bug workaround)
function chopNext($evalString) {
$pos = strpos($evalString, "\t");
if(is_integer($pos)) {
return substr($evalString, $pos + 1);
} else {
return "";
}// end if
}// end function chopNext($evalString)
// strips the quotes around a string
function stripQuotes($evalString) {
if(strpos($evalString, '"') == 0) $evalString = substr($evalString, 1, strlen($evalString) - 1);
if(strrpos($evalString, '"') == strlen($evalString) - 1) $evalString = substr($evalString, 0, strlen($evalString) - 1);
return htmlentities($evalString);
}// end function stripQuotes($evalString)
// returns the codec name
function getVerboseCodec($codec) {
if($codec == 0) {
$codec = "CELP 5.1 Kbit";
} elseif($codec == 1) {
$codec = "CELP 6.3 Kbit";
} elseif($codec == 2) {
$codec = "GSM 14.8 Kbit";
} elseif($codec == 3) {
$codec = "GSM 16.4 Kbit";
} elseif($codec == 4) {
$codec = "CELP Windows 5.2 Kbit";
} elseif($codec == 5) {
$codec = "Speex 3.4 Kbit";
} elseif($codec == 6) {
$codec = "Speex 5.2 Kbit";
} elseif($codec == 7) {
$codec = "Speex 7.2 Kbit";
} elseif($codec == 8) {
$codec = "Speex 9.3 Kbit";
} elseif($codec == 9) {
$codec = "Speex 12.3 Kbit";
} elseif($codec == 10) {
$codec = "Speex 16.3 Kbit";
} elseif($codec == 11) {
$codec = "Speex 19.5 Kbit";
} elseif($codec == 12) {
$codec = "Speex 25.9 Kbit";
} else {
$codec = "unknown (".$codec.")";
}// end if
return $codec;
}// end function getVerboseCodec($codec);
function getInfo() {
// ---=== main program ===---
// establish connection to teamspeak server
$this->socket = $this->getSocket($this->serverAddress, $this->serverQueryPort, $errno, $errstr, 0.3);
if($this->socket == false) {
if($this->TS_debug_modus == 1) {
echo "Es wird kein Server gefunden.<br><b>Scriptabbruch:</b> Der folgende Query Port ist falsch oder gesperrt: ".$this->serverQueryPort.""; // No Server
DIE;
} else {
return;
}
} else {
$this->serverStatus = "online";
// select the one and only running server on port 8767
$this->sendQuery($this->socket, "sel ".$this->serverUDPPort);
// retrieve answer "OK"
if(!$this->getOK($this->socket)) {
if($this->TS_debug_modus == 1) {
echo "Der Server antwortete nach der letzten Anfrage nicht mit OK.<br><b>Scriptabbruch:</b> Der folgende UPD Port ist falsch oder gesperrt: ".$this->serverUDPPort.""; // Server didn't answer \"OK\" after last command. Aborting.
DIE;
} else {
return;
}
}// end if
############################################################################################
// retrieve player list
$this->sendQuery($this->socket,"pl");
// read player info
$this->playerList = array();
do {
$playerinfo = fscanf($this->socket, "%s %d %d %d %d %d %d %d %d %d %d %d %d %s %[^\t]");
list($playerid, $channelid, $receivedpackets, $receivedbytes, $sentpackets, $sentbytes, $paketlost, $pingtime, $totaltime, $idletime, $privileg, $userstatus, $attribute, $s, $playername) = $playerinfo;
if($playerid != "OK") {
$this->playerList[$playerid] = array(
"playerid" => $playerid,
"channelid" => $channelid,
"receivedpackets" => $receivedpackets,
"receivedbytes" => $receivedbytes,
"sentpackets" => $sentpackets,
"sentbytes" => $sentbytes,
"paketlost" => $paketlost / 100,
"pingtime" => $pingtime,
"totaltime" => $totaltime,
"idletime" => $idletime,
"privileg" => $privileg,
"userstatus" => $userstatus,
"attribute" => $attribute,
"s" => $this->stripQuotes($s),
"playername" => $this->stripQuotes($playername));
}// end if
} while($playerid != "OK");
// retrieve channel list
$this->sendQuery($this->socket,"cl");
// read channel info
$this->channelList = array();
do {
$channelinfo = "";
do {
$input = fread($this->socket, 1);
if($input != "\n" && $input != "\r") $channelinfo .= $input;
} while($input != "\n");
$channelid = $this->getNext($channelinfo); $channelinfo = $this->chopNext($channelinfo);
$channelcodec = $this->getNext($channelinfo); $channelinfo = $this->chopNext($channelinfo);
$channelparent = $this->getNext($channelinfo); $channelinfo = $this->chopNext($channelinfo);
$channelorder = $this->getNext($channelinfo); $channelinfo = $this->chopNext($channelinfo);
$channelmaxplayers = $this->getNext($channelinfo); $channelinfo = $this->chopNext($channelinfo);
$channelname = $this->getNext($channelinfo); $channelinfo = $this->chopNext($channelinfo);
$channelflags = $this->getNext($channelinfo); $channelinfo = $this->chopNext($channelinfo);
$channelpasswort = $this->getNext($channelinfo); $channelinfo = $this->chopNext($channelinfo);
$channeltopic = $this->getNext($channelinfo);
if($channelid != "OK") {
// determine number of players in channel
$playercount = 0;
foreach($this->playerList as $playerInfo) {
if($playerInfo['channelid'] == $channelid) $playercount++;
}// end foreach
$this->channelList[$channelid] = array(
"channelid" => $channelid,
"channelcodec" => $this->getVerboseCodec($channelcodec),
"channelparent" => $channelparent,
"channelorder" => $channelorder,
"channelmaxplayers" => $channelmaxplayers,
"channelname" => $this->stripQuotes($channelname),
"channelflags" => $channelflags,
"channelpasswort" => $channelpasswort,
"channeltopic" => $this->stripQuotes($channeltopic),
"channelcurrentplayers" => $playercount);
}// end if
} while($channelid != "OK");
// close connection to teamspeak server
$this->closeSocket($this->socket);
}// end getInfo()
}// class tss2info
}
$tss2info = new tss2info;
?>

Als Alternative müsste man die Variabeln ja auch hier definieren können, dieses ist die Hauptdatei des TS
TS_Viewer.php
Code: Alles auswählen
<?php
/*
* Name = TeamSpeak Viewer
* Version = 2.0
* Datum = 01.02.2006
* Datei = TS_Viewer.php
*
* Copyright = Dooki
* Homepage = http://www.php-gfx.net
* E-Mail = dooki@php-gfx.net
* * * * * * * * * * * * * * * * * * */
/**
* @ignore
*/
define('IN_PHPBB', true);
$phpbb_root_path = (defined('PHPBB_ROOT_PATH')) ? PHPBB_ROOT_PATH : '../../';
$phpEx = substr(strrchr(__FILE__, '.'), 1);
include($phpbb_root_path . 'common.' . $phpEx);
include($phpbb_root_path . 'includes/functions_display.' . $phpEx);
// Start session management
$user->session_begin();
$auth->acl($user->data);
$user->setup('');
require("TSV_Config.php");
$tss2info->getInfo();
include("TSV_Functions.php");
if($tss2info->include_phpkit == 1) {
if(!@include($tss2info->phpkit_config)) $phpkiterror = "Die Konfigurationsdatei (".$tss2info->phpkit_config.") des PHPKIT 1.6.03 konnte nicht gefunden werden!<br>Ändern sie den Pfad \"\$phpkit_config\" oder deaktivieren sie \"\$include_phpkit\" in den Einstellungen!";
else unset($phpkiterror);
if(intval($USER['id']) > 0) {
$tsv_username = htmlentities($USER['nick']);
} else {
$tsv_username = $tss2info->phpkit_gast_nick;
}
} else {
$tsv_username = $tss2info->alternativer_nick;
}
$tsv_array_1 = array(" ","-","(",")","[","]","{","}","&"); // Das wird gesucht..
$tsv_array_2 = array("_","_","","","","","","",""); // ..und ersetzt mit diesem
$tsv_count = count($tsv_array_1);
for($x=0;$x<$tsv_count;$x++){
$tsv_username = trim(str_replace($tsv_array_1[$x],$tsv_array_2[$x],$tsv_username));
}
$tsv_username = trim($tsv_username);
$counter = 0;
$channelcounter = count($tss2info->channelList) - 1;
//---> Channel Sortierung <---\\ Anfang
unset($s1);
unset($s2);
unset($v);
$s1 = array();
$s2 = array();
foreach($tss2info->channelList as $v) $s1[] = $v['channelorder']; // Sortierung nach Order
foreach($tss2info->channelList as $v) $s2[] = $v['channelname']; // Wenn Order gleich Sortierung nach Name
array_multisort($s1, SORT_ASC, $s2, SORT_ASC, $tss2info->channelList); // ASC = auf-, DESC = absteigend
//---> Channel Sortierung <---\\ Ende
//---> Subchannel nach Player durchsuchen <---\\ Anfang
$tss2info_channellist = $tss2info->channelList;
for($i=0;$i<count($tss2info_channellist);$i++) {
if(intval($tss2info_channellist[$i]['channelparent']) > 0 AND intval($tss2info_channellist[$i]['channelcurrentplayers']) > 0) {
$subchannels[$tss2info_channellist[$i]['channelparent']] = 1;
}
}
//---> Subchannel nach Player durchsuchen <---\\ Ende
//---> ChannelList <---\\ Anfang
foreach($tss2info->channelList as $channelInfo) {
if($channelInfo['channelid'] != "id" AND !in_array($channelInfo['channelid'],$tss2info->TS_hide_channels)) {
if($channelInfo['channelparent'] < "0") {
//---> Channelanzeigen <---\\ Anfang
if($tss2info->TS_channel_anzeigen == 1 AND ($tss2info->TS_leerchannel_anzeigen == 1 OR ($tss2info->TS_leerchannel_anzeigen == 0 AND (trim($channelInfo['channelcurrentplayers']) > 0 OR (intval($subchannels[$channelInfo['channelid']]) == 1))))) {
//---> Mouseover <---\\ Anfang
$channel_mouseover1 = "Join als: ".$tsv_username." | Channelname: ".$channelInfo['channelname']." | Topic: ".$channelInfo['channeltopic']." | Maximale User: ".$channelInfo['channelmaxplayers']." | Derzeitige User: ".$channelInfo['channelcurrentplayers']." | Codec: ".$channelInfo['channelcodec']."";
$channel_mouseover2 = "Kein Joinen möglich | Channelname: ".$channelInfo['channelname']." | Topic: ".$channelInfo['channeltopic']." | Maximale User: ".$channelInfo['channelmaxplayers']." | Derzeitige User: ".$channelInfo['channelcurrentplayers']." | Codec: ".$channelInfo['channelcodec']."";
$channel_mouseover3 = "<b>Join als:</b> ".$tsv_username."<br><br><b>Channelname:</b><br>".$channelInfo['channelname']."<br><br><b>Topic:</b><br>".$channelInfo['channeltopic']."<br><br><b>Maximale User:</b> ".$channelInfo['channelmaxplayers']."<br><b>Derzeitige User:</b> ".$channelInfo['channelcurrentplayers']."<br><br><b>Codec:</b><br>".$channelInfo['channelcodec']."";
$channel_mouseover4 = "<b>Kein Joinen möglich</b><br><br><b>Channelname:</b><br>".$channelInfo['channelname']."<br><br><b>Topic:</b><br>".$channelInfo['channeltopic']."<br><br><b>Maximale User:</b> ".$channelInfo['channelmaxplayers']."<br><b>Derzeitige User:</b> ".$channelInfo['channelcurrentplayers']."<br><br><b>Codec:</b><br>".$channelInfo['channelcodec']."";
//---> Mouseover <---\\ Ende
//---> Passwortabfrage <---\\ Anfang
if($channelInfo['channelpasswort'] == "0") {
if($tss2info->TS_overlib_mouseover == 1) $channel_mouseover3 = "onmouseover=\"return overlib('".str_replace("'","\'",$channel_mouseover3)."', WIDTH, 200);\" onmouseout=\"return nd();\"";
else $channel_mouseover3 = "title=\"".$channel_mouseover1."\"";
$channellink = "<a class=\"channellink\" href=\"teamspeak://".$tss2info->serverAddress.":".$tss2info->serverUDPPort."/?channel=".rawurlencode($channelInfo['channelname'])."?password=".$tss2info->serverPasswort."?nickname=".rawurlencode($tsv_username)."\" ".$channel_mouseover3.">".$channelInfo['channelname']."</a>";
} else {
if($tss2info->TS_overlib_mouseover == 1) $channel_mouseover4 = "style=\"cursor: help;\" onmouseover=\"return overlib('".str_replace("'","\'",$channel_mouseover4)."', WIDTH, 200);\" onmouseout=\"return nd();\"";
else $channel_mouseover4 = "title=\"".$channel_mouseover2."\"";
$channellink = "<span ".$channel_mouseover4.">".$channelInfo['channelname']."</span>";
}
//---> Passwortabfrage <---\\ Ende
//---> Channelflags <---\\ Anfang
if($tss2info->TS_channelflags_ausgabe == 1) $channellink .= ' ('.TS_channelflags($channelInfo['channelflags']).')';
//---> Channelflags <---\\ Ende
//---> Channel <---\\ Anfang
$ts_viewer_ausgabe .= '
<tr>
<td valign="top">
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="channel" width="25" valign="top" nowrap><img width="5" height="13" src="images/blank.gif" border="0" alt=""><img src="images/channel.gif" width="20" height="13" border="0" alt=""></td>
<td class="channel" width="100%" valign="top" nowrap> '.$channellink.'</td>';
//---> Debug Modus <---\\ Anfang
if($tss2info->TS_debug_modus == 1) {
$ts_viewer_ausgabe .= "\n <td class=\"player\" width=\"1500\" valign=\"top\" nowrap> <b>channelid:</b> ".$channelInfo['channelid']." <b>channelcodec:</b> ".$channelInfo['channelcodec']." <b>channelparent:</b> ".$channelInfo['channelparent']." <b>channelorder:</b> ".$channelInfo['channelorder']." <b>channelmaxplayers:</b> ".$channelInfo['channelmaxplayers']." <b>channelname:</b> ".$channelInfo['channelname']." <b>channelflags:</b> ".$channelInfo['channelflags']." <b>channelpasswort:</b> ".$channelInfo['channelpasswort']." <b>channeltopic:</b> ".$channelInfo['channeltopic']." <b>channelcurrentplayers:</b> ".$channelInfo['channelcurrentplayers']."</td>";
}
//---> Debug Modus <---\\ Ende
$ts_viewer_ausgabe .= '
</tr>
</table>
</td>
</tr>';
//---> Channel <---\\ Ende
}
//---> Channelanzeigen <---\\ Ende
$counter_player = 0; // Playercounter beginnen
//---> Player Sortierung <---\\ Anfang
unset($s1);
unset($s2);
unset($v);
$s1 = array();
$s2 = array();
foreach($tss2info->playerList as $v) $s1[] = $v['userstatus']; // Sortierung nach Order
foreach($tss2info->playerList as $v) $s2[] = $v['playername']; // Wenn Order gleich Sortierung nach Name
array_multisort($s1, SORT_DESC, $s2, SORT_ASC, $tss2info->playerList); // ASC = auf-, DESC = absteigend
//---> Player Sortierung <---\\ Ende
//---> PlayerList <---\\ Anfang
foreach($tss2info->playerList as $playerInfo) {
if($playerInfo['channelid'] == $channelInfo['channelid']) {
$playercounter1 = $counter_player+1;
$playercounter2 = $channelInfo['channelcurrentplayers'];
$player_mouse_over1 = "".$playerInfo['playername']." | Online seit: ".TS_totaltime($playerInfo['totaltime'])." | Idle seit: ".TS_idletime($playerInfo['idletime'])." | Ping: ".$playerInfo['pingtime']." ms";
$player_mouse_over2 = "<b>".$playerInfo['playername']."</b><br><br><b>Online seit:</b><br>".TS_totaltime($playerInfo['totaltime'])."<br><br><b>Idle seit:</b><br>".TS_idletime($playerInfo['idletime'])."<br><br><b>Ping:</b> ".$playerInfo['pingtime']." ms";
if($tss2info->TS_overlib_mouseover == 1) $player_mouse_over = "style=\"cursor: help;\" onmouseover=\"return overlib('".str_replace("'","\'",$player_mouse_over2)."', WIDTH, 150);\" onmouseout=\"return nd();\"";
else $player_mouse_over = "title=\"".$player_mouse_over1."\"";
//---> Player <---\\ Anfang
$ts_viewer_ausgabe .= '
<tr>
<td>
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>';
unset($userstatus);
if($tss2info->TS_userstatus_ausgabe == 1) $userstatus = ' ('.TS_userstatus($playerInfo['userstatus']).TS_privileg($playerInfo['privileg'],$playerInfo['attribute']).')';
if($tss2info->TS_channel_anzeigen == 1) {
$ts_viewer_ausgabe .= '
<td width="0" nowrap><img width="5" height="16" src="images/blank.gif" border="0" alt=""></td>';
} else {
$player_without_channel[] = $playerInfo;
}
$ts_viewer_ausgabe .= '
<td class="player" width="100%"> <span '.$player_mouse_over.'>'.$playerInfo['playername'].$userstatus.'</span></td>
</tr>
</table>
</td>
</tr>';
//---> Player <---\\ Ende
$counter_player++; // Playercounter hochzählen
}
}
//---> PlayerList <---\\ Ende
//---> Subchannel Sortierung <---\\ Anfang
unset($s1);
unset($s2);
$s1 = array();
$s2 = array();
foreach($tss2info->channelList as $v) $s1[] = $v['channelorder']; // Sortierung nach Order
foreach($tss2info->channelList as $v) $s2[] = $v['channelname']; // Wenn Order gleich Sortierung nach Name
array_multisort($s1, SORT_ASC, $s2, SORT_ASC, $tss2info->channelList); // ASC = auf-, DESC = absteigend
unset($v);
//---> Subchannel Sortierung <---\\ Ende
//---> SubchannelList <---\\ Anfang
foreach($tss2info->channelList as $subchannelInfo) {
if($subchannelInfo['channelparent'] == $channelInfo['channelid'] AND !in_array($subchannelInfo['channelid'],$tss2info->TS_hide_channels) AND ($tss2info->TS_leerchannel_anzeigen == 1 OR ($tss2info->TS_leerchannel_anzeigen == 0 AND trim($subchannelInfo['channelcurrentplayers']) > 0))) {
if($tss2info->TS_channel_anzeigen == 1) {
$subchannel_mouseover1 = "Join als: ".$tsv_username." | Channelname: ".$subchannelInfo['channelname']." | Subchannel von: ".$channelInfo['channelname']." | Topic: ".$subchannelInfo['channeltopic']." | Maximale User: ".$subchannelInfo['channelmaxplayers']." | Derzeitige User: ".$subchannelInfo['channelcurrentplayers']." | Codec: ".$subchannelInfo['channelcodec']."";
$subchannel_mouseover2 = "Kein Joinen möglich | Channelname: ".$subchannelInfo['channelname']." | Subchannel von: ".$channelInfo['channelname']." | Topic: ".$subchannelInfo['channeltopic']." | Maximale User: ".$subchannelInfo['channelmaxplayers']." | Derzeitige User: ".$subchannelInfo['channelcurrentplayers']." | Codec: ".$subchannelInfo['channelcodec']."";
$subchannel_mouseover3 = "<b>Join als:</b> ".$tsv_username."<br><br><b>Channelname:</b><br>".$subchannelInfo['channelname']."<br><b>Subchannel von:</b><br>".$channelInfo['channelname']."<br><br><b>Topic:</b><br>".$subchannelInfo['channeltopic']."<br><br><b>Maximale User:</b> ".$subchannelInfo['channelmaxplayers']."<br><b>Derzeitige User:</b> ".$subchannelInfo['channelcurrentplayers']."<br><br><b>Codec:</b><br>".$subchannelInfo['channelcodec']."";
$subchannel_mouseover4 = "<b>Kein Joinen möglich</b><br><br><b>Channelname:</b><br>".$subchannelInfo['channelname']."<br><b>Subchannel von:</b><br>".$channelInfo['channelname']."<br><br><b>Topic:</b><br>".$subchannelInfo['channeltopic']."<br><br><b>Maximale User:</b> ".$subchannelInfo['channelmaxplayers']."<br><b>Derzeitige User:</b> ".$subchannelInfo['channelcurrentplayers']."<br><br><b>Codec:</b><br>".$subchannelInfo['channelcodec']."";
if($channelInfo['channelpasswort'] == "0") {
if($tss2info->TS_overlib_mouseover == 1) $subchannel_mouseover3 = "onmouseover=\"return overlib('".str_replace("'","\'",$subchannel_mouseover3)."', WIDTH, 200);\" onmouseout=\"return nd();\"";
else $subchannel_mouseover3 = "title=\"".$channel_mouseover1."\"";
$subchannellink = "<a class=\"channellink\" href=\"teamspeak://".$tss2info->serverAddress.":".$tss2info->serverUDPPort."/?channel=".rawurlencode($subchannelInfo['channelname'])."?password=".$tss2info->serverPasswort."?nickname=".rawurlencode($tsv_username)."\" ".$subchannel_mouseover3.">".$subchannelInfo['channelname']."</a>";
} else {
if($tss2info->TS_overlib_mouseover == 1) $subchannel_mouseover4 = "style=\"cursor: help;\" onmouseover=\"return overlib('".str_replace("'","\'",$subchannel_mouseover4)."', WIDTH, 200);\" onmouseout=\"return nd();\"";
else $subchannel_mouseover4 = "title=\"".$channel_mouseover2."\"";
$subchannellink = "<span ".$subchannel_mouseover4.">".$subchannelInfo['channelname']."</span>";
}
//---> Channel <---\\ Anfang
$ts_viewer_ausgabe .= '
<tr>
<td valign="top">
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="channel" width="40" valign="top" nowrap><img width="5" height="13" src="images/blank.gif" border="0" alt=""><img width="15" height="13" src="images/blank.gif" border="0" alt=""><img src="images/channel.gif" width="20" height="13" border="0" alt=""></td>
<td class="channel" width="100%" valign="top" nowrap> '.$subchannellink.'</td>';
//---> Debug Modus <---\\ Anfang
if($tss2info->TS_debug_modus == 1) {
$ts_viewer_ausgabe .= "\n <td class=\"player\" width=\"1500\" valign=\"top\" nowrap> <b>channelid:</b> ".$subchannelInfo['channelid']." <b>channelcodec:</b> ".$subchannelInfo['channelcodec']." <b>channelparent:</b> ".$subchannelInfo['channelparent']." <b>channelorder:</b> ".$subchannelInfo['channelorder']." <b>channelmaxplayers:</b> ".$subchannelInfo['channelmaxplayers']." <b>channelname:</b> ".$subchannelInfo['channelname']." <b>channelflags:</b> ".$subchannelInfo['channelflags']." <b>channelpasswort:</b> ".$subchannelInfo['channelpasswort']." <b>channeltopic:</b> ".$subchannelInfo['channeltopic']." <b>channelcurrentplayers:</b> ".$subchannelInfo['channelcurrentplayers']."</td>";
}
//---> Debug Modus <---\\ Ende
$ts_viewer_ausgabe .= '
</tr>
</table>
</td>
</tr>';
//---> Channel <---\\ Ende
}
$counter_player = 0;
//---> Sortierung <---\\ Anfang
unset($s1);
unset($s2);
unset($v);
$s1 = array();
$s2 = array();
foreach($tss2info->playerList as $v) $s1[] = $v['userstatus']; // Sortierung nach Order
foreach($tss2info->playerList as $v) $s2[] = $v['playername']; // Wenn Order gleich Sortierung nach Name
array_multisort($s1, SORT_DESC, $s2, SORT_ASC, $tss2info->playerList); // ASC = auf-, DESC = absteigend
//---> Sortierung <---\\ Ende
//---> SubPlayerList <---\\ Anfang
foreach($tss2info->playerList as $playerInfo) {
if($playerInfo['channelid'] == $subchannelInfo['channelid'] && $subchannelInfo['channelparent'] == $channelInfo['channelid']) {
$playercounter1 = $counter_player+1;
$playercounter2 = $subchannelInfo['channelcurrentplayers'];
$player_mouse_over1 = "".$playerInfo['playername']." | Online seit: ".TS_totaltime($playerInfo['totaltime'])." | Idle seit: ".TS_idletime($playerInfo['idletime'])." | Ping: ".$playerInfo['pingtime']." ms";
$player_mouse_over2 = "<b>".$playerInfo['playername']."</b><br><br><b>Online seit:</b><br>".TS_totaltime($playerInfo['totaltime'])."<br><br><b>Idle seit:</b><br>".TS_idletime($playerInfo['idletime'])."<br><br><b>Ping:</b> ".$playerInfo['pingtime']." ms";
if($tss2info->TS_overlib_mouseover == 1) $player_mouse_over = "style=\"cursor: help;\" onmouseover=\"return overlib('".str_replace("'","\'",$player_mouse_over2)."', WIDTH, 150);\" onmouseout=\"return nd();\"";
else $player_mouse_over = "title=\"".$player_mouse_over1."\"";
//---> SubPlayer <---\\ Anfang
$ts_viewer_ausgabe .= '
<tr>
<td>
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>';
unset($subuserstatus);
if($tss2info->TS_userstatus_ausgabe == 1) $subuserstatus = ' ('.TS_userstatus($playerInfo['userstatus']).TS_privileg($playerInfo['privileg'],$playerInfo['attribute']).')';
if($tss2info->TS_channel_anzeigen == 1) {
$ts_viewer_ausgabe .= '
<td class="player" width="0" nowrap><img width="5" height="16" src="images/blank.gif" border="0" alt=""><img src="images/blank.gif" width="15" height="16" border="0" alt=""></td>';
} else {
$player_without_channel[] = $playerInfo;
}
$ts_viewer_ausgabe .= '
<td class="player" width="100%"> <span '.$player_mouse_over.'>'.$playerInfo['playername'].$subuserstatus.'</span></td>
</tr>
</table>
</td>
</tr>';
//---> SubPlayer <---\\ Ende
$counter_player++; // Playercounter hochzählen
}
}
//---> SubPlayerList <---\\ Ende
}
}
//---> SubchannelList <---\\ Ende
$counter++; // Channelcounter hochzählen
}
}
$counter++; // Channelcounter hochzählen
}
//---> ChannelList <---\\ Ende
//---> OFFLINE <---\\ Anfang
if($counter == 0) {
$ts_viewer_ausgabe .= '
<tr>
<td>
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="offline" width="110" align="center"><font class="heads"><b>Offline</b></font></td>
</tr>
</table>
</td>
</tr>';
}
//---> OFFLINE <---\\ Ende
if(is_array($player_without_channel)) {
unset($ts_viewer_ausgabe);
//---> Sortierung <---\\ Anfang
unset($s1);
unset($s2);
unset($v);
$s1 = array();
$s2 = array();
foreach($player_without_channel as $v) $s1[] = $v['userstatus']; // Sortierung nach Order
foreach($player_without_channel as $v) $s2[] = $v['playername']; // Wenn Order gleich Sortierung nach Name
array_multisort($s1, SORT_DESC, $s2, SORT_ASC, $player_without_channel); // ASC = auf-, DESC = absteigend
//---> Sortierung <---\\ Ende
//---> PlayerList <---\\ Anfang
foreach($player_without_channel as $playerInfo) {
$player_mouse_over1 = "".$playerInfo['playername']." | Online seit: ".TS_totaltime($playerInfo['totaltime'])." | Idle seit: ".TS_idletime($playerInfo['idletime'])." | Ping: ".$playerInfo['pingtime']." ms";
$player_mouse_over2 = "<b>".$playerInfo['playername']."</b><br><br><b>Online seit:</b><br>".TS_totaltime($playerInfo['totaltime'])."<br><br><b>Idle seit:</b><br>".TS_idletime($playerInfo['idletime'])."<br><br><b>Ping:</b> ".$playerInfo['pingtime']." ms";
if($tss2info->TS_overlib_mouseover == 1) $player_mouse_over = "style=\"cursor: help;\" onmouseover=\"return overlib('".str_replace("'","\'",$player_mouse_over2)."', WIDTH, 150);\" onmouseout=\"return nd();\"";
else $player_mouse_over = "title=\"".$player_mouse_over1."\"";
unset($userstatus);
if($tss2info->TS_userstatus_ausgabe == 1) $userstatus = ' ('.TS_userstatus($playerInfo['userstatus']).TS_privileg($playerInfo['privileg'],$playerInfo['attribute']).')';
$ts_viewer_ausgabe .= '
<tr>
<td>
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="player" width="20" nowrap><img src="images/'.TS_attribute($playerInfo['attribute']).'" width="20" height="16" border="0" alt=""></td>
<td class="player" width="100%"> <span '.$player_mouse_over.'>'.$playerInfo['playername'].$userstatus.'</span></td>
</tr>
</table>
</td>
</tr>';
}
//---> PlayerList <---\\ Anfang
}
//---> Start <---\\ Anfang
echo '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>'.$tss2info->sitetitle.'</title>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<meta http-equiv="content-language" content="de">';
if($tss2info->TS_blendtrans == "1") {
echo '
<meta http-equiv="Page-Exit" content="blendTrans(Duration=0.5)">
<meta http-equiv="Page-Enter" content="blendTrans(Duration=0.5)">';
}
if($tss2info->TS_refresh == 1 AND $tss2info->TS_autorefresh == 1 AND strtolower($_GET['refresh']) == "auto") {
echo '
<meta http-equiv="refresh" content="'.$tss2info->TS_autorefresh_zeit.'; URL=TS_Viewer.php?refresh=auto">';
}
echo '
<link rel="stylesheet" type="text/css" href="' . "{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme' . '/tsviewer.css">';
if($tss2info->TS_overlib_mouseover == 1) {
echo '
<!-- overLIB (c) Erik Bosrup -->
<script type="text/javascript" src="overlib.js"></script>
<!-- overLIB (c) Erik Bosrup -->';
}
echo '
</head>
<body>
'.$phpkiterror.'';
if($tss2info->TS_overlib_mouseover == 1) {
echo '
<div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div>';
}
echo '
<table border="0" width="100%" cellpadding="1" cellspacing="4">
<tr>
<td class="odd" align="left" valign="top" width="'.$tss2info->tabellenbreite.'" nowrap>
<table border="0" width="100%" cellpadding="0" cellspacing="2">';
if($tss2info->TS_refresh == 1) {
echo '
<tr>
<td>
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>';
if((strtolower($_GET['refresh']) != "auto") OR ($tss2info->TS_autorefresh != 1 AND strtolower($_GET['refresh']) == "auto")) {
echo '
<td class="refresh" width="50%" nowrap><a class="refresh" href="TS_Viewer.php?refresh=">refresh</a></td>';
}
if($tss2info->TS_autorefresh == 1) {
if(strtolower($_GET['refresh']) == "auto") {
echo '
<td class="refresh" align="right" nowrap><a class="refresh" href="TS_Viewer.php?refresh=">autorefresh deaktivieren</a></td>';
} else {
echo '
<td class="refresh" align="right" width="50%" nowrap><a class="refresh" href="TS_Viewer.php?refresh=auto">autorefresh</a></td>';
}
}
echo '
</tr>
</table>
</td>
</tr>';
}
if($tss2info->TS_title_anzeigen == 1) {
echo '
<tr>
<td>
<table border="0" width="100%" cellpadding="0" cellspacing="0">
<tr>
<td class="teamspeak" width="33" nowrap><img src="images/teamspeak.gif" width="33"height="18" border="0" alt=""></td><td class="teamspeak" width="100%">'.$tss2info->sitetitle.'</td>
</tr>
</table>
</td>
</tr>';
}
echo ''.$ts_viewer_ausgabe.'
</table>
</td>
</tr>
<tr>
<td class="created"><br>TS-V '.$tss2info->TS_Version.' by <a class="created" href="http://www.php-gfx.net" target="_blank">php-gfx.net</a></td>
</tr>
</table>
</body>
</html>';
//---> Stop <---\\ Ende
?>
Weiss jemand wie ich nun die ACP Daten übernehmen könnte ?
Nun zu meinem 2.ten Problem
In der TS_Viewer.php wird die CSS folgendermassen aufgerufen :
Code: Alles auswählen
echo '
<link rel="stylesheet" type="text/css" href="' . "{$phpbb_root_path}styles/" . $user->theme['theme_path'] . '/theme' . '/tsviewer.css">';