Inoffizielle API für WKchats

Eine Sammlung von PHP-Funktionen zum Auslesen von ChatDaten.
Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Inoffizielle API für WKchats

Ungelesener Beitrag von Linus » 10.10.2009, 12:33

Diese API bietet verschiedene Funktionen, um Daten aus dem Admin-Menü abzufragen. Um sie zu benutzen, muss man den unten genannten Code in eine PHP-Datei packen und diese per include oder require, je nach belieben, in eine andere PHP-Datei einbinden:

Code: Alles auswählen

<?php include("api.php"); ?>

Wichtig: Auf manchen Freehostern funktioniert diese API nicht, ob sie bei euch funktioniert, seht ihr, wenn ihr die API-Datei im Browser aufruft. Bleibt die Seite weiß, funktioniert die API bei euch
Den Code findet ihr unter folgender URL:

https://github.com/wkProjects/wkapi

Die Grundidee und die ersten Funktionen stammen von Kiba/Wolfspirit, erweitert wurde die API durch 1. FC Keller und mich.

Und hier eine Auflistung aller Funktionen:


chatStatus:
Erwartet: -
Rückgabe: true, wenn der Server erreichbar ist und der Chat nicht vom Admin deaktiviert wurde, sonst false


checkGuestLogin:
Erwartet:-
Rückgabe: true, wenn der Gastzugang aktiviert ist, sonst false


checkAnmeldung:
Erwartet:-
Rückgabe: true, wenn die Registrierung aktiviert ist, sonst false


pw2sid:
Erwartet: Passwort
Rückgabe: SID


toSid:
Erwartet: Passwort oder SID
Rückgabe: SID


checkUser:
Erwartet: Username, PW/SID (sonst werden die in new Webkicks() eingetragenen gewählt)
Rückgabe: 0: Passwort nicht korrekt/User existiert nicht
1: User und Passwort korrekt, der User ist aber Offline
2: User und Passwort korrekt, der User ist Online


login:
Erwartet: Username, Passwort (sonst werden die in new Webkicks() eingetragenen gewählt)
Rückgabe: True, wenn der Login erfolgreich war, sonst false


logout:
Erwartet: Username, SID (sonst Werte aus new Webkicks())
Rückgabe: - (Loggt den User aus)


sendeText:
Erwartet: Nachricht, Username, SID (sonst Werte aus new Webkicks())
Rückgabe: True, wenn Nachricht gesendet wurde, sonst false


isAdmin:
Erwartet: Username
Rückgabe: 1, wenn der User Admin ist, sonst 0


isMod:
Erwartet: Username
Rückgabe: 1, wenn der User Mod ist, sonst 0


getDetails:
Erwartet: Username
Rückgabe: Array, das alle Daten des Users enthält. Folgende Keys existieren hierzu:
$data["alias"] -> Der Alias
$data["mail"] -> Die E-Mail Adresse
$data["sex"] -> Das Geschlecht
$data["home"] -> Der Wohnort
$data["uin"] -> Icq-Nummer
$data["level"] -> User, Moderator, Administrator, Hauptadministrator
$data["status"] -> gekickt, frei, Alias ist derzeit nicht freigeschaltet, mailpause
$data["ip"] -> Die letzte IP des Users
$data["registered"] -> Angemeldet am, beim Hauptadmin wird das Anmeldedatum des Chats (getChatanmeldung()) zurückgegeben
$data["lastlogin"] -> Letzter Login
$data["hp"] -> Homepage
$data["logins"] -> Loginanzahl
$data["loginm"] -> Loginnachricht
$data["logoutm"] -> Logoutnachricht
$data["profil"] -> Profillink (wenn kein Profil --> "deaktiviert")
$data["newsletter"] -> Newsletterempfang, entweder aktiviert oder deaktiviert
$data["gbentries"] -> Anzahl der Gästebucheinträge
$data["points"] -> Anzahl der Punkte (Sterne, Rosen etc.)


getAnkuendigungen:
Erwartet: -
Rückgabe: Array mit den Ankündigungsdaten. $data[0] enthält, wenn die normale Ankündigung aktiviert ist, 1, sonst 0. $data[1] enthält den Inhalt der normalen Ankündigung. $data[2] und $data[3] dasselbe für die Teamankündigung, $data[4] und $data[5] für die Gastankündigung


getReplacers:
Erwartet: -
Rückgabe: Array mit den Replacern. Format: array( ":smiley1" => "CID/replacer/smiley1.gif", ":smiley2" => "CID/replacer/smiley2.jpg" );


