CallBackFunctionsDefinition

Aus kvwmap
Wechseln zu: Navigation, Suche

Arten von Call back-Funktionen

CRUD - Call back Funktionen sind Funktionen, die vor oder nach dem Erzeugen (Create), Lesen (Read), Ändern (Update) oder Löschen (Delete) von Datensätzen ausgeführt werden. Die Funktionen, die vor dem Erzeugen ausgeführt werden sollen, heißen before-Funktionen, die nach dem Speichern ausgeführt werden sollen, heißen after-Function. Im Attributeditor können beliebig viele before-, und after-function aufgelistet werden. Um welche Funktionen es sich handelt kann ausgewählt werden. Folgende Varianten gibt es:

  • before_create, before_read, before_update, before_delete
  • after_create, after_read, after_update, after_delete

Definition von Call back-Funktionen

Für jede call back-Funktion muss es eine Datei im Ordner funktionen/custom geben. Dieser Ordner beinhaltet für jede Variante von call back-Funktion einen gleichnamigen Unterordner. Die Unterordner mit den Namen der Call back-Funktionsarten wie in Abschnitt 1 beschrieben werden im Core von kvwmap leer angelegt. Die Namen der Funktionen in den jeweiligen Unterordnern können frei gewählt werden, sollten jedoch folgender Namenskonvention folgen: <Layername>_<Namen der call back-Funktion>.

Beispiel für die Benennung der Call back-Funktionsdateien:

Eine call back-Funktion, die vor dem Erzeugen eines neuen Datensatzes im Layer Altlasten eine Kennziffer berechnen soll, kann z.b. den Bezeichner Altlasten_erzeugeKennziffer haben. Die dazugehörige Datei mit der Funktionsdefinition lautet:

WWWROOT.APPLVERSION.'funktionen/custom/before_create/Altlasten_erzeugeKennziffer.php’

In den Funktionsdateien befindet sich jeweils eine Funktion mit dem Namen callback_function, an die das assoziative Array des Datensatzes (bei Create, Update und Delete) oder das Array des Filters für den Lesevorgang (bei Read) übergeben wird. Als Rückgabewert wird jeweils wieder das Array, welches überarbeitet sein kann zurückgegeben.

Beispiel für die Definition einer Call back-Funktion

callback_function($formvars) {
 $formvars[‘a‘] = $formvars[‘b‘]+$formvars[‘c‘];
 return $formvars;
} 

Eine Vorlage für eine Datei mit einer callback_function wird im Ordner funktionen/custom mit dem Namen callback_function_template.php im kvwmap Core-Code zur Verfügung gestellt.

Zuordnung von Call back-Funktionen im Attributeditor

Im Attributeditor wird ein neues Feld eingefügt, in dem man die Call back-Funktionen angeben kann. Der Typ der Call back-Funktion wird mit einem / von dem Namen der Funktion getrennt. Mehrere werden durch ; getrennt.

Beispiel für die Benennung von Call back-Funktionen im Attributeditor

before_create/Altlasten_berechneLandkreiszuordnung;before_create/Altlasten_erzeugeKennziffer

Die Funktionen sind in der Reihenfolge zu nennen, wie sie ausgeführt werden sollen.

Aufruf der call back-Funktionen

Vor oder nach der jeweiligen Aktion zum Erzeugen, Lesen, Ändern und Löschen von Datensätzen, werden die im Attributeditor definierten Call back-Funktionen abgefragt und ausgeführt.

Vor der CRUD-Aktion werden alle before-Aktionen ausgeführt und danach die after-Aktionen. Dazu werden in PHP an den entsprechenden Stellen vor und nach dem Ausführen der CRUD Aktionen die Funktionen abgefragt und ausgeführt.

Beispiel für den Aufruf einer Call back-Funktion before_create

$formvars = run_callback_functions(get_callback_functions(’before_create’,$layer_id),$formvars);

Die Funktion get_callback_functions fragt aus dem String, der im Attributeditor für die Call back-Funktionen definiert wurde diejenigen ab, die dem Typ entsprechen und zum Layer mit der id gehören.

function get_callback_functions($callbackFunctionType,$layer_id) {
  # Fragt alle call back-Funktionen des Layers ab, die mit $callbackFunctionType (hier before_create) beginnen, separiert nach ; und wählt alle aus, die den Text „before_create/“ beinhalten
  return $callbackFunctionNames;  
}

In der Funktion run_callback_functions werden die gefundenen Funktionen in der Reihenfolge ausgeführt, wie sie aufgelistet waren.

function run_callback_functions($callbackFunctions,$formvars) {
  foreach($callbackFunctions AS $callbackFunction) {
    $formvars = run_callback_function($callbackFunction,$formvars);
  }
}

In run_callback_function werden die Pfade zu den Dateien gebildet, in denen sich die Funktionsdefinitionen befinden, diese includiert und dann die immer gleich lautende Funktion callback_function mit dem Argument $formvars ausgeführt.

function run_callback_function($callbackFunction,$formvars) {
  include (WWWROOT.APPLVERSION.'funktionen/custom/'.$callbackFunction.',php'}
  $formvars=callback_function($formvars);
}

Ablauf für die Definition einer Call back-Funktion

Dies ist schließlich die Information für den Geodaten-Administrator, der eine Call back-Funktion verwenden möchte.

Schritt 1

Kopieren der Datei callback_function_template.php aus dem Order funktionen/custom in das zum Call back-Type passende Unterverzeichnis.

Schritt 2

Umbenennen der gerade kopierten Template-Datei mit dem Namen des Layers und einem selbst ausgewählten Namen, z.B. Altlasten_erzeugeKennziffer.php. Der Pfad der neuen Datei ist dann:

WWWROOT.APPLVERSION.'funktionen/custom/before_create/Altlasten_erzeugeKennziffer.php

Schritt 3

Anpassen der Funktion callback_function in der angelegten Datei.

Schritt 4

Eintragen des Namens der Call back-Funktion im Attribut-Editor für den Layer. z.B. before_create/Altlasten_erzeugeKennziffer

Falls schon andere Funktionen für den Layer definiert sind, nach einem Simikolon Anhängen oder entsprechend der Reihenfolge, in der die Funktionen ausgeführt werden sollen, irgendwo einfügen.

Die Reihenfolge bezieht sich nur auf die jeweilige Art von Funktionen. Es werden also alle Arten separat sortiert. Die Reihenfolge der Arten selbst ist egal. Es ist aber aus Gründen der Übersichtlichkeit sicher besser, wenn alle Funktionen einer Art nacheinander definiert werden und danach die nächsten.