Search by

heimseiten / contao-settings-units-bundle

heimseiten.de - Webdesign aus Köln

Speicherzeiten und maximale Upload-Dateigröße in den Systemeinstellungen mit Einheitenauswahl eingeben: Tage statt Sekunden, MB statt Byte. Gespeichert wird unverändert der Wert in Sekunden bzw. Byte, eine Deinstallation ändert die Einstellungen also nicht.

Package info

github.com/heimseiten/contao-settings-units-bundle

Type:contao-bundle

pkg:composer/heimseiten/contao-settings-units-bundle

Statistics

Installs: 8

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.0 2026-08-27 12:50 UTC

This package is auto-updated.

Last update: 2026-08-27 12:58:24 UTC


README

Die Systemeinstellungen von Contao 5 erwarten die Speicherzeiten in Sekunden und die maximale Upload-Dateigröße in Byte. Diese Erweiterung stellt den vier Feldern eine Einheitenauswahl zur Seite, sodass sich Werte in Tagen bzw. MB eintragen lassen.

Installation

composer require heimseiten/contao-settings-units-bundle

Es sind weder eine Migration noch weitere Einstellungen nötig.

Funktion

System ▸ Einstellungen

Feld Eingabe
Speicherzeit für Undo-Schritte Zahl + Sekunden / Minuten / Stunden / Tage / Jahre
Speicherzeit für Versionen Zahl + Sekunden / Minuten / Stunden / Tage / Jahre
Speicherzeit für Log-Einträge Zahl + Sekunden / Minuten / Stunden / Tage / Jahre
Maximale Upload-Dateigröße Zahl + Byte / MB

Voreingestellt sind Tage bzw. MB; ein Jahr zählt dabei 365 Tage. Zwei Ausnahmen von der Voreinstellung:

  • Geht der Wert in einer größeren Einheit restlos auf, gewinnt diese: 31.536.000 Sekunden erscheinen als „1 Jahre", nicht als „365 Tage".
  • Wäre der Wert in der voreingestellten Einheit kleiner als 1, wird die größte kleinere Einheit genommen, in der er restlos aufgeht: 3600 Sekunden erscheinen als „1 Stunden", 90 Sekunden bleiben „90 Sekunden".

Ein Wechsel der Einheit rechnet die Zahl um, der eingestellte Wert bleibt dabei gleich – aus „33000000 Byte" wird „31.47125244 MB", nicht „33000000 MB". Umgerechnet wird dabei über den auf ganze Byte bzw. Sekunden gerundeten Wert, damit sich beim Hin- und Herschalten keine Rundungsreste ansammeln.

Gespeichert wird weiterhin die Zahl in Sekunden bzw. Byte

Die Erweiterung ist reine Eingabehilfe: In system/config/localconfig.php stehen dieselben Werte wie ohne sie. Eine Deinstallation verändert die Einstellungen also nicht – Contao zeigt die Werte danach wieder als reine Zahl an. Umgekehrt braucht es beim Installieren keine Migration.

Ein MB sind hier 1.048.576 Byte

Contao rechnet Dateigrößen in 1024er-Schritten: System::getReadableSize() teilt durch 1024 – und genau diese Funktion zeigt die erlaubte Größe am Upload-Feld und die Dateigrößen in der Dateiverwaltung an. PHP verfährt bei upload_max_filesize ebenso („2M" = 2097152 Byte). Streng genommen ist die Einheit damit ein MiB; beschriftet ist sie als MB, weil das die geläufige Schreibweise ist. So passen Eingabe und Anzeige zusammen.

Der Hilfetext der Contao-Einstellung behauptet dagegen „1 MB = 1000 kB = 1000000 byte" – das trifft auf keine Stelle im Kern zu; diese Erweiterung ersetzt ihn.

Für eigene Felder

Die beiden Eingabefelder stehen unter den Namen hsDuration (Wert in Sekunden) und hsFileSize (Wert in Byte) auch für eigene DCA-Felder zur Verfügung:

$GLOBALS['TL_DCA']['tl_beispiel']['fields']['cacheTime'] = [
    'inputType' => 'hsDuration',
    'eval' => ['mandatory' => true, 'rgxp' => 'digit', 'tl_class' => 'w50'],
    'sql' => "int(10) unsigned NOT NULL default 0",
];

rgxp sollte dabei digit sein, weil beim Wechsel der Einheit Nachkommastellen entstehen können. Gespeichert wird immer eine ganze Zahl.