Журнал изменений
Focus: ops
Summary
Updates copyright year to 2026 and adds standardized commit message template.
Changes
What
- Update copyright year in modules.php to 2026
- Add .gitmessage template for consistent commit formatting
Why
- Keep copyright notices current
- Standardize commit message format across team
Test
- N/A - metadata changes only
Impact
For Admins / DevOps
- None
For Developers
- Use .gitmessage as template:
git config commit.template .gitmessage
Breaking Changes
- None
Upgrade
- No action required
Focus: UX
Summary
Standardizes language icon filenames using ISO 639-1 two-letter codes for consistency and internationalization.
Changes
What
- Rename language icons from full names to ISO codes (e.g., english_mini.png → en_mini.png)
- Applied to admin, default, and lite templates
Why
- Align with international standards (ISO 639-1)
- Simplify language detection logic
- Enable consistent naming across all templates
Test
- Visual inspection of language switcher in all templates
Impact
For Admins / DevOps
- None - purely cosmetic change
For Developers
- Update any hardcoded references to old icon names
- New naming: de, en, fr, pl, ru, uk
Breaking Changes
- Language icon filenames changed - update template references if needed
Upgrade
- No action required if using dynamic language detection
Focus: stability
Summary
Adds static analysis and unit testing tools to improve code quality and catch bugs early.
Changes
What
- Add PHPStan for static code analysis (level 0)
- Add PHPUnit 12 for unit testing
- Create test directory structure with example tests
- Update .gitignore for test artifacts
Why
- Enable automated code quality checks
- Establish foundation for test-driven development
- Catch type errors and bugs before runtime
Test
- PHPStan:
php vendor/bin/phpstan analyse(81 issues found at level 0) - PHPUnit:
php vendor/bin/phpunit(3 tests passing)
Impact
For Admins / DevOps
- New dev dependencies: phpstan/phpstan, phpunit/phpunit
- Run
composer installto get testing tools
For Developers
- Use
php vendor/bin/phpstan analyseto check code - Use
php vendor/bin/phpunitto run tests - Add tests in
tests/Unit/directory
Breaking Changes
- None
Upgrade
- Run
composer install --devto install testing tools
This commit completes the module system migration by updating the admin panel and admin management to use module names instead of database IDs, aligning with the new config-based module architecture.
admin/index.php - Admin panel module loading:
Panel sidebar (panelblock function):
- Replace: SELECT title, active FROM _modules query
- Use: getModules() iterator for module enumeration
- Direct module name access eliminates database dependency
Panel navigation (panel function):
- Replace: SELECT title, active FROM _modules query
- Use: getModules() iterator for building navigation
- Consistent with panelblock implementation
Module loader refactoring:
- System modules: Use BASE_DIR constant for absolute paths
- Change: include() → require_once for better error handling
- Custom modules: Remove database lookup for module existence
- Direct filesystem check: file_exists(modules/$name/admin/index.php)
- Clean up: Remove commented experimental code
- Code formatting: Consistent indentation and spacing
admin/modules/admins.php - Admin permissions management:
Module list generation (add function):
- Replace: SELECT mid, title FROM _modules query
- Use: getModules() iterator to enumerate available modules
- Change checkbox values: mid (database ID) → title (module name)
- Update permission check: Compare with module name instead of ID
- Storage format: Comma-separated names instead of IDs
Permission save handler (save function):
- Parameter type change: 'amodules[]', 'num' → 'amodules[]', 'var'
- Accept module names (strings) instead of numeric IDs
- Implode array to comma-separated string of names
- Database stores: "news,pages,users" instead of "1,5,8"
Benefits:
- No database queries for module enumeration (performance gain)
- Module permissions portable across installations
- Human-readable permission strings for debugging
- Eliminates mid/title mismatch issues during migrations
- Consistent with config-based module architecture
Technical notes:
- Admin permissions stored as module name CSV in database
- Module existence validated by filesystem, not database
- getModules() provides consistent iteration interface
- Backward compatibility maintained for existing installs
Files changed: 2 files Impact: Admin panel, module permissions, panel navigation
admin/modules/modules.php:
- Remove commented debug line (migrateModulesConfig call)
- Delete legacy database-based module scanning code (32 lines)
- Remove obsolete module sync logic from old system
- Clean up empty lines for better readability
admin/modules/newsletter.php:
- Fix setConfigFile parameter order: (file, name, base, update)
- Align with refactored function signature