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
  • -1 Löschungen
  • +32 Hinzufügungen
  • 33 Gesamt
  • 2 Dateien
  • 22. Oktober 2026 um 09:49
  • tests/lint/check-architecture.php
    <pre>@@ -41,6 +41,9 @@
    * of where the value comes from (Marcel 21.10.2026, Sitzung). Use `prepare()`: prepareStatement() is
    * deprecated in 6.2 and, like prepareUnmanaged(), does not resolve `app1_` table names. `query()` on a
    * DOMXPath variable is XPath, not SQL, and is skipped
    + * - sql-variable: `->prepare()`/`->prepareStatement()`/`->prepareUnmanaged()` always take `$sql` as first argument:
    + * the SQL is assigned to `$sql` before, never written into the call or passed as another expression
    + * (`$this->sql`, `$data['sql']`). Checked in files/, files_wcf/ and tests/ (Marcel 22.10.2026)
    *
    * Rules that need the types of PHPStan are PHPStan rules (tests/phpstan): getPermission() compared with true/false
    * (yourecom.permissionStrict), legacy actions that change data without the token (yourecom.secureAction), endpoints that
    @@ -245,6 +248,33 @@
    }
    }
    +// SQL is assigned to $sql first, the statement is prepared from that variable (Marcel 22.10.2026): no SQL literal and
    +// no other expression ($this->sql, $data['sql']) inside the call, also not in tests
    +foreach (files(['files', 'files_wcf', 'tests'], ['.php']) as $relative => $path) {
    + $tokens = \token_get_all((string)\file_get_contents($path));
    + $count = \count($tokens);
    + for ($i = 0; $i < $count; $i++) {
    + if (!\is_array($tokens[$i]) || !\in_array($tokens[$i][0], [\T_OBJECT_OPERATOR, \T_NULLSAFE_OBJECT_OPERATOR], true)) {
    + continue;
    + }
    + $name = nextToken($tokens, $i, 1);
    + if ($name === null || !\is_array($tokens[$name]) || !\in_array($tokens[$name][1], ['prepare', 'prepareStatement', 'prepareUnmanaged'], true)) {
    + continue;
    + }
    + $open = nextToken($tokens, $name, 1);
    + if ($open === null || $tokens[$open] !== '(') {
    + continue;
    + }
    + $argument = nextToken($tokens, $open, 1);
    + $after = $argument === null ? null : nextToken($tokens, $argument, 1);
    + $isSqlVariable = $argument !== null && \is_array($tokens[$argument]) && $tokens[$argument][0] === \T_VARIABLE
    + && $tokens[$argument][1] === '$sql' && $after !== null && \in_array($tokens[$after], [',', ')'], true);
    + if (!$isSqlVariable) {
    + $report($relative, 'sql-variable', "line {$tokens[$i][2]}: ->{$tokens[$name][1]}() takes the SQL from \$sql, assign the SQL to \$sql first");
    + }
    + }
    +}
    +
    $clipboardXml = ROOT . '/clipboardAction.xml';
    if (\is_file($clipboardXml) && \str_contains((string)\file_get_contents($clipboardXml), '<import>')) {
    $report('clipboardAction.xml', 'clipboard', 'installs clipboard actions, use bulk interactions (keep only <delete>)');
  • tests/lint/check-devsystem.php
    <pre>@@ -66,7 +66,8 @@
    }
    $known = [];
    -$statement = WCF::getDB()->prepare('SELECT optionName FROM wcf1_user_group_option');
    +$sql = 'SELECT optionName FROM wcf1_user_group_option';
    +$statement = WCF::getDB()->prepare($sql);
    $statement->execute();
    foreach ($statement->fetchAll(\PDO::FETCH_COLUMN) as $name) {
    $known[(string)$name] = true;

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. Overlay beim Verschieben eines Themas Clan Verwaltung Clan Verwaltung: Foren

    Marcel Beckers Erledigt am 23. Oktober 2026 um 22:10
  2. Feature-Wunsch: Einführung von Tippgemeinschaften / Team-Wertung (Team-Tippen) Wettbewerbe Basissystem Wettbewerbe: Tippspiel

    villain Erledigt am 22. Oktober 2026 um 08:15
  3. Verschiebung zwischen Clanforen/WSB Clan Verwaltung Clan Verwaltung: Foren

    Marcel Beckers Erledigt am 22. Oktober 2026 um 00:12
  4. Massenbearbeitung von Clans Clan Verwaltung

    Marcel Beckers Erledigt am 22. Oktober 2026 um 00:10
  5. Synchronisation zwischen Clan und Benutzergruppe erweitern Clan Verwaltung

    Marcel Beckers Erledigt am 21. Oktober 2026 um 23:59
  6. Überarbeitung der eigenen Events Clan Verwaltung

    Marcel Beckers Erledigt am 21. Oktober 2026 um 23:40
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