getToplist:
Erwartet: -
Rückgabe: ADMINtopliste (d.h. ALLE Chatter sind aufgeführt) als Array: array("Name" => "Zeit", "Name" => "Zeit");


getTeam:
Erwartet: -
Rückgabe: Mehrdimensionales Array mit den Teammitgliedern. $team[0] gibt ein Array der Mods zurück, $team[1] ein Array der Admins


getAllUsers:
Erwartet: -
Rückgabe: Array, das jeden User enthält


getKickedUsers:
Erwartet: -
Rückgabe: Array, das jeden gekickten User enthält


getBannedUsers:
Erwartet: -
Rückgabe: Array, das jeden gebannten User enthält (Format: array((array(zeit,name,ip),array(zeit,name,ip)) usw.)


getMutedUsers:
Erwartet: -
Rückgabe: Array, das jeden geknebelten User enthält


getLockedUsers:
Erwartet: -
Rückgabe: Array, das jeden nicht freigeschalteten User enthält


getRooms:
Erwartet: -
Rückgabe: Array aller Räume


getOnlineUsers:
Erwartet: -
Rückgabe: Ein Array mit allen Usern, die derzeit online sind


getExtendedOnlinelist:
Erwartet: -
Rückgabe: Ein mehrdimensionales Array mit allen Usern, die derzeit online sind (die XML-Onlinelisten-API in Arrayform)


getRegisterlog:
Erwartet: Username, SID (sonst Werte aus new Webkicks())
Rückgabe: Array der zuletzt registrierten User (Datum, Uhrzeit, Nick)


getBefehlslog:
Erwartet: Username, SID (sonst Werte aus new Webkicks())
Rückgabe: Array des Befehlslogs (Datum, Uhrzeit, Nick, Aktion, Ziel)


getFehlzugriffe:
Erwartet: Username, SID (sonst Werte aus new Webkicks())
Rückgabe: Array der letzten Fehlzugriffe (Datum, Uhrzeit, Nick, IP)


getDeletelog:
Erwartet: Username, SID (sonst Werte aus new Webkicks())
Rückgabe: Array der letzten Userlöschungen (Datum, Uhrzeit, Nick)


getChatanmeldung:
Erwartet: Username, SID (sonst Werte aus new Webkicks())
Rückgabe: Datum der Chatanmeldung


getWerbebefreiung:
Erwartet: Username, SID (sonst Werte aus new Webkicks())
Rückgabe: Bis wann der Chat werbefrei ist (entweder ein Datum oder ein "-", falls keine Werbebefreiung gekauft wurde)


getSettings:
Erwartet: Username, SID (sonst Werte aus new Webkicks())
Rückgabe: Array der Einstellungen auf der Einstellungsseite. Keys:
[gz] => true, wenn der Gastzugang geöffnet ist, sonst false
[profiles] => true, wenn Profile aktiviert sind
[loginusernum] => true, wenn die Anzahl der eingeloggten User auf der Loginseite sichtbar sein soll
[loginuserlist] => true, wenn die Namen der eingeloggten User auf der Loginseite angezeigt werden sollen
[guestwhisp_act] => true, wenn Gäste flüstern dürfen
[guestwhisp_psv] => true, wenn Gäste angeflüstert werden können
[reg] => true, wenn die Registrierung aktiviert ist
[login] => true, wenn der Chatlogin aktiviert ist
[searchbox] => true, wenn der Googleframe aktiviert ist
[smilies] => true, wenn Smilies aktiviert sind
[owncmds] => true, wenn eigene Befehle in der Hilfe angezeigt werden sollen
[webspace] => true, wenn der Webspace-Link angezeigt wird
[ownlogin] => URL der eigenen Loginseite
[toplist] => Anzahl der angezeigten User in der öffentlichten Topliste


setSettings:
Erwartet: Array mit den neuen Einstellungen, Username, SID (sonst Werte aus new Webkicks())
Rückgabe: -

15.10.2009: getRegisterLog überarbeitet. Bei Registrierungen am laufenden Tag wurden falsche Werte ermittelt.
02.01.2010: Generell überarbeitet, für PHP6 tauglich gemacht, Erkennung Chatanmeldedatum hinzugefügt (für Details des HA)
07.01.2010: getDeletelog, getBefehlslog, getFehlzugriffe, chatStatus und checkGuestLogin hinzugefügt
18.01.2010: getKickedUsers, getBannedUsers, getMutedUsers und getLockedUsers hinzugefügt
20.01.2010: getReplacers() hinzugefügt
28.01.2010: getToplist() hinzugefügt
30.01.2010: Thema als »Wichtig« markiert by WKteam
04.03.2010: Speicherung der Abfrageergebnisse zur Lastreduzierung, neues Beispiel, Verlagerung auf eigenen Webspace
11.07.2010: getWerbebefreiung() ergänzt
01.10.2011: getExtendedOnlinelist() ergänzt
30.10.2011: getSettings() und setSettings() hinzugefügt
24.03.2012: getDetails() gefixt
Zuletzt geändert von Linus am 24.03.2012, 18:49, insgesamt 15-mal geändert.

Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von Linus » 02.01.2010, 19:49

Anleitung zur Benutzung

Sollte die API auf eurem Webspace lauffähig sein (s. Eröffnungsbeitrag), müsst ihr eine neue Datei anlegen, die mit .php endet. Diese sollte zunächst so aussehen:
Script:Zeigen

Code: Alles auswählen

<?php
require("api.php"); //Die API-Datei, URL ggfs. anpassen
$chat=new Webkicks("CID", SERVERNUMMER, "ADMINNAME", "ADMINPASSWORT", "ADMINSID"); //ADMINPASSWORT kann weggelassen werden wenn die SID angegeben ist!
?>
Auf dieser Basis könnt ihr nun alles mögliche anstellen was die API euch ermöglicht. Ein paar Beispiel zeige ich euch hier.

Alle User samt Gesamtzahl anzeigen
Script:Zeigen

Code: Alles auswählen

<?php
require("api.php"); //Die API-Datei, URL ggfs. anpassen
$chat=new Webkicks("CID", SERVERNUMMER, "ADMINNAME", "ADMINPASSWORT", "ADMINSID"); //ADMINPASSWORT kann weggelassen werden wenn die SID angegeben ist!
$registrierte=$chat->getAllUsers();
$anzahl=count($registrierte);
echo "Wir haben ".$anzahl." registrierte Benutzer!<br><br>\n\nListe:<br>\n".implode("<br>\n",$registrierte);
?>
Details eines einzelnen Users anzeigen
(Mail, ICQ und IP habe ich vorsorglich zensiert ;))
Script:Zeigen

