Журнал изменений
Module navigation links are now defined centrally in config/modules.php instead of scattered across individual admin/links.php files per module.
Core changes:
- Module configuration (config/modules.php):
- Added 'type' field to distinguish module categories
- Updated language constants for consistency
- Adjusted module active states and visibility settings
- Admin navigation (admin/index.php):
- Refactored menu building to use centralized config
- Removed dependency on individual links.php files
- Removed files (modules/*/admin/links.php):
- Deleted 19 redundant links.php files from modules
- Navigation data now comes from central registry
Benefits:
- Single source of truth for module navigation
- Easier module management and configuration
- Reduced code duplication across modules
Technical notes:
- Backward compatible with existing module structure
- Module type field: 0 = core, 1 = optional
Moves module discovery and status management to config/modules.php and uses it to build admin menus and module settings. Adds editable language/icon metadata and keeps config synced with the filesystem.
Core changes:
- Module registry (admin/modules/modules.php, config/modules.php):
- Scan admin/custom modules into
$confmdand save config when changed - Replace DB-driven status/edit/update flows with config-backed values
- Admin UI (admin/index.php, admin/modules/config.php):
- Build admin menus from config for type 0/1 modules and load admin module paths via
BASE_DIR - Allow SVG logos in admin selection and show translated titles
- Config handling (core/system.php):
- Load module config early and normalize nested values on save
- Fix statistics log rotation path
Benefits:
- Single source of truth for module metadata
- Reduced DB coupling and fewer sync mismatches
- Clearer admin menu rendering
Technical notes:
config/modules.phpnow storeslang,img,type,side,top- Admin module actions now use
modidentifiers instead ofmid - Backward compatibility: DB module table is no longer authoritative
Updated copyright year to 2026 and minor configuration adjustments.
Core changes:
- Global configuration (config/global.php):
- Update copyright year: 2025 -> 2026
- Configuration value adjustments
- Main entry point (index.php):
- Code updates and improvements
- Search module (modules/search/index.php):
- Module updates
Technical notes:
- No breaking changes
- Backward compatible
Added translation constants for new SEO-related configuration options across all supported languages.
Core changes:
- Admin language files (admin/language/*.php):
- _KEY_SEP: Separate keywords with commas
- _LTITLE: Use long titles
- _ADESC: Automatic description generation
- _DLETTER: Maximum description characters
- _RSEP: URL separator
- Core language files (language/*.php):
- Minor translation updates and fixes
- News module language files (modules/news/language/*.php):
- Translation updates for consistency
Benefits:
- Complete localization for new SEO features
- Consistent translations across de, en, fr, pl, ru, uk
Technical notes:
- All 6 supported languages updated
- Constants follow existing naming convention
Updated static analysis and testing configuration for improved code quality validation.
Core changes:
- PHPStan configuration (phpstan.neon):
Add ignore pattern for sprintf placeholder false positives
- Language constants resolved at runtime
- PHPUnit configuration (phpunit.xml):
- Add Validation test suite alongside Unit tests
- Exclude bootstrap.php from test discovery
- Git attributes (.gitattributes):
- Enforce LF line endings for PHP files
Benefits:
- Cleaner PHPStan output without false positives
- All validation tests run with composer quality
- Consistent line endings across platforms
Technical notes:
- PHPStan level 0 maintained
- PHPUnit 12 compatible configuration
New PHPUnit test suite for validating code quality, security, and consistency across the SLAED CMS codebase.
Core changes:
- BlockValidationTest.php:
- Validates block file syntax and naming
- Checks UTF-8 encoding compliance
- ConfigValidationTest.php:
- Validates configuration file structure
- Checks for required config keys
- InsertValidationTest.php:
- Validates INSERT queries have all required NOT NULL fields
- Parses SQL schema for field requirements
- LanguageValidationTest.php:
- Validates sprintf placeholder syntax
- Checks translation completeness across locales
- ModuleStructureTest.php:
- Validates module directory structure
- Checks for required files (index.php, language/)
- PhpFileFormatTest.php:
- Validates UTF-8 encoding (no BOM)
- Line endings check (skipped, needs project-wide normalization)
- SchemaUpdateValidationTest.php:
- Validates database migration files
- Checks SQL syntax
- SecurityValidationTest.php:
- Detects eval() with user input
- Checks for SQL injection patterns
- SetupFileWarningTest.php:
- Validates setup file warnings
- TemplateValidationTest.php:
- Validates HTML template structure
- Checks conditional syntax
Benefits:
- Automated quality assurance
- Early bug detection
- Consistent code standards enforcement
Technical notes:
- PHPUnit 12 compatible
- 58 tests, 74 assertions
- Integrated with composer quality command
Continued migration of language file naming from verbose format (lang-english.php) to ISO 639-1 codes (en.php) for consistency.
Core changes:
- Module language directories renamed:
- modules/recommend/language/
- modules/rss_info/language/
- modules/search/language/
- modules/shop/admin/language/
- modules/shop/language/
- modules/users/language/
- modules/voting/admin/language/
- modules/whois/admin/language/
- File naming changes:
- lang-english.php -> en.php
- lang-french.php -> fr.php
- lang-german.php -> de.php
- lang-polish.php -> pl.php
- lang-russian.php -> ru.php
- lang-ukrainian.php -> uk.php
Benefits:
- Consistent naming across all modules
- Shorter, standardized file names
- Aligns with ISO 639-1 language codes
Technical notes:
- File content unchanged
- Module loader updated to use new naming
Fixed malformed sprintf placeholders that had spaces between % and position number, causing formatting errors.
Core changes:
- Account module language files:
- modules/account/language/pl.php
modules/account/language/uk.php
- Fixed "% 1\$s" to "%1\$s" pattern
Benefits:
- sprintf() now works correctly with positional arguments
- Proper message formatting in Polish and Ukrainian locales
Technical notes:
- Space between % and position number is invalid
- PHPStan validation now passes for these files
Converted 27 files from Windows-1251 to UTF-8 encoding for consistency across the codebase and proper character display.
Core changes:
- Block files (blocks/*.php):
- block-center.php, block-center_forum.php, block-center_media.php
- block-files.php, block-forum.php, block-ipb_center_forum.php
- block-search.php
- Core files (core/*.php):
- geo_ip.php
- Admin links files (modules/*/admin/links.php):
- auto_links, changelog, clients, contact, content
- faq, files, forum, help, jokes, links, media
- money, news, order, pages, shop, whois
- Module files:
- modules/clients/index.php
Benefits:
- Consistent UTF-8 encoding across project
- Proper Cyrillic character display
- Eliminates encoding-related bugs
Technical notes:
- Converted using iconv from WINDOWS-1251 to UTF-8
- No content changes, only encoding conversion
Security improvement: removed eval() usage that processed template variables, replacing it with safe str_replace() function.
Core changes:
- Billing function (modules/money/admin/index.php):
- Remove eval() template processing
Use str_replace() with explicit variable mapping
- $charset, $theme, $title, $site_logo
- $sitename, $autor, $infos, $num
- $date, $menge, $kurs, $sum
Benefits:
- Eliminates code injection vulnerability
- Explicit variable substitution is more maintainable
- No functional change to template output
Technical notes:
- Template format unchanged (billing.html)
- All template variables mapped explicitly