[inhalt]
Projekt BISO 3 - Handbuch

Parameter-System

Architektur

Parameter sind applikationsweite Einstellungen, die in der Datenbank gespeichert und im PHP-Backend typsicher verwaltet werden.

Datenbankstruktur

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)

Beteiligte Klassen

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

ParamRegistry ist die einzige Quelle der Wahrheit für alle Parameter. Sie definiert für jeden Parameter:

Param-Zugriff

// 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();

Caching

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).

Neuen Parameter hinzufügen

  1. Eintrag in ParamRegistry::build() ergänzen:
    'mein_parameter' => self::def(
        key:    'mein_parameter',
        type:   ParamType::Bool,
        default: false,
        export: true,
    ),
    
  2. Passendes Feld in webroot/public/app/src/param/Model.js ergänzen (manueller Mirror).
  3. Bei Bedarf Widget in Form.js hinzufügen.

Eine DB-Migration ist nicht erforderlich — der Registry-Defaultwert gilt, bis der Admin speichert.

Zugriffsrechte (ACCESS_RIGHT)

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