MyBB.de Forum
Wer hat mich in der Buddyliste? - Druckversion

+- MyBB.de Forum (https://www.mybb.de/forum)
+-- Forum: Anpassungen (https://www.mybb.de/forum/forum-47.html)
+--- Forum: Plugin-Ideen und -Wünsche (https://www.mybb.de/forum/forum-73.html)
+--- Thema: Wer hat mich in der Buddyliste? (/thread-22232.html)

Seiten: Seiten: 1 2


Wer hat mich in der Buddyliste? - Olaf_A - 04.04.2010

Ich habe gesucht und nichts gefunden, daher eine Idee oder auch ein Wunsch von mir:

Wäre es möglich eine Seite zu schreiben, woüber man herausfindet, wo ich in der Buddyliste stehe bzw. wer mich als Freund hinzugefügt hat?


RE: Wer hat mich in der Buddyliste? - querschlaeger - 04.04.2010

Profile Buddies kann zumindest eine PM oder E-Mail versenden, wenn dich jemand in seine Liste aufnimmt. Vielleicht ist das für Anfang erst einmal ok? In Zukunft wollte ich das Plugin noch so erweitern, wie du es angefragt hattest - nicht als eigene Seite, sondern direkt als Box, in deinem Profil (hatte nur keine Zeit bis jetzt).


RE: Wer hat mich in der Buddyliste? - Olaf_A - 04.04.2010

Das Profile Buddies Plugin nutze ich bereits. Das funktioniert klasse. Dennoch wäre eine Liste der Leute die einen als Buddy aufgenommen haben sehr hilfreich.

Meine Mitglieder Seiten habe ich zumindestens so editiert, daß man die eigenen Buddys aufgezeigt bekommt. Allerdings wird hier nur die UID angezeigt. Auch hier hätte ich gerne eine Lösung, daß die Mitgliedsnamen angezeigt werden. Selbiges gilt auch für die Referer. Als Anhang mal meine Mitgliederliste mit meinen Daten:

   

Hat jemand eine Idee wie man das realisieren könnte?


RE: Wer hat mich in der Buddyliste? - Jockl - 05.04.2010

Ich finde die Idee ganz interessant, auch wenn ich selbst nicht den Bedarf dafür habe. Aber ich habe mal (laienhaft) versucht, mich des Problems zu nähern.

Mit folgendem Code bekomme ich alle Freundeslisten angezeigt, die von den Usern angelegt wurden.
PHP-Code:
<?php
define
("IN_MYBB"1);
 
require(
"global.php");
global 
$db;
//add_breadcrumb("Check Buddylist");

$query $db->query("SELECT uid, buddylist FROM ".TABLE_PREFIX."users WHERE buddylist != '' ORDER BY uid ASC");

// nur zum Testen
echo "Meine User-ID lautet:&nbsp;".$mybb->user['uid'];
echo 
"<br /><br /><br />";
// Test Ende

while($check $db->fetch_array($query))
{
    if(
in_array($mybb->user['uid'], $check['buddylist'])){
        echo 
$check['uid']."&nbsp;||&nbsp;".$check['buddylist'];
        echo 
"<br />";
    }
}

//eval("\$checkbuddylist = \"".$templates->get("checkbuddylist")."\";");
//output_page($checkbuddylist);
?>
Lasse ich die if-Anweisung weg und belasse nur die echo-Anweisungen in der while-Schleife, wird die komplette Liste aller vorhandenen Buddylists in Abhängigkeit der zugehörigen User-IDs angezeigt. Nun dachte ich, man könnte mit der Fkt. "in_array" überprüfen, in welcher Buddylist "meine" uid vorkommt, aber irgendwo steckt da ein Fehler drin. Die Seite spuckt dann nur meine eigene ID aus. Blush

Aus diesem Grund habe ich auch noch nicht mit der Erstellung von Templates angefangen. Wink

Würde mich interessieren, wie eine schlussendliche PHP-Lösung aussehen könnte.


RE: Wer hat mich in der Buddyliste? - Olaf_A - 05.04.2010

Vielen Dank schonmal für deinen Versuch. Ich werde mit deiner Version mal rumspielen und wäre sehr erfreut, wenn der ein oder andere Plugin Profi mitwirken würde. Wenn wir eine Lösung für die Buddyliste finden sollte diese dann eigentlich auch auf die Referer anwendbar sein. Somit hätte man 2 neue Seiten bzw. Funktionen mehr, die der Übersichtlichkeit dienen.


RE: Wer hat mich in der Buddyliste? - doylecc - 06.04.2010

Ich habe auch ein bisschen an Jockls Version rumgebastelt. Wink

Mit diesem Code werden mir die User angezeigt, bei denen ich in der Buddyliste stehe:
PHP-Code:
<?php
define
("IN_MYBB"1);
 
require(
"global.php");
global 
$db;

echo 
"<b>Ich bin in der Buddyliste von:</b>";
echo 
"<br /><ul>";

$uid intval($mybb->user['uid']);

if(
$uid !=0
{
 
$query $db->query("SELECT * FROM ".TABLE_PREFIX."users WHERE buddylist !=''");
 
$check "";
 
$i 0;

 while(
$check $db->fetch_array($query))
 {
      
$buddy[$i]['buddylist'] = explode(',',$check['buddylist']);
      if(
in_array($uid,$buddy[$i]['buddylist']))
      {
       
$buddy[$i]['username'] = $check['username'];
      
       echo 
"<li>".$buddy[$i]['username']."</li>";
      }
      
$i++;    
 }
 echo 
"</ul>";  
}
else
{
 echo 
"Kein Eintrag!";


?>



RE: Wer hat mich in der Buddyliste? - querschlaeger - 06.04.2010

Hallo,

PHP-Code:
$query $db->query("SELECT * FROM ".TABLE_PREFIX."users"); 

Das würde ich eher so schreiben:

PHP-Code:
$query=$db->simple_select('users','buddylist','buddylist!=""'); 

Jetzt weiß ich auch wieder, warum ich das nicht in Profile Buddies eingebaut hatte. Das ganze ich nicht sehr performant. Bei einem Forum mit überschaubarer Benutzeranzahl mag das noch gehen, aber bei größeren Foren ist eine while-Schleife über eine unbekannte Anzahl an Arrays extrem unpraktikabel.


RE: Wer hat mich in der Buddyliste? - Jockl - 06.04.2010

(06.04.2010, 10:11)querschlaeger schrieb:
PHP-Code:
$query $db->query("SELECT * FROM ".TABLE_PREFIX."users WHERE buddylist !=''"); 
Das würde ich eher so schreiben:
PHP-Code:
$query=$db->simple_select('users','buddylist','buddylist!=""'); 
Gibt es dafür einen Grund, querschlaeger? Ist das schneller?

(06.04.2010, 10:11)querschlaeger schrieb: Bei einem Forum mit überschaubarer Benutzeranzahl mag das noch gehen, aber bei größeren Foren ist eine while-Schleife über eine unbekannte Anzahl an Arrays extrem unpraktikabel.
Gutes Argument! Smile

OT
Bei so einer Liste bin ich auch generell hin und her gerissen. Stelle mir gerade vor, dass die User dann ständig in die Liste "spitzen" und nachsehen, wer sie denn nun als "Freund" gelinkt hat oder nicht..... Rolleyes
...aber darum geht es ja hier nicht.
OT Ende


RE: Wer hat mich in der Buddyliste? - querschlaeger - 06.04.2010

(06.04.2010, 21:36)Jockl schrieb:
(06.04.2010, 10:11)querschlaeger schrieb:
PHP-Code:
$query $db->query("SELECT * FROM ".TABLE_PREFIX."users WHERE buddylist !=''"); 
Das würde ich eher so schreiben:
PHP-Code:
$query=$db->simple_select('users','buddylist','buddylist!=""'); 
Gibt es dafür einen Grund, querschlaeger? Ist das schneller?

Das ist nicht schneller, aber MyBB bietet nunmal einen Datenbankabstraktionslayer den man auch benutzen sollte. Erstens erspart man sich etwas Arbeit, zweitens übernimmt MyBB alles (im Optimalfall sogar die Fehlerbehandlung) und drittens ist das Konzept kompatibel mit allen Datenbanktypen, welche MyBB versteht (also nicht nur MySQL).

Ich könnte immer verrückt werden, wenn ich Plugins sehe, bei denen die Autoren Funktionen als auch Datenbankzugriffe "selbst schreiben", obwohl MyBB von Haus schon eigene Dinge mitbringt, welche man auch nutzen sollte... Bestes Beispiel sind hardcodierte Links, obwohl MyBB Funktionen bietet um interne Links zu bauen. Dann schreien die ersten nämlich, warum der Link nicht SEO-kompatibel sei.. tja, hätte der Autor mal lieber die MyBB internen Funktionen benutzt... Aber das wird jetzt zu OT. Big Grin


RE: Wer hat mich in der Buddyliste? - Jockl - 06.04.2010

(06.04.2010, 21:45)querschlaeger schrieb: ....zweitens übernimmt MyBB alles (im Optimalfall sogar die Fehlerbehandlung) und drittens ist das Konzept kompatibel mit allen Datenbanktypen, welche MyBB versteht (also nicht nur MySQL).
Daran hatte ich nicht gedacht. Danke! Smile