TeamSpeak-API

Dieses Plugin dient als Schnittstelle zwischen weiteren Plugins und Ihrem TeamSpeak-Server. Dieses Plugin ist vor allem für Entwickler relevant. Es kann allerdings auch als Basis-Plugin für andere Plugins dienen.

Es können verschiedenen Server-Verbindungen eingestellt werden, auf diese dann von anderen Plugins zugegriffen werden können.

Fragen und Antworten

Wie erstelle ich eine neue Verbindung?

Gehe ins ACP -> Konfiguration -> TeamSpeak -> Server -> TeamSpeak-Server hinzufügen.

Wie kann ich die API in meinem Plugin implementieren?

Füge die Abhängigkeit zu diesem Plugin in deiner package.xml ein:

XML: package.xml
<requiredpackage minversion="1.5.2">eu.hanashi.wsc.teamspeak-api</requiredpackage>

Lass deine Nutzer die Serververbindung im ACP mit Hilfe der option.xml auswählen:

XML: option.xml
<option name="my_plugin_teamspeak_identity">
    <categoryname>my_category</categoryname>
    <optiontype>TeamSpeakConnectionSelect</optiontype>
</option>

Den Namen (im Beispiel my_plugin_teamspeak_identity) und die richtige Kategorie (im Beispiel my_category) musst du natürlich selbst wählen.

Nun erstellst du eine PHP-Klasse im Verzeichnis lib/system/teamspeak welche die Klasse AbstractTeamSpeakHandler erbt:

PHP: MyPluginTeamSpeakHandler.class.php
<?php
namespace wcf\system\teamspeak;

class MyPluginTeamSpeakHandler extends AbstractTeamSpeakHandler {
    protected $teamspeakID = MY_PLUGIN_TEAMSPEAK_IDENTITIY;
}

Den Datei- und Klassennamen darfst du natürlich selbst wählen. Vergiss dabei nicht die richtige Konstante anstatt MY_PLUGIN_TEAMSPEAK_IDENTITIY einzusetzen.

Nun kannst du in anderen Klassen auf die TeamSpeak-API zugreifen. Hier ein Beispiel in einer Action-Klasse:

Wie führe ich einen TeamSpeak-Befehl aus?

Der TeamSpeak-Befehl ist immer gleich der Methode. Die Parameter werden als Array an die Parameter übergeben. Hier einige Beispiele:

  • TeamSpeak-API 3.1.1

    Technische Änderungen

    • jQuery Code entfernt
    • TypeScript Code Update
    • Database Objekte kommentiert
    • Codestyle-Anpassungen
    • SecretFormField nun komplett entfernt
    • weitere Verbesserungen
  • TeamSpeak-API 3.1.0

    Diese Version setzt nun mindestens WSC 6.0.0 voraus.

    • Anpassungen für WSC 6.0
    • wcf\system\teamspeak\SecretFormField ist nun deprecated und wird in einer späteren Version entfernt
    • Anpassungen für PHP 8.1/.2
    • Deprecations wurden entfernt
    • phpseclib wurde aktualisiert
  • TeamSpeak-API 3.0.2

    Fehlerbehebung

    • behebt die Sicherheitslücke CVE-2023-27560 in phpseclib
  • TeamSpeak-API 3.0.1

    Verbesserungen

    • Codestyle-Anpassungen
    • Primary Key in Install-Script hinzugefügt
    • TypeScript Formatierung (siehe Repository)
    • phpseclib aktualisiert
    • XML-Stil vereinheitlicht
    • Template-Formatierung vereinheitlicht

    Fehlerbehebung

    • im ACP Menü war eine falsche Seite zum Anlegen eines TeamSpeak-Servers verlinkt
  • TeamSpeak-API 3.0.0

    Achtung: Es wird nun mindestens WoltLab Suite 5.3 vorausgesetzt.

    • CHANGE: Umstellung auf Database PHP API
    • CHANGE: Umstellung auf FormBuilder
    • CHANGE: ungenutzte uses entfernt
    • CHANGE: Umstellung auf GuzzleHttp für HTTP/HTTPS-Query
    • CHANGE: Umstellung des JavaScript-Codes auf TypeScript
    • CHANGE: phpseclib2 auf phpseclib3 aktualisiert
    • FEATURE: Query-Passwort wird beim Bearbeiten des Servers im ACP nicht mehr ausgegeben
    • FEATURE: bessere Auswahl der TeamSpeak-Server
    • FEATURE: bessere Fehlerausgabe wenn Server nicht angelegt werden kann
  • TeamSpeak-API 2.1.1

    • CHANGE: Umstellung auf PSR-12
  • TeamSpeak-API 2.1.0

    • FIX: Parameter bei HTTP/HTTPS-Query wurden falsch übergeben
    • FIX: Infinite Loop
    • FEATURE: Voraussetzungen für multiplen Server Select eingebaut
  • TeamSpeak-API 2.0.0

    • FEATURE: die Nutzung von HTTP- und HTTPS-Server-Querys ist nun möglich
    • CHANGE: Rohe Rückgaben beim execute wurden entfernt
    • CHANGE: Code-Optimierungen
  • TeamSpeak-API 1.5.7

    FIX: Deprecated PHP 7.4 function

  • TeamSpeak-API 1.5.6

    Mit SSH wurde fälschlicherweise eine ErrorException anstatt einer TeamSpeakException ausgegeben