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