1. YoureCom
    1. Über mich
  2. Lösungen
    1. Tipprunde
    2. Aufgaben & Support
    3. Mitglieder-Netzwerk
    4. Online-Shop
    5. Alle Lösungen & Preise
  3. Für Admins
    1. Plugins
    2. ByteMon
    3. ByteMon: Community verwalten
    4. ByteMon: Portalidentität
    5. Individuelle Entwicklung
    6. WSC 6.3 Alpha
    7. GitHub
  4. Neuigkeiten
    1. Kurzmeldungen
  5. Support
  6. Mein Konto
  7. Lösungen testen
  • Anmelden
  • Registrieren
  • Warenkorb 0
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Aufgaben
  • Produkte
  • Pulse-Beiträge
  • Erweiterte Suche
  1. YoureCom – Software für Vereine, Teams & Communities
  2. Repository-Liste
  3. de.yourecom.wcf.api.mpdf

YoureCom Standard automatisch aktualisiert (verwaltete Dateien aus _dev/standard)

  • Marcel Beckers
  • +28 Hinzufügungen
  • 28 Gesamt
  • 1 Dateien
  • 18. Oktober 2026 um 17:42
  • tests/lint/check-architecture.php
    <pre>@@ -27,6 +27,10 @@
    * - permission-strict: no `getPermission(...) === true/false`, the session returns the raw group value ('1', 1, false)
    * - open-redirect: a RedirectResponse to a request value (`$_GET/$_POST/$_REQUEST`, `returnURL`) needs an
    * ApplicationHandler::isInternalURL() check in the same file
    + * - grid-view-access: a grid view with an ID constructor parameter (comes from the client when rows are reloaded) whose
    + * isAccessible() only checks `userID > 0`, it has to check access to the parent object
    + * - link-application: `{link controller='X'}` in templates/ of an application without `application=` for a controller
    + * (Page/Form/Action) of the plugin itself, it resolves against wcf
    *
    * Known findings that cannot be changed yet are listed in tests/lint/config.php (`architectureKnown`: relative file
    * => list of rules); entries that no longer match make the check fail, so the list can only shrink.
    @@ -101,6 +105,16 @@
    $report($relative, 'endpoint-validate-action', 'RPC endpoint calls validateAction(), call the check directly (e.g. validateDelete()) or check in the endpoint/command');
    }
    + // rows are reloaded through core/grid-views/rows with the grid view parameters of the client: a grid view that takes
    + // such a parameter (an ID of a parent object) must check access to that object, not only that someone is logged in
    + if (
    + \preg_match('~\bextends\s+\\\\?(?:wcf\\\\system\\\\gridView\\\\)?AbstractGridView\b~', $source)
    + && \preg_match('~function\s+__construct\s*\([^)]*\$\w+ID\b~', $source)
    + && \preg_match('~function\s+isAccessible\s*\(\s*\)[^{]*\{\s*return\s+WCF::getUser\(\)->userID\s*>\s*0\s*;~', $source)
    + ) {
    + $report($relative, 'grid-view-access', 'grid view with an ID parameter whose isAccessible() only checks the login, check access to the parent object (e.g. canEdit())');
    + }
    +
    if (!\preg_match('~\bextends\s+\\\\?(?:wcf\\\\data\\\\)?AbstractDatabaseObjectAction\b~', $source)) {
    continue;
    }
    @@ -149,6 +163,20 @@
    if (\preg_match('~jsClipboard(?:Container|Item|Editor|MarkAll)|Controller/Clipboard~', $source)) {
    $report($relative, 'clipboard', 'clipboard markup, use bulk interactions of the grid/list view');
    }
    +
    + // without `application` a link resolves against wcf: controllers of the plugin's own application need it
    + if (\str_starts_with($relative, 'templates/') && (applications()['templates'] ?? 'wcf') !== 'wcf') {
    + \preg_match_all('~\{(?:link|anchor)\s+([^}]*)\}~', $source, $tags);
    + foreach ($tags[1] as $arguments) {
    + if (
    + \preg_match('~\bcontroller=[\x22\x27](\w+)[\x22\x27]~', $arguments, $controller)
    + && !\str_contains($arguments, 'application=')
    + && (\glob(ROOT . '/files/lib/*/' . $controller[1] . '{Page,Form,Action}.class.php', \GLOB_BRACE) ?: []) !== []
    + ) {
    + $report($relative, 'link-application', "{link controller='{$controller[1]}'} without application, the controller belongs to this plugin's application");
    + }
    + }
    + }
    }
    $legacyAjax = static function (string $relative, string $source) use ($report): void {

Bereit, deine Community smarter zu machen?

Ob fertiges Produkt oder individuelle Softwarelösung – überzeuge dich selbst.

Jetzt kaufen Demo testen

Direkter Support vom Entwickler

Zuletzt erledigte Aufgaben

  1. Multihunter meldet jede Anmeldung als Doppelaccount Multihunter (Doppelaccount Jäger)

    villain Erledigt am 26. Oktober 2026 um 14:41
  2. Optionen vom "Dateien Feld-Typ" sprechen von Bildern Database: Medienfelder

    doerek Erledigt am 25. Oktober 2026 um 18:20
  3. Nach Installation ohne Popup Begriffserklärung

    mbbaureihen.de Erledigt am 24. Oktober 2026 um 23:33
  4. Fehlermeldung beim Hinzufügen einer neuen Clanseite Clan Verwaltung

    BMWTom Erledigt am 24. Oktober 2026 um 23:16
  5. neue Dateiendungen werden nicht übernommen. Database: Medienfelder

    doerek Erledigt am 24. Oktober 2026 um 19:46
  6. Overlay beim Verschieben eines Themas Clan Verwaltung Clan Verwaltung: Foren

    Marcel Beckers Erledigt am 23. Oktober 2026 um 22:10
Arbeitsplatz
YoureCom – Software für Vereine, Teams & Communities

YoureCom – Software für Vereine, Teams & Communities. Seit 2004.

Fertig eingerichtete Lösungen für Verein, Team und Community, dazu Erweiterungen für die WoltLab Suite. Aus Wuppertal, für Kunden weltweit.

Lösungen

  • Tipprunde
  • Aufgaben & Support
  • Mitglieder-Netzwerk
  • Online-Shop
  • Alle Lösungen & Preise

Für Administratoren

  • Plugins
  • Clan Verwaltung
  • Wettbewerbe
  • MultiHunter
  • ByteMon
  • Individuelle Entwicklung

YoureCom

  • Über mich
  • Shop
  • Kontakt
  • Neuigkeiten
  • GitHub

Cloud-Verträge

  • AGB Cloud
  • AVV Cloud
  • Rechtswidrige Inhalte melden
  • Datenwechsel

Rechtliches

  • Datenschutzerklärung
  • Impressum
  • AGB
  • Vertrag widerrufen
  • Abonnements kündigen
  • Widerrufsbelehrung
© 2026 YoureCom · Marcel Beckers