heimseiten / contao-settings-units-bundle
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
Requires
- php: ^8.3
- contao/core-bundle: ^5.7
Requires (Dev)
- contao/manager-plugin: ^2.3
Suggests
None
Provides
None
Conflicts
None
Replaces
None
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.