Parameter sind applikationsweite Einstellungen, die in der Datenbank gespeichert und im PHP-Backend typsicher verwaltet werden.
Die Tabelle param speichert jeden Parameter als einzelne Zeile:
| Spalte | Typ | Beschreibung |
|---|---|---|
param_key |
VARCHAR (PK) | Eindeutiger Schlüssel des Parameters |
value |
TEXT | Serialisierter Wert (immer als Text) |
| Klasse | Datei | Aufgabe |
|---|---|---|
ParamRegistry |
webroot/backend/logic/ParamRegistry.php |
Einzige Quelle aller Parameter-Definitionen |
ParamDef |
webroot/backend/logic/ParamDef.php |
Readonly-Objekt: Typ, Default, Schreibrecht, Export-Flag |
ParamType |
webroot/backend/logic/ParamType.php |
Enum für PHP-Typen; serialisiert und castet Werte |
Param |
webroot/backend/logic/Param.php |
Lese-/Schreib-Zugriff; Caching |
ParamEntity |
webroot/backend/entities/ParamEntity.php |
ORM-Entity für einen einzelnen param-Datensatz |
ParamRegistry ist die einzige Quelle der Wahrheit für alle Parameter. Sie definiert für jeden Parameter:
param_key): identisch mit dem ehemaligen Spaltennamen der alten Wide-TableParamType): String, Int, Float, Bool, Date, Time, Array, JsonwriteRestriction): null = jeder mit Paramter-Bearbeitungsrecht; RESTRICT_SYSADMIN = nur SysadminexportToFrontendSession): true = Wert wird beim Login an das Frontend übergeben// Lesen (gibt typisierten PHP-Wert zurück)
$value = Param::get('pw_min_length'); // int
$value = Param::get('mit_termin_email'); // bool
// Schreiben (in-memory + Cache-Aktualisierung)
Param::set('pw_min_length', 12);
// Persistieren (alle Werte per UPSERT in die DB schreiben)
Param::store();
Param cached alle Werte als typisierten Array unter dem festen Cache-Key param_registry_values.
Der Cache wird bei Param::set() aktualisiert und bei Param::store() invalidiert (anschliessend Reload aus DB).
ParamRegistry::build() ergänzen:'mein_parameter' => self::def(
key: 'mein_parameter',
type: ParamType::Bool,
default: false,
export: true,
),
webroot/public/app/src/param/Model.js ergänzen (manueller Mirror).Form.js hinzufügen.Eine DB-Migration ist nicht erforderlich — der Registry-Defaultwert gilt, bis der Admin speichert.
Die drei Parameter person_erstellen_alle_recht, institution_erstellen_alle_recht und bf_termin_erstellen_alle_recht steuern, welche Benutzerrolle Datensätze anlegen darf. Die Vergleichskonstanten sind in ParamRegistry definiert:
| Konstante | Wert | Bedeutung |
|---|---|---|
ParamRegistry::ACCESS_RIGHT_ALL_DEFAULT |
0 |
Keine Einschränkung |
ParamRegistry::ACCESS_RIGHT_ALL_READ |
1 |
Lesende Rolle genügt |
ParamRegistry::ACCESS_RIGHT_ALL_WRITE |
2 |
Schreibende Rolle nötig |