SQLite Data Studio: API-Referenz
Zurück: SQLite Data Studio
[Live] Öffentliche Methoden von helper_plugin_wksqliteds. Laden über
plugin_load('helper', 'wksqliteds').
execute()
public function execute($target, $routine, array $params = [])
Zusammenfassung: Führt eine benannte Routine gegen die aufgelöste Verbindung aus und
liefert das Ergebnis gemäß der returns-Angabe des Manifests. Vollständige
Manifest-/Parameter-Doku: SQLite Data Studio: Routinen.
| Parameter | Typ | Bedeutung |
|---|---|---|
$target | \PDO|Objekt mit getPdo()|string|null | Ziel-Verbindung: ein bestehendes \PDO/SQLiteDB, ein Verbindungs-Name, oder null (nutzt default_connection). |
$routine | string | „name“ (Default-Set) oder „set:name“; ein angehängtes .json wird toleriert. |
$params | array | ['name' => wert, ...]. |
Rückgabewert: gemäß returns des Manifests (rows_affected/insert_id/rows/
row/scalar/none).
Fehlerverhalten: wirft RoutineException bei unbekannter Routine, ungültigem Manifest,
fehlendem Verbindungsziel ohne konfigurierten default_connection, oder einem SQL-Fehler
der Engine.
registerSet()
public function registerSet($name, $dir, array $opts = [])
Zusammenfassung: Registriert programmatisch ein Routine-Set (Alternative zum Event).
| Parameter | Typ | Bedeutung |
|---|---|---|
$name | string | Set-Name, Adressierung danach als name:routine. |
$dir | string | Basisverzeichnis; muss existieren. |
$opts | array | reserviert, aktuell ungenutzt. |
Fehlerverhalten: RoutineException bei ungültigem Namen oder fehlendem Verzeichnis.
getConnection()
public function getConnection($name)
Zusammenfassung: Löst einen Verbindungs-Namen zu einem beschreibbaren \PDO auf.
Rückgabewert: \PDO. Fehlerverhalten: RoutineException bei unbekannter oder
nicht öffnbarer Verbindung.
getReadonlyConnection()
public function getReadonlyConnection($name)
Zusammenfassung: Wie getConnection(), liefert aber ein separates Handle mit
motor-seitigem Nur-Lesen-Schutz (SQLite: PRAGMA query_only=ON). Für Konsumenten, die den
Studio-Readonly-Modus spiegeln wollen, ohne das reguläre, beschreibbare Handle der
Routinen-Engine zu beeinflussen — beide Handles derselben Verbindung koexistieren im selben
Request.
testConnection()
public function testConnection($name)
Zusammenfassung: Prüft, ob eine benannte Verbindung tatsächlich geöffnet werden kann.
Rückgabewert: array{ok:bool,error:string,driver:string}.
phpAllowed()
public function phpAllowed()
Zusammenfassung: Ob Inline-PHP in Routinen-Dateien grundsätzlich laufen darf (Plugin-Option
allowPhp und globales $conf['phpok'] — reines Konfigurations-Gate, unabhängig vom
aufrufenden Kontext). Die zusätzliche, kontextabhängige Superuser-Bindung für Studio-getriggerte
Speicher-/Ausführungspfade ist nicht Teil dieser Methode — Details:
Routinen → Inline-PHP-
Bedrohungsmodell.
Rückgabewert: bool.
connectionStore() / routineStore() / setRegistry() / connectionManager()
Fabrikmethoden für die internen Speicher-/Registry-Objekte
(connection\ConnectionStore/RoutineStore/RoutineSetRegistry/
connection\ConnectionManager) — für Konsumenten relevant, die tiefer in die Verwaltung
eingreifen wollen, als es execute()/registerSet() erlauben (z. B. eine eigene
Admin-Oberfläche). routineStore($set = 'default') nimmt den Set-Namen entgegen.
Events
WKSQLITEDS_REGISTER_ROUTINE_SETS
| Metadatum | Wert |
|---|---|
| Ausgelöst | einmalig je Request, beim ersten Zugriff auf die Routinen-Infrastruktur (execute()/registerSet()/routineStore()/setRegistry()) |
| Nutzdaten | die RoutineSetRegistry-Instanz ($event→data), Aufruf von $event→data→register($name, $dir, $opts = []) |
| Seit | Umbenennung des Plugins (2026-07-14) |
$controller->register_hook('WKSQLITEDS_REGISTER_ROUTINE_SETS', 'BEFORE', $this, 'sets'); public function sets(\dokuwiki\Extension\Event $event) { $event->data->register('reports', __DIR__ . '/sql'); }
WVDSDWMSQLITE_REGISTER_ROUTINE_SETS wurde als befristeter Übergangs-Shim mit
ausgeliefert (beide Events feuerten parallel), ist inzwischen aber entfernt — jeder
externe Hook, der noch auf den alten Event-Namen lauscht, wird nicht mehr aufgerufen und
muss auf WKSQLITEDS_REGISTER_ROUTINE_SETS umgestellt werden.
Service-Registrierung (wkcore)
Die Routinen-API wird zusätzlich als Service sql.routines über
Core Plugin veröffentlicht — programmatische Konsumenten (z. B. wkblog)
rufen typischerweise über den Service statt über ein direktes plugin_load():
$svc = ServiceHub::fromDokuWiki()->service('sql.routines'); $svc?->execute($pdo, 'close_pruefung', ['id' => 123, 'user' => 'wolfgang']);
Der Servicepfad ist ein first-party, vertrauter Aufrufer — er unterliegt derselben
execute()-Semantik, aber nicht der Studio-Berechtigungs-Matrix (die gilt nur für
Web-Zugriffe über die Admin-Oberfläche selbst, s.
SQLite Data Studio: Berechtigungen).
StepUpBridge
[Live seit 2026-08-09] Die Anbindung an den Identity Plugin Contract v1. Drei öffentliche, reine Statiken — der Bildschirm ruft sie, ein fremder Aufrufer braucht sie nicht:
| Element | Antwortet |
|---|---|
StepUpBridge::STEPUP_ACT | den do=-Wert, den die Brücke beansprucht: wksqliteds_stepup |
categoryForAction(string $action): ?string | zu welcher Step-up-Kategorie eine verteilte Aktion gehört, oder null für eine, die keinen zweiten Faktor braucht |
requirementFor(string $category): ?string | die Anforderung einer Kategorie, oder null — ein unbekannter Name ergibt null und muss als Ablehnung behandelt werden, nie als „keine Anforderung„ |
scopeIdFor(string $category): string | die eigentümerpräfixierte Scope-Id, auf die die Richtlinien-Engine keyt |
Die Aktions-zu-Kategorie-Tabelle ist eine private Konstante und existiert genau einmal:
admin.php::handle() liest sie über categoryForAction(), statt eine zweite Kopie zu tragen.
_test/StepUpBridgeTest.php sichert beide gegeneinander ab, in beide Richtungen.
Welche Kategorien es gibt und warum welche Aktion darin liegt (und welche ausdrücklich nicht): Berechtigungen → Zweiter Faktor.
dbadmin\RowMenu
[Live seit 2026-08-09] RowMenu::html($widgets, array $elements, string $label): string —
eine Rasterzelle voller Zeilenaktionen: das Kebab-Menü des Designsystems plus die versteckte
Liste, aus der sein Kontextmenü liest, beide aus demselben Element-Feld.
| Parameter | Bedeutung |
|---|---|
$widgets | der wkfluentui_widgets-Helfer, oder null, wenn er fehlt |
$elements | bereits gerenderte, bereits maskierte Bedienelemente — Links, Schaltflächen, ganze Formulare |
$label | was diese Zeile ist; wird der zugängliche Name des Menüs |
Drei Eigenschaften, in der Reihenfolge ihrer Wichtigkeit:
- Ein Kebab, nie eine Knopfleiste. Eine Aktionsspalte aus Bedienelementen wächst mit der längsten Beschriftung statt mit den Daten. Alle vier Raster dieses Pakets (Routinen, Verbindungen, Sicherungen, Tabellenübersicht) zeigten bis zum 9. August 2026 zwei bis vier Bedienelemente je Zeile.
- Die versteckte Liste kommt aus demselben Feld, womit die Zusicherung des Kontextmenüs — jeder Eintrag ist in derselben Zeile bereits sichtbar — durch Konstruktion wahr ist statt durch Nachsehen.
- Ohne den Bausatz stehen die Elemente nebeneinander. Eine Aktion, die sich nicht gestalten lässt, muss trotzdem erreichbar sein.
Ein leeres Element-Feld ergibt die leere Zeichenkette, sodass eine Zeile ohne Angebot eine leere Zelle rendert statt eines leeren Menüs.
Verwandte Themen
- SQLite Data Studio: Routinen — Manifest-Schema, Parametertypen, SQL-Dateien
- SQLite Data Studio: Verbindungen — Verbindungs-Datensatzschema
- Core Plugin — Service-Registry
- SQLite Data Studio: Berechtigungen — Berechtigungsmatrix und zweiter Faktor
Verifiziert gegen: wk-dw-sqliteds-plugin@ca32bc1 (2026-08-09).