Code: Alles auswählen

<?php
require("api.php"); //Die API-Datei, URL ggfs. anpassen
$chat=new Webkicks("CID", SERVERNUMMER, "ADMINNAME", "ADMINPASSWORT", "ADMINSID"); //ADMINPASSWORT kann weggelassen werden wenn die SID angegeben ist!
$user="Linus";
$details=$chat->getDetails($user);
echo "Details für ".$user.":<br><br>";
echo "Alias: ".$details["alias"]."<br>";
echo "Mail: ".$details["mail"]."<br>";
echo "ICQ: ".$details["uin"]."<br>";
echo "Userlevel: ".$details["level"]."<br>";
echo "Status: ".$details["status"]."<br>";
echo "Letzte IP: ".$details["ip"]."<br>";
echo "Angemeldet am: ".$details["registered"]."<br>";
echo "Letzter Login: ".$details["lastlogin"]."<br>";
echo "Homepage: ".$details["hp"]."<br>";
echo "Logins: ".$details["logins"]."<br>";
echo "Loginnachricht: ".$details["loginm"]."<br>";
echo "Logoutnachricht ".$details["logoutm"]."<br>";
echo "Profillink: <a href='".$details["profil"]."'>Klick!</a><br>";
echo "Newsletterempfang :".$details["newsletter"]."<br>";
?>
Eine Onlineliste
Script:Zeigen

Code: Alles auswählen

<?php
require("api.php"); //Die API-Datei, URL ggfs. anpassen
$chat=new Webkicks("CID", SERVERNUMMER, "ADMINNAME", "ADMINPASSWORT", "ADMINSID"); //ADMINPASSWORT kann weggelassen werden wenn die SID angegeben ist!
$online=$chat->getOnlineUsers();
$online_im_Hauptchat=$chat->getOnlineUsers("Hauptchat");
$anzahl=count($online);
$anzahl_im_Hauptchat=count($online_im_Hauptchat);
$wort=($anzahl==1)?"ist":"sind";
$wort2=($anzahl_im_Hauptchat==1)?"befindet":"befinden";
echo "Momentan ".$wort." ".$anzahl." Benutzer online!<br>Liste:<br>".implode("<br>",$online);
echo "<br><br>Davon ".$wort2." sich ".$anzahl_im_Hauptchat." Benutzer im Hauptchat!<br>Liste:<br>".implode("<br>",$online_im_Hauptchat);
?>
Eine Teamliste
Script:Zeigen

