<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Ereignisse on wt-modules</title><link>https://bschwede.codeberg.page/wt-modules/de/docs/cronjob/events/</link><description>Recent content in Ereignisse on wt-modules</description><generator>Hugo</generator><language>de</language><atom:link href="https://bschwede.codeberg.page/wt-modules/de/docs/cronjob/events/index.xml" rel="self" type="application/rss+xml"/><item><title>Pseudo-Events</title><link>https://bschwede.codeberg.page/wt-modules/de/docs/cronjob/events/pseudo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://bschwede.codeberg.page/wt-modules/de/docs/cronjob/events/pseudo/</guid><description>&lt;p&gt;Webtrees hat keinen Event-Bus, daher werden Core-Aktionen (Logins, fehlgeschlagene Logins, Logouts, Datensatz-Edits, Fehler, Suchen) durch &lt;strong&gt;Polling der webtrees-Log-Tabelle&lt;/strong&gt; (&lt;code&gt;app/Log.php&lt;/code&gt;, Tabelle &lt;code&gt;log&lt;/code&gt;) detektiert und pro neuem passenden Log-Eintrag ein Ereignis ausgelöst. Es ist &lt;strong&gt;standardmäßig deaktiviert&lt;/strong&gt;: nichts läuft, bis der angebotene &lt;code&gt;cronjob:pseudo-events&lt;/code&gt;-Job aktiviert wird.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Eingebaute Events&lt;/strong&gt; (ein &lt;code&gt;cj_event&lt;/code&gt; pro neuer Log-Zeile, Payload = die Zeile):&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;Ereignis&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;Log-Filter (log_type, Nachricht-Präfix)&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: left"&gt;Feuer bei&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cronjob:log-auth-failed&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;auth&lt;/code&gt;, &lt;code&gt;Login failed&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;ein Login-Versuch fehlgeschlagen (falsches Passwort, unbekannter Benutzer, nicht verifiziert, nicht genehmigt, keine Session-Cookies)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cronjob:log-auth-login&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;auth&lt;/code&gt;, &lt;code&gt;Login:&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;ein Benutzer eingeloggt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cronjob:log-auth-logout&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;auth&lt;/code&gt;, &lt;code&gt;Logout:&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;ein Benutzer ausgeloggt&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cronjob:log-error&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;error&lt;/code&gt;, –&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;eine Ausnahme erfasst und geloggt (die Nachricht ist der Trace)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cronjob:log-edit-update&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;edit&lt;/code&gt;, &lt;code&gt;Update:&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;ein Datensatz aktualisiert (&lt;code&gt;GedcomRecord::updateRecord()&lt;/code&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cronjob:log-edit-delete&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;edit&lt;/code&gt;, &lt;code&gt;Delete:&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;ein Datensatz gelöscht (&lt;code&gt;GedcomRecord::deleteRecord()&lt;/code&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;cronjob:log-search&lt;/code&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;&lt;code&gt;search&lt;/code&gt;, –&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: left"&gt;eine Suche ausgeführt (&lt;strong&gt;eine Log-Zeile pro durchsuchtem Baum&lt;/strong&gt;)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;&lt;strong&gt;Payload:&lt;/strong&gt; &lt;code&gt;log_id&lt;/code&gt;, &lt;code&gt;log_time&lt;/code&gt;, &lt;code&gt;log_message&lt;/code&gt; (auf 250 Zeichen gekürzt, UTF-8-safe) plus &lt;code&gt;gedcom_id&lt;/code&gt; / &lt;code&gt;user_id&lt;/code&gt;, wenn die Log-Zeile sie trägt. Die Nachrichten-Präfixe sind die hartkodierten englischen Strings des aktuellen Cores; ein Core-Update, das sie ändert, stoppt das passende Ereignis still (kein Fallback per Design) — die Event-Katalog-Beschreibungen und die &lt;code&gt;test-pseudo-events&lt;/code&gt;-Suite fixieren die aktuelle Zuordnung.&lt;/p&gt;</description></item><item><title>Route-Events</title><link>https://bschwede.codeberg.page/wt-modules/de/docs/cronjob/events/route/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://bschwede.codeberg.page/wt-modules/de/docs/cronjob/events/route/</guid><description>&lt;p&gt;Ein ergänzender, &lt;em&gt;sofortiger&lt;/em&gt; Detektionsmechanismus: anstatt Zustand nach Zeitplan zu pollen, beobachtet das Modul die HTTP-Anfrage selbst. Wenn eine Anfrage an eine &lt;strong&gt;abgebildete mutierende Route&lt;/strong&gt; erfolgreich bearbeitet wurde (2xx/3xx), queue sie das passende Ereignis in dieselbe &lt;code&gt;cj_event&lt;/code&gt;-Queue — ein abhörender Event-Job reagiert dann beim nächsten Tick (~60 s), ohne Polling-Latenz.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Welche Routes abgebildet sind&lt;/strong&gt; — zwei Regeln, beide abgeleitet aus der live webtrees-Routentabelle. Gemeinsame Voraussetzungen: Pfad beginnt mit &lt;code&gt;/tree/{tree}/&lt;/code&gt;, der Handler ist im webtrees-Request-Handler-Namespace (&lt;code&gt;RequestHandlers&lt;/code&gt; in 2.2.6, &lt;code&gt;Controllers&lt;/code&gt; in 2.3), und die Anfrage ist eine &lt;strong&gt;POST&lt;/strong&gt;-Mutation. In 2.2.6 wird dies bei der Abbildung erzwungen (GET-Seiten-Routes werden nicht abgebildet); in 2.3 trägt die Route keine HTTP-Methode, daher erfolgt die POST-Prüfung zur Auslösezeit und das GET-Formular-Load derselben Route wird ignoriert.&lt;/p&gt;</description></item></channel></rss>