7. Technische Informationen zum Gruppenmaster

Datei: /apps/groups.c

Der Gruppenmaster verwendet als Datenstruktur ein Array.
Abgelegt werden die Gruppendefinitionen in der Variablen groupdefs.
Ein einzelnes Arrayelement besteht wiederum aus einem Array:
   ({"Name", ({Admins}), ({Members}), ({SubGroups})
dem Namen der Gruppe, den Admins der Gruppe, den Mitgliedern der
Gruppe und den Untergruppen der Gruppe.
Die Untergruppen sind wiederum genau so aufgebaut wie die
Hauptgruppen.

Gruppen können dabei auch andere Gruppen beinhalten. So beinhaltet
beispielsweise die Gruppe Vaniorh standardmäßig die beiden Untergruppen
Vaniorh:DL und Vaniorh:DH. Gruppen können beliebig tief werden.

Die Standardgruppen werden von der Funktion compute_standardgroups
berechnet, hier kann man sich sicher noch die eine oder andere ausdenken.
Die Standardgruppen sind "read only", können also nicht verändert
werden.

Die zentrale Gruppenveraenderungsfunktion ist die change_group - Funktion,
sie beinhaltet fast die ganze Gruppenverwaltungsfunktionalitaet.
Sie ist gut lesbar und gut kommentiert. Die anderen Gruppenfunktionen
greifen auf sie zu und sind selbst sehr knapp.

Interessant wirds schließlich bei der Gruppen Berechnung.
Diese geschieht "on demand", Gruppen werden also solange lediglich als
Gruppendefinitionen geführt, bis sie benötigt werden. Werden sie
benötigt, so werden sie ausgerechnet, vorher nicht.
Wurden sie berechnet, so werden sie gespeichert, sodass sie zur Verfügung
stehen. Erst, wenn an den Gruppen etwas geändert wird, müssen die
Gruppen wieder neu berechnet werden. Das werden sie dann ja aber auch
nur bei Bedarf.

Die einzelnen / anderen Funktionen sind eigentlich recht selbsterklärend.