PHP ClassesTeamspeak3 Viewer - PHP Class

Teamspeak3 Viewer - PHP Class

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 (aus noch nicht nachvollziehbaren Gründen hat er sein Projekt scheinbar aufgegeben).

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
ts3.viewer.preview

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 (einer der vielen vorteile von OOP!).

Zuerst müssen wir die Klasse selber einbinden, das geht mit

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%).

Der Viewer läst sich nun auch mit Port ansprechen (sofern vom Server unterstützt!), dafür einfach als vierten Parameter den UDP-Port mitgeben und den dritten Paramater auf "null" setzen (siehe example.php)

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();

Dieser Funktion kann man auch paramter mitgeben, diese geben an was nicht angezeigt werden soll, z.b. "cache, created" - nun wird das Cachealter und das Erstelldatum des Server nicht mehr dargestellt.

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 stylesheet.css Datei in ts3.css o.ä. um und bindet diese zusätzlich im 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..

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 stylesheet.css 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..)

 


 

Changelog 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.

Changelog vom 16.11.2010

kleines Update für Sonderzeichen in Usernamen eingepflegt
Der Name der Cache-Datei wurde ebenfalls etwas geändert - dieser ist nun ein "Hash-Summe" welche aus IP, Port & SID zusammen gesetzt wird so das man mehrere Viewer im gleichen Script ausgeben kann.
Danke an chilledkroete an der Stelle - durch Ihn hab ich diesen "zustand" erst entdeckt.

Changelog vom 10.04.2011

Nachdem ich den Viewer nun in in mehreren eigenen Projekten eingebunden hab und auch schon auf anderen seiten gefunden hab stellt ich fest das die Programmierung doch recht "dürftig" ist.
Das Error Handling ist mehr als bescheiden und viele Möglichkeiten sind garnicht mit angegeben oder werden garnicht erst genutzt.

Als ich dann aber in den Viewer schaute und fest stellte das ich nichts dokumentiert hab faste ich den Entschluss das ganze in ein lokales Subversion Repository zu packen und dann weiter zu entwickeln!

Das Resultat ist dann diesmal eine voll durch dokumentierter Klasse, eine detailierte Fehlerausgabe und ein wenig mehr funktionen (siehe auskommentierte Zeilen in der example.php).

Changelog vom 05.09.2011

  • error handling nochmals geändert, trigger_error wird nicht mehr benutzt, stattdesssen werden fehler nun an der Stell der Channelliste dargestellt, somit brechen auch scripte nicht mehr ab wenn ein E_USER_ERROR aufgerufen wurde.
  •  ServerQuery login hinzugefügt, siehe example.php
  • Channel Spacer support
  • Example.php Fehler behoben (Cache Timeout Variable war fehlerhaft)
  • Joomla! Module welches meine Klasse benutzt

Changelog vom 06.10.2011

  • Funktion für das kürzen von Spielernamen

Teamspeak3 Viewer rev 42

Required PHP 5.2 or higher!
Required Teamspeak3 Server beta23 or higher!




Erstellt am
Dateigröße
Downloads
06.09.2011
35.16 KB
2297

Zuletzt aktualisiert am Montag, 10. Oktober 2011 11:54

 

Login

Mit Facebook einloggen.

Anzeige