vBulletin API

08/05/2013 09:21 al.Jay#1
Hallo ePvPler,

ich möchte für eine kleine Webseite von mir die Anzahl der Posts eines Users anhand seines Usernamens oder seiner UserID "auslesen". Ich habe noch nie eine API genutzt und zwar das Konzept dieser verstanden, kann die vBulletin 4 Dokumentation aber nicht nachvollziehen. Jede Information die mich weiterbringt nehme ich gerne an.

mfG
08/09/2013 15:45 マルコ#2
2 Möglichkeiten: Entweder die vB Datenbank anschaun und selbst ne kleine Query schreiben, oder sagen, was du an dem API nicht verstehst.
08/09/2013 16:24 al.Jay#3
Also dann Nummero 2:

Ich habe so weit verstanden dass ich an bestimmte php Dateien Anfragen senden kann über die URL Zeile und dann eine Ausgabe in einem definierten Format erhalte (z.B. xml).
Ich habe die vBulletin API versucht zu lesen, aber leider nicht verstanden wie ich gezielt Userinformationen z.B. anhand des Nicknamens erhalten kann. Ich weiss auch nicht welche php Datei dafür zuständig ist.

mfG
08/10/2013 17:03 Muddy Waters#4
Mal vorweg: Ich arbeite mit vBulletin 3.8.x und kenne mich daher mit vB4 nicht direkt aus. Da ich aber nicht vermute, dass sich an den ganz grundsätzlichen Sachen sonderlich viel geändert hat, antworte ich einfach mal trotzdem.

Ich würde zunächst mal vermuten, dass ein Zugriff über die API nur per User-ID möglich ist. Ich denke du wirst es hier in der Tat zu Fuß machen müssen, sprich du musst ein eigenes kleines Script schreiben, oder das ganze als Plugin für ein bestehendes Script auslegen (sofern vB4 noch Plugins unterstützt).

In vB 3.8.x sähe die für deinen Zweck notwendige Query wie folgt aus:
PHP Code:
$vbulletin->input->clean_array_gpc('r', array(
    
'username'  => TYPE_STR
));

if(!
$vbulletin->GPC['username'])
    eval(
standard_error(fetch_error('invalid_user_specified')));

$userinfo $db->query_first("
    SELECT *
    FROM " 
TABLE_PREFIX "user
    WHERE username = '
{$db->escape_string($vbulletin->GPC['username'])}'
"
);

if(!
$userinfo)
    eval(
standard_error(fetch_error('invalid_user_specified'))); 
Ich würde vermuten, dass du das in vB4 genauso machen kannst. Beachte, dass das nur ein Anschauungsbeispiel ist. Es fehlt dabei völlig eine Überprüfung der Berechtigungen und gerade wenn du das ganze hinterher ausgeben möchtest, solltest du auf keinen Fall einfach alle Spalten der user Tabelle auswählen, weil du sonst Spalten ausgibst, die nicht zur Ausgabe vorgesehen sind (z.B. Passwort-Hashes).