| Name | Modified | Size | Downloads / Week |
|---|---|---|---|
| Parent folder | |||
| scriptlog-v1.8.0.zip | 2026-08-18 | 10.4 MB | |
| README.md | 2026-08-18 | 2.9 kB | |
| v1.8.0 -- Settings Cache, Security Hardening _ PHP 8.5 Compatibility source code.tar.gz | 2026-08-18 | 11.4 MB | |
| v1.8.0 -- Settings Cache, Security Hardening _ PHP 8.5 Compatibility source code.zip | 2026-08-18 | 12.8 MB | |
| v1.8.0 source code.tar.gz | 2026-08-18 | 11.4 MB | |
| v1.8.0 source code.zip | 2026-08-18 | 12.8 MB | |
| Totals: 6 Items | 58.9 MB | 3 | |
v1.8.0 — Settings Cache, Security Hardening & PHP 8.5 Compatibility
Codename: Maleo Senkawor
Highlights
- Centralized settings cache —
app_settings()reads alltbl_settingsrows once per request into a memoized map, eliminating per-call database queries acrossapp_info(),app_reading_setting(),app_sitename(),app_tagline(), andapp_url() - Database-driven Page Cache admin UI — Enable/disable full-page caching and configure cache lifetime (60–86400 seconds) directly from General Settings
safe_zip_extract()— Defense-in-depth wrapper blocking path traversal, symlink escapes, zip bombs, and null-byte injection in plugin/theme uploadssanitize_post_content()— Stripsstyleattributes andon*event handlers from post HTML- SRI integrity hash sync —
sync_integrity_hashes()recomputessha384hashes in theme templates after asset regeneration - Db statement cache —
prepareCached()reusesPDOStatementinstances for identical SQL within a request (capped at 64) applyTablePrefix()single-pass regex — Replaced per-table loop with a compiled alternation pattern sorted longest-first- Theme caller memoization —
theme_dir()andtheme_identifier()cache per request - Full PHP 8.5 compatibility — Updated 14 admin templates, controllers, DAOs, and utilities for PHP 8.5 deprecations
Security
safe_zip_extract()defends against path traversal, symlink escapes, zip bombs, and null-byte injectionsanitize_post_content()stripsstyleandon*attributes from post HTML- Polyglot image defense via GD/WebP library re-encoding
hash_equals()for rate-limiter timing attack prevention- IP-only bucket key eliminates API key header bypass
basename()sanitization inPluginServicescript-src-attr 'none'CSP directive
Breaking Change
PageCache OOP class removed — Replaced by procedural page-cache.php functions with database-driven cache enable and TTL settings.
Upgrade Notes
No migration required. The cache_enabled and cache_lifetime settings are automatically seeded during fresh installs. Existing installations will use the APP_CACHE constant as fallback until settings are configured via the admin UI.
59 files changed · 78 commits · 2,527 tests, 4,548 assertions, 0 failures
Full [Changelog](https://github.com/cakmoel/Scriptlog/blob/main/CHANGELOG.md#180