Friend of a Friend
Geschrieben von Peter Rother • Samstag, 6. Juni 2009 • Kategorie: Klassen
Da ich zuerst zu faul war die Klasse selber zu schreiben, habe ich gewartet bis jemand meinem Wunsch nachkommt und diese Klasse auf PHP hates me vorstellt. Dies ist dann auch durch den Beitrag von Ludwig Ruderstaller in dem Beitrag Six Degrees of Separation (friend of a friend) geschehen. Leider konnte ich, wie nach anfänglicher Euphorie festgestellt, die Klasse für das von mir benötigte nicht einsetzen. Der Dijkstra-Algorithmus ist, wie ich finde, hier fehl am Platz. Trotzdem einen Dank an den Entwickler der Klasse Ludwig Ruderstaller, denn wir wissen ja alle, wie viel Arbeit eine vernünftige Klasse manchmal machen kann.
Aber da ich die Klasse jetzt für das was ich benötige neu geschrieben habe, möchte ich euch diese jetzt auch vorstellen. Da ich immer noch keinen vernünftigen Syntax Highlighter installiert habe, könnt ihr euch die Klasse momentan nur als Text File ansehen. Die Klasse ist aus meinem aktuellen Projekt Pokerwelt24, welches in Kürze in die offene Beta Phase gehen wird. Die Klasse ist deshalb auch nicht als Stand Alone angepasst. Mit ein Paar kleinen Änderungen solltet ihr die Klasse auch auf eure Wünsche anpassen können.
Hier ein Auszug der Methoden die Standardmäßig nicht von der Klasse benötigt werden:
private function getUniqueRequiredUsers($aUserPaths)
private function removeNotRequiredLoadIds()
private function loadRequiredUsers()
private function regenerateUserList($aUserList)
Ich benötige diese Methoden, um die entsprechenden User Objekte zu generieren und diese meiner Liste zuzuweisen.
Natürlich braucht ihr auch noch eine Verbindung zur Datenbank. In meiner Klasse passiert dies durch den Aufruf von:
parent::execute($sSelect);
Ich schätze aber mal, dass jeder von euch weiß, wie ihr eure Datenbank ansprechen müsst.
Eine kleine Feinheit hat der Query auch noch; es werden nur User Verbindungen gesucht, wobei eine Verbindung von zwei Usern auch bestätigt wurde. Dies wird in der Datenbank durch das Flag status und status2 bestimmt.
Hier folgt noch die Struktur der Datenbank und dann wünsche ich euch viel Spaß und Erfolg mit dieser Klasse.
CREATE TABLE `buddy_list` (
`ID` varchar(32) collate latin1_general_ci NOT NULL,
`USER_ID` varchar(32) collate latin1_general_ci NOT NULL,
`USER_ID_2` varchar(32) collate latin1_general_ci NOT NULL,
`STATUS` enum('a','r','w') collate latin1_general_ci NOT NULL COMMENT 'a = accepted, r = rejected, w = waiting',
`STATUS_2` enum('a','r','w') collate latin1_general_ci NOT NULL COMMENT 'a = accepted, r = rejected, w = waiting',
`CREATED` datetime NOT NULL,
PRIMARY KEY (`ID`),
KEY `USER_ID` (`USER_ID`),
KEY `USER_ID_2` (`USER_ID_2`)
)
Die Verknüpfung zur User Tabelle erfolgt über USER_ID für den der anfragt und USER_ID_2 für die Person, an die der Request geht.




2 Kommentare
Danke für trackback link.
hab versucht deine klasse zu verstehen, kannst du mal einen beispiel return von getQuery() posten ? Mir kommt vor du machst mehr queries als notwendig wären.
lg
Ludwig
ich werde spätestens am Wochenende mal den Return Wert hier einstellen, ist momentan ein bißchen Stressig.
Wäre aber super wenn man hier noch etwas optimieren könnte. Schon einmal Danke für den Hinweis.
Gruß
Peter
Kommentar schreiben