Code: Alles auswählen

<?php
require("api.php"); //Die API-Datei, URL ggfs. anpassen
$chat=new Webkicks("CID", SERVERNUMMER, "ADMINNAME", "ADMINPASSWORT", "ADMINSID"); //ADMINPASSWORT kann weggelassen werden wenn die SID angegeben ist!
$team=$chat->getTeam();
$mods=$team[0];
$admins=$team[1];
$anzahl_mods=count($mods);
$anzahl_admins=count($admins);
$anzahl_team=$anzahl_mods+$anzahl_admins;
echo "<div align='center'>Unser Team besteht aus ".$anzahl_team." Leuten, davon ".$anzahl_admins." Admins und ".$anzahl_mods." Mods!";
echo "<br>Liste:";
echo "<br><font color='#FF0000'>Admins:</font>";
foreach ($admins AS $admin){
	echo "<div style='font-weight:bold;color:#F00'>".$admin."</div>";
}
echo "<hr>";
echo "<font color='#006600'>Mods:</font>";
foreach ($mods AS $mod){
	echo "<div style='font-weight:bold;color:#060'>".$mod."</div>";
}
echo "</div>";
?>
Ist ein User online?
Script:Zeigen

Code: Alles auswählen

<?php
require("api.php"); //Die API-Datei, URL ggfs. anpassen
$chat=new Webkicks("CID", SERVERNUMMER, "ADMINNAME", "ADMINPASSWORT", "ADMINSID"); //ADMINPASSWORT kann weggelassen werden wenn die SID angegeben ist!
$username=$_GET['user'];
if (in_array(strtolower($username),array_map("strtolower",$chat->getOnlineUsers()))){
	$status = "eingeloggt";
}else{
	$status = "nicht eingeloggt";
}
if (in_array(strtolower($username),array_map("strtolower",$chat->getAllUsers()))){
	$rang = "registriert";
}else{
	$rang = "nicht angemeldet";
}
echo "$username ist $rang und $status!";
?>
Den Gastzugang schließen
Script:Zeigen

Code: Alles auswählen

<?php
require("api.php"); //Die API-Datei, URL ggfs. anpassen
$chat=new Webkicks("CID", SERVERNUMMER, "ADMINNAME", "ADMINPASSWORT", "ADMINSID"); //ADMINPASSWORT kann weggelassen werden wenn die SID angegeben ist!
$chat->setSettings(array('gz' => false));
User einloggen und etwas schreiben lassen (keine Demo!)
Script:Zeigen

Code: Alles auswählen

<?php
require("api.php"); //Die API-Datei, URL ggfs. anpassen
$chat=new Webkicks("CID", SERVERNUMMER, "ADMINNAME", "ADMINPASSWORT", "ADMINSID"); //ADMINPASSWORT kann weggelassen werden wenn die SID angegeben ist!
$chat->login();
sleep(1);
$chat->sendeText("Ich bin eingeloggt!");
sleep(1);
$chat->logout();
?>
Wichtig ist hier, das PASSWORT anzugeben, die SID alleine reicht nicht! Das sleep(1) ist nötig, weil man sonst nicht sendet. Das zweite ist zwar nicht nötig, aber sicherheitshalber (langsamere Server könnten zum senden auch länger brauchen) dennoch enthalten.

Diese Funktionen dürften wohl die am häufigsten verwendeten sein, sollte jemand noch andere Beispiele haben, kann er sie ja gerne hier posten :)
Zuletzt geändert von Linus am 17.02.2010, 15:35, insgesamt 3-mal geändert.

Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von Linus » 07.01.2010, 16:48

Es gab ein Update, das folgende Änderungen mit sich brachte:

- neben getRegisterlog() gibt es nun getDeletelog(), getFehlzugriffe() und getBefehlslog(), die Namen sollten selbsterklärend sein, ansonsten s. Referenz im ersten Post :)
- chatStatus() und checkGuestLogin() wurden hinzugefügt, chatStatus() ermittelt ob der Chat erreichbar ist und nicht vom Administrator deaktiviert wurde, checkGuestLogin() prüft, ob der Gastzugang aktiviert ist

Evtl. aufkommende Wünsche einfach hier posten, wir schauen dann was sich machen lässt :)

Tortimer
Beiträge: 10
Registriert: 25.08.2008, 17:51

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von Tortimer » 10.01.2010, 21:54

