Seite 1 von 1
anmerkung: contenido-cvs-45-2004-07-30
Verfasst: Do 5. Aug 2004, 09:00
von HerrB
Ein paar Anmerkungen:
class.frontend.users.php:
In der Funktion create muss es
heißen, sonst wird der Autor bei der Erstellung nicht eingetragen.
class.frontend.groups.php:
In der Funktion create zum Erstellen von Gruppenmitgliedern (nicht der Gruppe!) dürfte global $client; überflüssig sein, da der Wert IMHO nicht weiter verwendet wird (für die Eintragung eines FrontendUsers in eine FrontendGroup wird nur die ID der Gruppe und des Users benötigt).
Außerdem fehlt IMHO am Anfang der Datei ein 'cInclude("classes", "class.frontend.users.php");', da für die Funktion 'getUsersInGroup' die Klasse in
benutzt wird. Es funktioniert interessanterweise aber auch ohne, nun ja, bin
kein PHP-Experte.
Gruß
HerrB
Re: anmerkung: contenido-cvs-45-2004-07-30
Verfasst: Do 5. Aug 2004, 10:31
von timo
Habe beides nachgetragen.
Das cInclude wird nicht benötigt, da die Frontend-Gruppen schon vorher included werden (in der main.php glaube ich).
Verfasst: Do 26. Aug 2004, 17:24
von HerrB
Noch ein paar Anmerkungen (ist zwar nicht mehr der angegebene Snapshot, aber die Fehler sind meines Wissens noch drin):
In beiden Klassen wird beim Löschen von Elementen (Nutzer oder Nutzergruppen) nicht berücksichtigt, ob die Elemente miteinander verknüpft sind. D.h. das Löschen eines Nutzers, der in einer Gruppe war, hinterlässt eine leere Zeile in der Gruppe, die man nicht löschen kann. Das Löschen einer Gruppe hinterlässt Datenschrott in der Datenbank.
class.frontend.users.php:
Folgende Zeilen unter der Create-Methode der FrontendUserCollection ergänzen:
Code: Alles auswählen
/*
* Overridden delete method to remove user from groupmember table
* before deleting user
*
* @param $itemID int specifies the frontend user
*/
function delete ($itemID)
{
$associations = New FrontendGroupMemberCollection;
$associations->select("idfrontenduser = '$itemID'");
while ($item = $associations->next())
{
$associations->delete($item->get("idfrontendgroupmember"));
}
parent::delete($itemID);
}
class.frontend.groups.php:
Folgende Zeilen unter der Create-Methode der GroupCollection ergänzen:
Code: Alles auswählen
/*
* Overridden delete method to remove groups from groupmember table
* before deleting group
*
* @param $itemID int specifies the frontend user group
*/
function delete ($itemID)
{
$associations = New FrontendGroupMemberCollection;
$associations->select("idfrontendgroup = '$itemID'");
while ($item = $associations->next())
{
$associations->delete($item->get("idfrontendgroupmember"));
}
parent::delete($itemID);
}
Bei den Tests hatte PHP nix dagegen, dass bei class.frontend.groups.php eine Klasse aufgerufen wird, die eigentlich erst danach definiert wird. Die Lösung hat den Vorteil, dass der Code in den includes nicht verändert werden muss...
Klient und Sprache müssen meines Erachtens nicht berücksichtigt werden, da idfrontenduser und idfrontengroup eindeutig sein müssten.
Gruß
HerrB
Verfasst: Fr 14. Jan 2005, 18:49
von timo
So, habe ich eingebaut.
PHP meckert nicht, da zu dem Zeitpunkt, an dem die Methoden aufgerufen werden, die Klassen ja definiert sind. Von daher alles richtig und schön sauber!