SICHERHEIT (KRITISCH!): - ALLE SQL-Injection-Schwachstellen behoben - All SQL queries → PDO Prepared Statements mit Parameter-Binding - users_show(): Parametrisierte LIKE-Suche (:search, :group, :points) - users_add(): PDO mit :id, :extra - users_add_save(): Alle UPDATE/INSERT mit PDO (24 Parameter!) - users_new(), users_null_save(): PDO mit :offset, :limit, :zero, :empty - users_new_del(), users_del(): Neue separate Funktionen mit PDO - $_POST → getVar() with security filters MODERNIZATIONS: - Copyright 2017 → 2026 - PHP 8 Type Hints for all functions (int, string, void) - array() → [] (Short Array Syntax) - tpl_eval()/tpl_warn() → setTemplateBasic()/setTemplateWarning() - navi_gen() + func_get_args() → getAdminTabs() mit Parametern - include() → require_once CONFIG_DIR - save_conf() → setConfigFile() - checkConfigFile() statt end_chmod() CODE-STRUKTUR: - Switch-Case bereinigt: Inline-Queries extrahiert - users_null_save() als eigene Funktion (Line 329) - users_new_del() als eigene Funktion (Line 441) - users_del() als eigene Funktion (Line 450) - Alle DELETE-Operationen jetzt mit PDO-Schutz ZEILEN: 440 → 512 (+72)
MODERNIZATIONS: - Copyright 2018 → 2026 - PHP 8 Type Hints for all functions (int, string, void) - array() → [] (Short Array Syntax) - $_POST/$_GET/$_REQUEST → getVar() with security filters - tpl_eval()/tpl_warn() → setTemplateBasic()/setTemplateWarning() - navi_gen() → getAdminTabs() - func_get_args() → named parameters - Manual file operations → setConfigFile() SQL SECURITY: - All SQL queries → PDO Prepared Statements - Parameter binding with :param placeholders - SQL injection protection FUNCTIONAL CHANGES: - groups_del() extracted as separate function - Error handling in groups_save() corrected - Code formatting standardized
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: 1. Einzelwerte: getVar('post', 'name', 'text') 2. Array-Index: getVar('post', 'field10', '', '', 0) → $_POST['field10'][0] 3. 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.





