- PHP 78%
- Smarty 18.7%
- Makefile 1.7%
- Shell 1.6%
|
Some checks failed
build / build (push) Has been cancelled
Solange kein realer WSC-6.1-Smoketest gelaufen ist, wird keine x.y.z-Nummer ausgegeben. Konsequenzen: - package.xml: <version>1.0.2</version> -> <version>0.0.0</version>, Begruendungs-Kommentar darueber. Die beiden bisherigen <instructions type="update" fromversion="1.0.0/1.0.1"> Bloecke entfernt -- es gibt keinen Released-Baseline, von dem aus aktualisiert werden muesste. Ein Doku-Kommentar erklaert die Abwesenheit. - update/update_1.0.0_to_1.0.1.php geloescht (das Migrations-Skript hat nie produktiv gelaufen, die Zieltabelle entfaellt eh). - install.sql: sva1_board_permission (CREATE / DROP / ALTER FOREIGN KEY) vollstaendig entfernt. Die Tabelle wurde nirgends mehr gelesen oder geschrieben; Boardrechte liegen ausschliesslich im nativen WCF-ACL. Doku-Block oben entsprechend gekuerzt. - README.md: Eckdaten-Tabelle bekommt Zeile "Version 0.0.0", neuer Abschnitt "Versionierung" mit Begruendung. Alle "seit 1.0.1"- Formulierungen, die Legacy-Tabellen-Zeile und der Verweis auf das geloeschte Migrations-Skript entfernt. - objectType.xml: pre-existing Bug behoben -- fehlendes </data> am Dateiende ergaenzt (xmllint --noout liefert jetzt OK). |
||
|---|---|---|
| .github/workflows | ||
| acptemplates | ||
| Copilot | ||
| docs | ||
| files/lib | ||
| language | ||
| scripts | ||
| templates | ||
| update | ||
| .gitignore | ||
| aclOption.xml | ||
| acpMenu.xml | ||
| box.xml | ||
| clipboardAction.xml | ||
| cronjob.xml | ||
| install.sql | ||
| LICENSE | ||
| Makefile | ||
| menu.xml | ||
| menuItem.xml | ||
| objectType.xml | ||
| option.xml | ||
| package.xml | ||
| page.xml | ||
| README.md | ||
| templateListener.xml | ||
| userGroupOption.xml | ||
Sentivaria
Sentivaria ist ein eigenständiges, installierbares WSC-App-/Modulpaket für WoltLab Suite Core (WSC) und stellt eine kompakte Forum-Anwendung bereit. Es ist kein Plugin für das offizielle WoltLab Suite Forum und keine Standalone-Forensoftware – WSC bleibt die technische Grundlage, Sentivaria liefert ausschließlich die forenspezifische Logik (Foren/Kategorien, Themen, Beiträge, einfache Moderation, forenspezifische Rechte und die zugehörige ACP-Verwaltung).
Konzeptbasis:
Copilot/WSC-Kernpaket-Sentivaria-2026-04-30-neu.txt
Eckdaten
| Feld | Wert |
|---|---|
| Paketkennung | systems.diath.sentivaria |
| App-Identifier | sentivaria |
| PHP-Namespace | sentivaria\ |
| Datenbankpräfix | sva1_ |
| Mindest-WSC-Version | 6.1.0 |
| Version | 0.0.0 (Vor-Release, siehe unten) |
Versionierung
Solange noch nichts produktiv getestet ist, bleibt die Paketversion auf
0.0.0. Es wird keine x.y.z-Nummer vergeben, bevor eine echte
WSC-6.1-Installation den Smoketest aus docs/SMOKETEST.md
bestanden hat. Damit:
- existiert kein ‚Released‘-Baseline, von dem aus aktualisiert werden
müsste →
package.xmlenthält bewusst keinen<instructions type="update">-Block. - ist
install.sqlder einzige Pfad, das Schema zu erzeugen, und das Skript darf jederzeit destruktiv bleiben (DROP TABLE IF EXISTS). - wird der erste echte Release voraussichtlich
0.1.0sein (erst dann beginnt die Update-Konvention ausupdate/README.mdzu greifen).
WSC liefert Benutzer, Gruppen, Rechtebasis, Sessions, Sprache, Templates, ACP, Paketmanager, Cache, CSRF-Schutz und das Datenbankobjekt-Grundmodell. Sentivaria liefert Foren, Themen, Beiträge, einfache Moderation, forenspezifische Rechte, eigene Templates, eigene Sprachvariablen und eigene Datenbanktabellen.
Paketinhalt (V1)
package.xml Paketmanifest (App, Version, Requirements)
install.sql Datenbankschema (sva1_*)
objectType.xml Object-Type-Registrierung (board/thread/post)
userGroupOption.xml Forenrechte und Moderationsrechte
acpMenu.xml ACP-Menüstruktur
page.xml Frontend-Seiten (Forenübersicht, Board, Thema, …)
language/de.xml Deutsche Sprachvariablen
language/en.xml Englische Sprachvariablen
templates/ Frontend-Templates
acptemplates/ ACP-Templates
files/lib/ PHP-Klassen (WSC-nahe Struktur)
data/board/ Board / BoardEditor / BoardAction / BoardList
data/thread/ Thread / ThreadEditor / ThreadAction / ThreadList
data/post/ Post / PostEditor / PostAction / PostList
page/ BoardListPage, BoardPage, ThreadPage
form/ ThreadAddForm, PostAddForm, PostEditForm
acp/page/ BoardListPage, ModerationLogPage
acp/form/ BoardAddForm, BoardEditForm
system/ SentivariaCore (Application)
system/object/type/ BoardObjectType, ThreadObjectType, PostObjectType
system/moderation/ ModerationLogger
Datenbanktabellen
| Tabelle | Zweck |
|---|---|
sva1_board |
Foren und Kategorien |
sva1_thread |
Themen |
sva1_post |
Beiträge |
sva1_thread_read |
Leseverlauf je Benutzer und Thema |
sva1_moderation_log |
Moderations-Auditlog |
Boardrechte liegen ausschließlich im nativen WCF-ACL
(wcf1_acl_option*, ObjectType systems.diath.sentivaria.board); eine
eigene Permission-Tabelle existiert nicht.
Die Felder folgen der Vorlage aus der technischen Beschreibung und sind als WSC-nahes Grundmodell gedacht. Feintuning (Indizes, Volltextsuche, Engine-spezifische Optionen) erfolgt nach Test gegen eine reale WSC-6.x-Installation.
Berechtigungen
Benutzerrechte (user.sentivaria.board.*)
canViewBoard,canReadThread,canStartThread,canReplyThread,canEditOwnPost,canDeleteOwnPost
Moderationsrechte (mod.sentivaria.*)
canCloseThread,canPinThread,canMoveThread,canDeleteThread,canDeletePost,canRestorePost,canViewModerationLog
Adminrecht
admin.sentivaria.canManageBoard
Standardmäßig sind nur canViewBoard und canReadThread für reguläre
Benutzer aktiv. Alle anderen Rechte müssen pro Gruppe explizit erlaubt werden.
Sentivaria verwendet das native WCF-ACL-Framework
(com.woltlab.wcf.acl, ObjectType systems.diath.sentivaria.board).
In Board-Add/-Edit erscheint die Standard-Allow/Deny/Inherit-Matrix pro
Gruppe und pro Benutzer ({include file='aclPermissions'}).
BoardPermissionHandler löst in dieser Reihenfolge auf:
- ACL-Override (User schlägt Gruppe, Deny schlägt Allow)
- globale Gruppenrechte aus
userGroupOption.xml
Installation
- Repository als TAR-Archiv bauen – am einfachsten reproduzierbar via
make packageaus dem Repo-Root (benötigtphp,xmllint,tar). Das fertige Archiv liegt anschließend unterdist/sentivaria-<version>.tar. - Im ACP unter Installation und Update → Pakete installieren hochladen.
- Nach der Installation unter Sentivaria → Foren die ersten Foren/Kategorien anlegen und die Rechte der Gruppen pflegen.
Umfang von Version 1
Sentivaria V1 beschränkt sich bewusst auf den Forum-Kern. Enthalten sind:
- Foren und Kategorien
- Themen
- Beiträge
- einfache Moderation (Schließen, Anpinnen, Soft-Delete, Restore, Moderationslog)
- forenspezifische Rechte (Benutzer- und Moderationsrechte)
- ACP-Verwaltung für Foren, Kategorien und Moderationslog
- WSC-nahe Datenobjekte, Templates, Sprachdateien und Paketstruktur
Andere WoltLab-Anwendungsbereiche (Filebase, Gallery, Blog, Wiki, Marktplatz usw.) sind nicht Bestandteil dieses Pakets und auch nicht Gegenstand der Forum-Funktion. Themen wie WebAuthn/FIDO2, eine vollständige API oder ein vollständiger Importer gehören ebenfalls nicht zum Forum-Kern und werden hier nicht behandelt.
Core Principles
- WSC-nativ. Sentivaria ist eine WSC-Application, kein Standalone-Stack. Sessions, Benutzer, Gruppen, Rechtebasis, Cache, CSRF, Sprache, Templates, ACP und Paketmanager kommen aus WSC.
- Forum bleibt Forum. Die App umfasst Boards/Threads/Posts/Moderation – nichts darüber hinaus. Kein Filebase, Gallery, Blog, Wiki, Marktplatz.
- Authentifizierung ist Infrastruktur, kein Forum-Feature. Es gibt kein
Login-System in der Forum-App und keine Auth-Logik in
Board/Thread/Post. FIDO2/WebAuthn ist Aufgabe des freien Begleitpaketssystems.diath.sentivaria.security– siehedocs/FIDO2-WEBAUTHN-POSITION.md. - Keine selbstgebauten Sanitizer / keine eigene Krypto. Beitragstexte
werden über WSC-Bordmittel verarbeitet (
HtmlInputProcessor), WebAuthn-Krypto kommt aus einer auditierten freien Bibliothek (web-auth/webauthn-lib, MIT). - Sichere Defaults. Standardrechte sind restriktiv; jede destruktive
Moderationsaktion wird über
ModerationLoggermit Whitelist-Action protokolliert. - Reproduzierbarer Build.
make packageaus dem Repo-Root erzeugt das WSC-installierbare TAR-Archiv aus den Quellen.
Stack
| Aufgabe | Genutzte WSC-Komponente | Kein externes Framework |
|---|---|---|
| Routing / Pages / Forms | wcf\page, wcf\form, Form-Builder |
kein eigener Router |
| Datenobjekte | wcf\data\DatabaseObject + *Editor/*Action |
kein eigenes ORM |
| Datenbank | wcf\system\WCF::getDB() |
keine zusätzliche Abstraktion (Doctrine, Eloquent, …) |
| Rechte | wcf\system\WCF::getSession()->getPermission() + natives WCF-ACL (com.woltlab.wcf.acl) via BoardPermissionHandler |
kein eigenes ACL-Framework |
| Sessions / Login | WSC-Session-System | kein eigenes Auth-System in Sentivaria |
| MFA / WebAuthn | (V2) WSC-MFA-Framework + systems.diath.sentivaria.security |
kein Forum-internes Auth, kein Paid-Plugin als Pflicht |
| Templates | WSC-Template-Engine | kein Twig/Blade |
| Sprachdateien | WSC-Language-Items | kein gettext |
| ACP | WSC-ACP | kein eigenes Backend |
| Paket / Installation | WSC-Paketmanager (package.xml) |
kein Composer beim Endnutzer |
| Build | make + xmllint + tar + php -l |
minimal, POSIX-sh kompatibel |
Aktueller Stand
- Paket-Skelett vollständig (App
sentivaria, Namespacesentivaria\, DB-Präfixsva1_). - Datenmodell für Boards, Threads, Posts, Read-Tracking, Board-Permissions
und Moderationslog vorhanden (
install.sql). - Boardliste, Boardseite, Threadseite und die Add/Edit-Forms für Threads und Posts vorhanden.
- ACP: Board-Verwaltung (Liste/Add/Edit) + Moderationslog.
- Rechteauflösung gebündelt in
sentivaria\system\permission\BoardPermissionHandler(Singleton, liest aus dem nativen WCF-ACL; Override-Auflösung User > Gruppe und Deny > Allow). ModerationLoggermit Action-Whitelist, Object-Type-Whitelist und Reason-Sanitizing.- Reproduzierbarer Build (
Makefile,scripts/build-package.sh, GitHub-Actions-Workflow). - Update-Konvention (
update/, Hinweis inpackage.xmlundinstall.sql). - Sidebar-Box „Letzte Themen“ (
box.xml+sentivaria\system\box\RecentThreadListBoxController); Sichtbarkeit serverseitig durchBoardPermissionHandler::canReadThread()gefiltert. <head>-Listener (templateListener.xml) blendet auf Board-Seiten einen<link rel="alternate" type="application/rss+xml">auf den jeweiligen Board-Feed ein, wennSENTIVARIA_ENABLE_FEEDSaktiv ist.userMenu.xmlbewusst noch nicht enthalten: Einträge im WSC-6.1-User- Menü erfordern einenIUserMenuItemProvidermit Notification-/Stream- Semantik. Das passt erst sinnvoll, wenn ein eigener Forum-Stream existiert; bis dahin reichen dasmainMenu(siehemenu.xml) und das ACP-Menü.- Doku:
SMOKETEST.md,SECURITY-REVIEW.md,FIDO2-WEBAUTHN-POSITION.md.
Nächste Schritte
Reihenfolge bewusst: erst Forum stabilisieren, dann Security-Paket separat entwickeln.
- Reale WSC-6.1-Installation durchführen (Smoketest gemäß
docs/SMOKETEST.md) und Ergebnis dort eintragen. - End-to-End-Smoketest (Boards anlegen, Thread/Post-Lifecycle, Moderationslog, Rechte über mehrere Gruppen).
- Editor-Integration (P5).
<textarea>-Felder inpostAdd.tpl,postEdit.tplundthreadAdd.tplauf den WSC-Editor umstellen,HtmlInputProcessormit Object-Typesystems.diath.sentivaria.postinPostAction::create/updateaktivieren. Solange das offen ist, keine HTML-Eingaben in produktiven Installationen freischalten. - Security-Paket
systems.diath.sentivaria.securityin eigenem Repo aufsetzen (Skelett, WSC-MFA-Object-Type,web-auth/webauthn-libper Build-Vendoring) – siehedocs/FIDO2-WEBAUTHN-POSITION.md. - Sentivaria-Forum V1-Release, danach in V1.x das Security-Paket
als weiche Abhängigkeit (
<optionalpackages>) deklarieren, in V2 als harte Abhängigkeit (<requiredpackages>), sobald das Security-Paket einen vollständigen MVP liefert.
Lizenz
Siehe LICENSE.