kann man damit auch für eine eigene Registierungsseite abfragen ob man die registrierung deaktiviert via adminbereich oder nicht ? hab da momentan nichts gefunden. wäre schön, wenn das auch dabei wäre.

Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von Linus » 10.01.2010, 22:27

Ist erledigt, den Code aus dem ersten Beitrag neu kopieren.

Die Funktion heißt checkAnmeldung()

Viel Spaß damit :)

Tortimer
Beiträge: 10
Registriert: 25.08.2008, 17:51

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von Tortimer » 10.01.2010, 22:33

wie muss ich jetzt als nächstes vorgehn, momentan hab ich folgenden code:

Code: Alles auswählen

$seite=$chat->checkAnmeldung();
if ($seite) { echo "Registrierung offen";
bei registrierung offen soll ja das formular kommen. wie mach ich das so wenn die registrierung gesperrt ist, das da dann mein text kommt den ich möchte.

Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von Linus » 10.01.2010, 22:39

Entweder mit einem ELSE:

Code: Alles auswählen

if ($seite){CODE WENN AKTIVIERT}else{CODE WENN DEAKTIVIERT}
Oder mit einem !:

Code: Alles auswählen

if (!$seite){CODE WENN DEAKTIVIERT}

Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von Linus » 18.01.2010, 18:34

Mal wieder ein Update:

Die Funktionen getKickedUsers, getBannedUsers, getMutedUsers und getLockedUsers sind hinzugekommen. Da es evtl. verwirrend sein könnte mit dem aufbau des Arrays von getBannedUsers, hier ein Beispiel:

Code: Alles auswählen

Array
(
    [0] => Array
        (
            [0] => 18.01.2010, 17:11
            [1] => 9*.*1*.1*7.5*
            [2] => T**t*
        )

    [1] => Array
        (
            [0] => 18.01.2010, 17:32
            [1] => *9.2**.18*.1*8
            [2] => F***c**e
        )

    [2] => Array
        (
            [0] => 18.01.2010, 18:32
            [1] => *7.*8*.22*.9*
            [2] => ****r
        )

)
Habs mal unkenntlich gemacht, aber so würde es bei 3 Usern aussehen :)

1. FC Keller
Moderator
Beiträge: 866
Registriert: 04.07.2004, 17:10
Wohnort: heimat:// Thüringen.Deutschland.eu/ Zeulenroda
Kontaktdaten:

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von 1. FC Keller » 18.01.2010, 19:01

Nicht schlecht. Dann werde ich das im Mod-Menü auf wktools dann doch gleich mal nachrüsten :-)

Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von Linus » 19.01.2010, 18:35

Habe noch einen Fehler in getBannedUsers korrigiert, der, falls kein User gebannt war, einfach nichts zurückgegeben hat. Nun gibt die Funktion in diesem Fall ein leeres Array zurück, wie die anderen getBlaUsers()-Funktionen.

Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von Linus » 20.01.2010, 20:38

Im Zuge des heutigen Updates kam die Funktion getReplacers() hinzu. Zudem wurde der Code nun aus dem ersten Post entfernt und bei nopaste hinterlegt, um hier Platz zu sparen. Viel Spaß damit ;)

Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von Linus » 28.01.2010, 16:14

Das heutige Update bringt die Funktion getToplist in die API. Diese liest die Topliste im Admin-Menü aus und gibt ein Array der Form array("Name" => "Zeit", "Name2" => "Zeit2"); zurück.

masterronnow
Beiträge: 182
Registriert: 18.04.2006, 18:33
Wohnort: Berlin

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von masterronnow » 22.02.2010, 16:20

Hallo,

aus irgendwelchen Gründen funktioniert bei mir die API des Chats nicht mehr. Warum nicht?

Mehrere Scripts im Chat haben auch versagt?

Was ist los?

Viele Grüße
masterronnow

Benutzeravatar
Linus
Moderator
Beiträge: 1124
Registriert: 14.02.2005, 20:31
Wohnort: NRW
Kontaktdaten:

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von Linus » 22.02.2010, 16:24

Was heißt "sie funktioniert nicht mehr"? Bekommst du ne Fehlermeldung? Welche Funktionen funktionieren nicht mehr?

masterronnow
Beiträge: 182
Registriert: 18.04.2006, 18:33
Wohnort: Berlin

Re: Inoffizielle API für WKchats

Ungelesener Beitrag von masterronnow » 22.02.2010, 16:25

Das mit dem Ausgeben der Chatnamen funktioniert nicht mehr.

Ich bekomme keine Fehlermeldung. Es werden einfach nur die Namen nicht angezeigt.

Gruß
masterronnow

Gesperrt

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste