Журнал изменений
Fix undefined array key warning when search results don't fill the last page, and improve search word input handling.
Core changes:
- Pagination bounds check (index.php:232):
Add isset($conts[$i]) before accessing array element
- Prevents "Undefined array key" when results < page size
- Loop calculates range from $conf['snum'] but array may be shorter
- Search input handling (index.php):
Replace direct $_POST/$_GET access with getVar('req', 'word', 'word')
- Consistent with project input handling conventions
- Proper URL decoding and filtering via var_filter()
Initialize $conts = [] before population loop
- Prevents potential undefined variable warning
Benefits:
- Eliminates warnings on search queries with partial result pages
- Safer input handling through centralized getVar() function
- Clean array initialization prevents edge-case errors
Fix multiple deprecated/warning errors caused by passing null values to string functions when users are not authenticated (bots, guests).
Core changes:
- Null-safe $admin[3] access (security.php, system.php):
Fix checkPost() substr() null deprecation
- Add is_array() check with null coalescing for $admin[3]
Fix save_text() substr() null deprecation
- Same pattern applied consistently
Fix replace_break() substr() null deprecation
- Prevent crash when $admin is not initialized
- Config includes refactoring (system.php):
Move fields.php, statistic.php, rss.php to global scope
- Prevents require_once failure on repeated function calls
Fix fields_out() to use global $conffi instead of require
- require_once inside function only loads file on first call
- Update head() global declarations for $confrs, $confst
- Restore config_seo.php external config file
- Null-safe $user[3] access (account/index.php):
Fix last() function undefined array key warning
- Add null coalescing for $user[3] in user_news() call
Benefits:
- Eliminates PHP 8.1+ deprecation warnings for guest/bot visitors
- Prevents silent failures from require_once inside functions
- Consistent null-safety pattern across all $admin[3] usages
Technical notes:
- Pattern used: $flag = is_array($x) ? ($x[n] ?? '') : ''
- No behavioral changes for authenticated users
- Backward compatible with PHP 7.4+
Added Bootstrap Icons library to provide scalable vector icons for the admin panel interface elements.
Core changes:
- Icon stylesheet (templates/admin/bootstrap-icons.css):
- Bootstrap Icons CSS with font-face declarations
- Icon class definitions for all available Bootstrap Icons
- Font files (templates/admin/fonts/):
- bootstrap-icons.woff and bootstrap-icons.woff2 font files
- index.html placeholder for directory listing protection
Benefits:
- Scalable vector icons for admin interface elements
- Consistent icon styling across the admin panel
- Lightweight WOFF2 format for optimal loading performance
Technical notes:
- Font files referenced via relative path from CSS
- Used by modules admin for type and database status indicators
Enhanced the modules admin panel with type-based filtering and automatic detection of new or removed modules in the filesystem.
Core changes:
- Module type filter (modules.php):
Added dropdown filter to show All/Users/Admins module types
- Filter persists in navigation links
Modules now sorted by type (Admin=0, User=1) then alphabetically
- Uses uksort with natural case-insensitive comparison
- Added Bootstrap Icons for module type indication (tools/people-fill)
- Added database status icons (bi-database-fill-gear, fill-dash, fill-add)
- New/Deleted module notifications (modules.php):
- Detect and display newly found modules not yet in config
Detect and notify about modules removed from filesystem
- Automatically cleans up config for removed modules
- Language constants (language/*.php):
- Added _MODULES_NEW for new module detection messages
Added _MODULES_DELETED for removed module notification
- Translations in all 6 languages (de, en, fr, pl, ru, uk)
Benefits:
- Easier module management with type-based filtering
- Instant visibility of filesystem changes via notifications
- Better visual distinction between admin and user modules
Translated all 16 remaining admin module documentation files from Russian to German, English, Ukrainian, French, and Polish (80 files total).
Core changes:
- Module info translations (admin/info/):
favorites, fields, groups, lang, messages, modules
- Complete documentation for module management and configuration
newsletter, privat, ratings, referers, replace
- User-facing feature documentation in all 5 target languages
rss, security, statistic, template, uploads
- Technical documentation with preserved code examples and BBCode formatting
Benefits:
- Full multilingual admin documentation coverage for all 23 modules
- Consistent BBCode formatting and HTML entities across all translations
- Technical terms, file paths, and code examples preserved unchanged
Technical notes:
- groups module uses -po.html suffix for Polish (legacy naming)
- uploads module uses -pL.html suffix for Polish (legacy naming)
- All translations based on Russian (-ru.html) source templates
Added development tooling configuration and testing documentation.
Core changes:
- PHP CS Fixer configuration (.php-cs-fixer.dist.php):
- Code style rules for automated formatting
- PSR-12 compatible configuration
- Test documentation (docs/TESTS.md):
- PHPUnit testing guidelines
- Test structure documentation
Benefits:
- Consistent code formatting across project
- Clear testing guidelines for contributors
Updated all documentation to reflect current project status (~65% complete) and standardized module info file naming to ISO language codes.
Core changes:
- Documentation updates (*.md):
- Updated dates to February 2026 across all docs
- Fixed progress status from 50% to ~65%
- Listed all 23 modernized admin modules
- Translated German text to Russian in .rules files
- Module info files (modules/*/admin/info/):
- Renamed english.html → en.html
- Renamed german.html → de.html
- Renamed french.html → fr.html
- Renamed polish.html → pl.html
- Renamed russian.html → ru.html
Renamed ukrainian.html → uk.html
- Applied to: auto_links, clients, contact modules
- Admin modules and config (admin/, config/):
- Updated admin/index.php structure
- Updated language files (de, en, fr, pl, ru, uk)
- Reorganized config/modules.php
Benefits:
- Consistent ISO 639-1 language code naming
- Accurate documentation reflecting real progress
- Better maintainability and structure
Technical notes:
- No breaking changes
- Language code naming follows ISO 639-1 standard
- Documentation now in sync with codebase state
Move module configuration/visibility to config-based sources and update admin permissions to use module names, aligning admin assets/tests with the current module layout.
Core changes:
- Module config & access (core/system.php, core/user.php, index.php, admin/modules/*.php, setup/index.php):
Switch runtime module state to config modules
- Use $confmd instead of _modules reads
- Migrate admin module lists to name-based storage
- Update admin screens and block listing to use config modules
- Module/admin structure & assets (modules/, admin/info/, templates/admin/basic-changelog.html):
- Refresh admin info pages and module admin layouts
- Reorganize rss/sitemap/account/changelog admin assets
- Tests (tests/ModuleStructureTest.php):
- Drop obsolete links.php requirement
Benefits:
- Consistent, file-based module configuration
- Admin permissions now human-readable and stable
- Tests reflect current admin structure
Technical notes:
- config/modules.php is the single source of module metadata
- admins.modules stores module names
- No runtime dependency on _modules (migration in setup only)
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