blob: b6204b6d46c4e62067342fb2a200b0f289f60499 [file] [log] [blame]
Arathornd69540a2023-11-02 21:43:37 +01001
2HookCallback()
3**************
4
5
6FUNKTION
7========
8
9 mixed HookCallback(object hooksource, int hookid, mixed hookdata)
10
11
12DEFINIERT IN
13============
14
15 Eigenen Objekten
16
17
18ARGUMENTE
19=========
20
21 * hooksource: Das Objekt, in dem das Ereignis ausgeloest wurde
22
23 * hookid: Hooktyp des ausgeloesten Hooks
24
25 * hookdata: Daten des ausgeloesten Hooks (S. Doku des jeweiligen
26 Hooks.)
27
28
29BESCHREIBUNG
30============
31
32 Standard-Callback-Methode fuer Hooks. Wird beim Registrieren ein
33 Objekt uebergeben, wird versucht, eine Closure auf HookCallback()
34 an diesem Objekt zu erstellen. Man kann die Funktion auch anders
35 benennen und direkt als Closure uebergeben. Dies ist insb. bei
36 mehreren Hooks im gleichen Objekt hilfreich, weil es den Code
37 uebersichtlicher macht. Die Argumente muessen jedoch immer die
38 gleichen wie bei HookCallback() sein.
39
40 Die Reihenfolge des Aufrufs der Konsumenten ist Surveyor, Hook-
41 Modifikator, Data-Modifikator, Listener. Innerhalb der Gruppen wird
42 nach Prioritaet abgearbeitet. Ein Surveyor-Hook kann verhindern,
43 dass Hooks bestimmte Aenderungen durchfuehren.
44
45
46RUECKGABEWERTE
47==============
48
49 ({<status>, <hookdata>})
50
51 * Status: Eine der folgenden Konstanten: - H_NO_MOD: keine
52 Veraenderung - H_ALTERED: Daten des Hooks geaendert -
53 H_CANCELLED: Die Ausfuehrung der Hook-Kette und das ausloesende
54
55 Ereignis werden abgebrochen
56
57 Nicht alle Hooks unterstuetzen jeden Status.
58
59 * hookdata: Die ggf. modifizierten Hookdaten. (S. Doku des
60 jeweiligen Hooks.)
61
62
63BEMERKUNGEN
64===========
65
66 Bitte nutzt in neuem code nicht mixed, sondern unions entsprechend
67 der Dokumentation der verwendeten Hooks.
68
69 Auch reine Listener-Objekte muesse nein Array zurueckgeben, dessen
70 erstes Element H_NO_MOD sein muss.
71
72
73SIEHE AUCH
74==========
75
76 HRegisterToHook(), HUnregisterFromHook(), unions
77
78Letzte Aenderung: 06.10.2022, Bugfix