Desöfteren kann es passieren, dass man neue Einstellungen für bestimmte Module braucht. Diese werden in der Regel dann in den Organisationseinstellungen gepflegt. Damit das Hinzufügen neuer Einstellungen nicht allzu mühselig wird, haben wir einen Mechanismus entwickelt mit dem dies relativ zügig geht.
Damit die Variable auch bei einer Neuinstallation mit einem Default-Wert vorhanden ist, muss ein entsprechender Eintrag in die adm_install/scripts/preferences.php dem Array $orga_preferences hinzugefügt werden. Bei der Bezeichnung der Variablen sollte man darauf achten, dass am Anfang der Modulname steht in dem die Variable benutzt wird und das der Name möglichst sprechend ist z.B. profile_show_map_link. Dadurch ist später im Code klarer, was die Variable macht und wofür sie gedacht ist.
Benutzer, die Admidio updaten, erhalten auch automatisch die Einstellung aus der preferences.php. Möchte man allerdings hier andere Default-Parameter setzen (um z.B. eine bisherige Funktionsweise beizubehalten), muss in der entsprechenden upd_x_x_conv.php-Datei ein SQL-Eintrag angelegt werden. Ein Beispiel gibt es in upd_1_3_conv.php Zeile 56 - 102. Falls es noch keine Einträge im aktuellen Script gibt, muss die Schleife über alle Organisationen auch mit kopiert werden !
Im Code kann man folgendermaßen auf die neue Einstellung neue_variable zugreifen:
$gPreferences["neue_variable"]
Nicht vergessen sollte man natürlich die Einstellung noch im Organisationsmodul zu integrieren. Hier muss man einfach ein Feld anlegen, über den der Wert dann gepflegt wird. Wichtig ist hierbei, dass der Name des Feldes gleich dem Namen der Einstellung ist, ansonsten funktioniert das Auslesen und Zurückschreiben nicht. Handelt es sich bei dem eingefügten Feld um eine Checkbox, so muss sie noch in der Datei organization_function.php in den Array $checkboxes eingetragen werden.
Standardwerte oder Beispiele werden am das Ende des Beschreibungstextes, nach dem Punkt des letzten Satzes, in Klammern angegeben. (Stdandard: xyzEINHEIT) / (Beispiel: ksjdgfkjhsd)
Möchte ich nur eine neue Einstellung hinzufügen um etwas zu testen, so kann ich diese erst einmal direkt in die Datenbank über PhpMyAdmin oder Mysql-Query-Browser tun. Hier muss man nur auf die entsprechende Orga-Id achten und der Variablen einen sinnvollen Namen (z.B. 'test_variable') und Startwert ('Test') geben.
Schon jetzt kann ich in den Scripten mit folgendem Code arbeiten:
echo $gPreferences["test_variable"]; Ausgabe: Test
Weiter Einrichtungen sind für die Benutzung neuer Variablen nicht nötig. Die Variable wird automatisch mit gespeichert und aktualisiert und steht global unter dem oben genannten Array zur Verfügung.
Man sollte noch daran denken, dass die Organisationsvariablen in der Session gespeichert werden. Ändert man diese Werte nicht über die Oberfläche, sondern direkt in der Datenbank, wird dies in der Session nicht aktualisiert. In diesem Fall sollte man den Browser schließen und neu starten.