anmerkung: contenido-cvs-45-2004-07-30

Gesperrt
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

anmerkung: contenido-cvs-45-2004-07-30

Beitrag von HerrB »

Ein paar Anmerkungen:

class.frontend.users.php:
In der Funktion create muss es

Code: Alles auswählen

global $client, $auth;
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

Code: Alles auswählen

$user = new FrontendUser
benutzt wird. Es funktioniert interessanterweise aber auch ohne, nun ja, bin kein PHP-Experte.

Gruß
HerrB
Zuletzt geändert von HerrB am Do 5. Aug 2004, 10:57, insgesamt 1-mal geändert.
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Re: anmerkung: contenido-cvs-45-2004-07-30

Beitrag 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).
HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag 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
timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag 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!
Gesperrt