Core-Änderungen (core/core.php):
- fields_in() und fields_out(): include → require_once
- Hardcoded Pfad → CONFIG_DIR Konstante
- config_fields.php → fields.php (korrekte Datei)
Changelog-Modul (admin/modules/changelog.php):
- Removed unnecessary default case in switch statement
Core-Änderungen (core/security.php):
- Bracket-Notation implementiert: field[0] für Index, field[] für ganzes Array
- Parameters reduced from 5 to 4 (index parameter removed)
- Code duplication removed: $filters Array only defined once
- Variablen auf snake_case umgestellt: $array_index, $is_array_all
- Array-Element-Filterung added für bessere Sicherheit
Module aktualisiert:
- admin/modules/fields.php: Verwendet Bracket-Notation field1X[i]
- admin/modules/comments.php: Verwendet Bracket-Notation id[] mit num-Filter
Advantages:
- Sauberere API without zusätzlichen Index-Parameter
- ~26 Zeilen weniger Code durch Entfernung von Duplikaten
- Konsistente Namenskonvention (snake_case)
- Sicherer durch Element-Filterung bei Arrays
core/security.php: Neuer Typ 'array' für getVar()
- Gibt ganzes Array zurück: $_POST['id'] = [1,2,3]
- Verwendung: getVar('post', 'id', 'array')
- Ersetzt filter_input(..., FILTER_REQUIRE_ARRAY)
- PHPDoc aktualisiert mit neuem Typ
admin/modules/comments.php: Modernisiert mit neuem Array-Typ
- Vorher: filter_input(INPUT_POST, 'id', FILTER_DEFAULT, FILTER_REQUIRE_ARRAY)
- Nachher: getVar('post', 'id', 'array')
- Konsistente API, sauberer Code
getVar() unterstützt jetzt 3 Array-Modi:
- Einzelwerte: getVar('post', 'name', 'text')
- Array-Index: getVar('post', 'field10', '', '', 0) → $_POST['field10'][0]
- Ganzes Array: getVar('post', 'id', 'array') → $_POST['id'] als Array
core/security.php: getVar() um 5. Parameter $index erweitert
- Unterstützt jetzt mehrdimensionale Arrays: $_POST['field10'][0]
- filter_input() funktioniert nicht mit mehrdimensionalen Arrays
- Bei $index !== null: Direkter Zugriff auf $_POST/$_GET
admin/modules/fields.php: Komplett modernisiert
- Nutzt neue getVar() mit Index-Parameter
- Void return type, moderne Array-Syntax
- Removed all commented code blocks
- Saubere, wartbare Implementierung
config/fields.php: Ersetzt config_config_fields.php
- Vereinfachter Pfad without "config_" Präfix
- Konsistent mit anderen Config-Dateien
Export-Funktionalität als Tabs integriert:
- Export-Optionen jetzt als echte Tabs im Navigation-System
- Filter-Feld-Breiten optimiert für bessere UX
- Switch cases für changelog_export_txt und changelog_export_md added
Änderungen:
- Filter-Felder: Breiten angepasst (200px/180px/150px)
- Export-Tabs: In $ops und $lang Arrays integriert
- Tab-Labels: "Export TXT" und "Export Markdown"
- Export nur sichtbar wenn export_enabled aktiviert ist
- Cleaner Code: Export-Logik in Tab-System statt separate Sektion
Massive enhancement with ALL requested features: New Features:
- Filter & Search: Author, file, search term, date range
- Pagination: 10 commits per page (configurable)
- Export: TXT and Markdown formats with download
- Date Grouping: Today, Yesterday, This Week labels
- Preferences Tab: Full configuration UI
- Configuration: 6 customizable settings
Technical Improvements:
- Added config/changelog.php configuration file
- 454 lines (from ~190) with clean structure
- Default case in switch statement
- 4-space formatting (consistent with fields.php)
- Proper escapeshellarg() for security
- Query parameter preservation in pagination
- HTTP export headers for file download
Functions:
- changelog() - Main display with filters
- changelog_conf() - Preferences tab
- changelog_save_conf() - Save configuration
- changelog_export() - Export functionality
- group_commits_by_date() - Date grouping
- render_commit() - Commit rendering with config awareness
All features work together seamlessly.
Änderungen:
- Config-Datei: config_fields.php → fields.php (kürzer, konsistenter)
- require_once: CONFIG_DIR.'/fields.php'
- checkConfigFile('fields.php')
- setConfigFile bleibt: 'config_fields.php' (echter Dateiname)
- Code-Formatierung: Tabs → 4 Spaces (einheitlich)
Konsistente Namensgebung für Config-Dateien.
Änderungen in fields.php:
- getAdminTabs() nutzt jetzt $legacy und $extra Parameter
- Bessere Lösung als zurück zu navi_gen()
- Moderne Funktion bleibt, aber mit erweiterten Capabilities
Multi-Tab-System (7 Tabs) funktioniert jetzt mit getAdminTabs():
- Account, Content, Forum, Help, News, Order, Info
Tab-Navigation und Content-Anzeige funktionieren korrekt.
Problem: Tabs wurden nicht selected und Inhalt war nicht sichtbar Ursache: getAdminTabs() unterstützt kein Multi-Tab-System mit 7 Tabs Lösung: Zurück zu navi_gen() für fields.php fields.php nutzt spezielles Multi-Tab-System:
- 6 Module-Tabs (account, content, forum, help, news, order)
- 1 Info-Tab
- Insgesamt 7 Tabs
navi_gen() behält alle Parameter für Multi-Tab-Funktionalität.
Änderungen:
- Copyright aktualisiert: 2005-2017 → 2005-2026
- Type Hints: int, string, void
- func_get_args() → feste Parameter mit Defaults
- navi_gen() → getAdminTabs()
- tpl_eval()/tpl_warn() → setTemplateBasic()/setTemplateWarning()
- array() → []
- Quotes: " → ' wo möglich
- $_POST → getVar() mit Array-Index-Support
- include() + end_chmod() → checkConfigFile()
- save_conf() → setConfigFile()
- require_once mit CONFIG_DIR Pattern
- Variable $val Konflikte behoben ($val2, $val3)
Komplexes Modul mit Multi-Modul-Support für custom fields.