Inhaltsverzeichnis
Settings
Alle Einstellungen (bis auf die Verbindungsdaten und Angaben zur Datenbank) sind in der Datenbank an sich gespeichert. Somit ist es möglich das von mehreren unterschiedlichen Installationen des Programms auf ein und dieselben Einstellungen zugegriffen werden kann. (Nur die Einstellungen für die Datenbank müssen bei den jeweiligen Installationen identisch sein)
\todo Hier fällt mir gerade ein das scripte nicht im Installationsverzeichnis liegen sollten, da diese dann über alle Installationen verteilt auf denselben stand gehalten werden müssen. Resultat: Auch Scripte in die Datenbank! (like SAP)
Um einen simplen zugriff auf die Verschiedenen Daten zu geben existieren die beiden Klassen MVW_Settings_Program und MVW_Settings_User. Diese sind abgeleitet von der abstrakten Klasse MVW_Settings. Die Speicherung der Daten erfolgt in der Datenbank immer als reiner Text in einem separaten Feld. Die MVW_Settings Klasse bietet funktionen um die interne Darstellung in einen reinen Text zu Konvertieren der dann in der Datenbank gespeichert werden kann. Ausserdem sind funktionen enhalten die den aus der Datenbank gelesenen Text wieder in die interne Struktur umwandeln.
Es existieren Einstellungen die programmweit und für jeden Benutzer gelten, diese werden durch MVW_Settings_Program verwaltet. Einstellungen die die Benutzer selbst ändern dürfen, und somit das Programm auf ihre gegebenheiten anzupassen, werden von MVW_Settings_User verwaltet.
Benutzer Einstellungen können nur 1 mal existieren! Bei den Programm Einstellungen ist es möglich mehrere Einstellungs-Varianten in der Datenbank zu speichern und bei Bedarf die eine oder andere zu aktivieren (es kann aber nur 1 zur Zeit aktiv sein).
Wenn Programm-Einstellungen geändert werden sind diese bei den Benutzern erst nach einem Neustart des Programms aktiv!
Auf Einstellungen kann über die Funktionen MVW_Settings::set() und MVW_Settings::get() zugriffen werden (siehe dortige Dokumentation für Details).
Struktureller Aufbau des user-Objects
Jeder User hat persönliche Einstellungen die er auch verändern kann. Die Rechte die ein User besitzt werden aus der Datenbank nur gelesen und in dem User-Object als readOnly zur Verfügung gestellt. Wenn die Rechte eines Users geändert werden muss dieser das Programm neu starten, damit die rechte neu gelesen werden.
Ein Recht ist immer in dem „MVW_right“-Object definiert.
Rechte können auch zu RechteGruppen zusammengefasst werden, diese RechteGruppen können dann entweder einem User direkt oder einer UserGruppe zugeordnet werden. Ein User kann in mehreren UserGruppen vertreten sein.
Ein doppeltes Vorhanden sein von Rechten kann auch vorkommen. Wenn z.B. ein Recht sowohl dem User direkt als auch über eine RechteGruppe oder einer UserGruppe gegeben ist. Sobald ein Recht ein mal vorhanden ist darf des User die Aktion ausführen.
In dem User Object muss eine Funktion „hasRight(right)“ vorhanden sein, diese gibt true zurück wenn das erforderliche Recht in den User zugeteilten Rechten vorhanden ist.
ToDo / Beachten
die Klassen für MVW_Right_Group und MVW_User_Group ähneln sich in bestimmten Teilen, hierfür evt. eine Basisklasse entwerfen wovon die anderen beiden dann abgeleitet werden können.
MVW_User_Rights wird wohl auch ähnlich werden!