ILengthDatabaseTableColumn::length() erhält String statt Integer

  • Affected Version
    WoltLab Suite 5.4
    Affected App
    WoltLab Suite Core
    PHP
                YearDatabaseTableColumn::create('year')
                    ->length(4)
                    ->defaultValue(null)

    In AbstractDatabaseTableColumn::getData() sollte folgendes genutzt werden:

    PHP
    $data['length'] = (int) $this->getLength();

    Alternativ: https://github.com/WoltLab/WCF/pull/4594

    YearDatabaseTableColumn::validateLength prüft neben dem Wert auch den Wert-Typen. Übergibt man die Zahl als String, erhält man folglich einen anderen Typen und fliegt damit durch die Validierung.

    Aufgerufen wird der fehlerhafte Call in AbstractDatabaseTableColumn::createFromData():

    PHP
            if ($column instanceof IDecimalsDatabaseTableColumn) {
                $column->decimals($data['decimals'] ?: null);
            }


    Ich kann aktuell leider nicht im Code nachsehen, ob das bereits behoben ist, da GitHub eine Störung zu haben scheint.

    Edited 2 times, last by gn5VmUKCtv6ekrMf: Code-Vorschlag korrigiert (November 28, 2021 at 11:52 AM).

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!