Vor einigen Tagen hab ich auf einem meiner verwalteten Rootserver einen TS3 Server aufgesetzt.
Wie schon für den vorhandenen TS2 Server suchte ich ein “simples” php query Script welches mir auf einer Website anzeigt Wer, Wo und wieviele Personen sich auf diesem Server befinden.

Nach ein wenig stöbern im offizielen Teamspeakforum und misshandlung von google mit den unterschiedlichsten Suchbegriffen sowie testen des ein oder anderen “älteren” oder auch aktuellem Scripts bin ich bei dem von Markus Bodmann hängen geblieben.

Dieses kleine Script war das Erste und auch Einzige was auf anhieb lief (bis auf eine anpassung bzgl. der Server ID).

Getestet hatte ich das Script als standalone version, angepasst und staunte das es funktioniert ;)
Auf die ersten probleme bin ich dann allerdings gestossen als ich das Script in ein bestehendes Projekt einbinden wollte =(

Nichts ist schlimmer als mehrere zusätzliche Files in ein vorhandenes Projekt einzubinden welche dann noch vom Inhalt her keinerlei “sinn” ergeben.

Variablen welche bei mir schon vorhanden waren, waren auch in diesem Script vorhanden, somit ging das schonmal nicht..
Alles mit “quick & dirty” umzubennen ist nicht meine Welt, also ziehte ich den Entschluss das vorhandene Script von Markus Bodmann in ein “php-object” zu packen.

An der stelle landen wir dann bei dem hübschen begriff OOP (jeder der sich bisher mit php5 auseinander gesetzt hat wird diesen begriff lieben (oder auch haßen..)).

gesagt, getan..
nebenbei hab ich noch den Statistikfehler welcher die “Uptime” falsch anzeigte behoben & die Trafficanzeige eingebaut.

Resultat ist das auf dem folgenden Bild

Das einbinden in ein vorhandes Projekt ist aufgrund nur dieser einen php datei sehr einfach und bietet zusätzlich die möglichkeit diese klasse auch in modul basierten web auftritten zu nutzen (der Sinn von OOP!).

Zuerst müssen wir die Klasse selber einbinden, das geht mit (vorzugsweise “ganz oben” im script)

include('class.ts3viewer.php');

Danach müssen wir die Klasse an der gewollten Stelle aufrufen (ggf auch schon am Anfang), das erfolgt mit

$ts3 = new ts3viewer('localhost', 10011, 1);

wie zu sehen wird hier die IP des Servers, der Query-Port und die Server-ID übergeben!
Ich habe mich bewusst dazu entschieden die Server-ID direkt mit zu übergeben und nicht den UDP-Port da momentan die Identifizierrung nach UDP-Port nur mit “gewissen” rechten funktioniert (und auch das nur zu ~50%).

gut, somit ist die Klasse erstmal initialisiert und das Objekt mit dem Namen “ts3″ steht uns fürs weitere arbeiten zur verfügung, also starten wir die verbindung zum server mit folgendem:

 $ts3->build();

Diese Funktion kann man direkt für die Fehlerbehandlung nutzen da beim erfolg ein “true” und beim scheitern ein “false” zurück geliefert wird (siehe auch die index.php im Downloadarchiv).

Nungut, weiter zur eigentlichen Ausgaube (der wohl interessante teil)

Zum anzeigen der Channel- und Playerlist muss man einfach an der gewünschten stelle folgende zeile einfügen

echo $ts3->tree();

wer dadrüber noch den TS3-Namen (Title incl. Servericon) haben möchte kann davor noch das hier aufrufen

echo $ts3->tree_head();

für eine “user online” und auch “max server user” anzeigen reicht folgende Zeile an der gewünschten Stelle

echo $ts3->useron();

für die Statistik wie oben zu sehen nehmt folgendes

echo $ts3->stats();

selbiges für die legende (wobei diese eigentlich unwichtig ist..)

echo $ts3->legend();

damit auch alles schön eingerücktet ist sollte noch der Inhalt aus der stylesheet.css in die eigene css Datei eingefügt werden und ggf. angepasst werden.
Oder aber Ihr bennent die styleshee.cs Datei in ts3.css o.ä. um und bindet diese zusätzlich im <head> bereich ein, wie Ihr mögt.
auch hier hab ich einige css namen angepasst/vereinfacht damit es zu keiner doppelten deklaration kommt (auch das war bei mir der Fall..)

Wer es auf seinem Server auch aufgeräumt mag (verzeichniss struktur etc.) hat zusätzlich die Möglichkeit die Icons in ein Verzeichniss seiner wahl zu packen (bei mir z.b. ./images/ts3/) und den image_path mit

$ts3->img_path = './images/ts3/'; 

zu ändern.
Gleiches funktioniert auch mit dem cache pfad, es ist auch nur noch eine cache datei vorhanden in welche die daten nicht als html content sonder als php-array gespeichert werden (der einfachheit halber!).
Beides muss vor dem aufruf von build() passieren.

sollten Fragen, Anregungen oder auch Fehler vorhanden sein dann immer her damit, dafür ist dieses Blog da.

und hier nun der Download.

Nachtrag vom 09.06.2010

durch die neue beta23 vom TS3 Server funktioniert die Uptime anzeige nicht mehr, ich habs mal gefixxt und die Downloaddatei unten angepasst.

TS3 Viewer
TS3 Viewer
ts3viewer.0.2.zip
Version: 0.2
27.8 KiB
335 Downloads
Details...