Последнии сообщения форума
Всего: 127 Коммитов в репозитории |
Отфильтровано: 127 Коммиты |
Страница: 1 / 13
Вчера (30.12.2025)
Refactor: Migrate admin panel from database module IDs to config-based names
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:
1. Panel sidebar (panelblock function):
- Replace: SELECT title, active FROM _modules query
- Use: getModules() iterator for module enumeration
- Direct module name access eliminates database dependency
2. Panel navigation (panel function):
- Replace: SELECT title, active FROM _modules query
- Use: getModules() iterator for building navigation
- Consistent with panelblock implementation
3. 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:
1. 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
2. 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
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:
1. Panel sidebar (panelblock function):
- Replace: SELECT title, active FROM _modules query
- Use: getModules() iterator for module enumeration
- Direct module name access eliminates database dependency
2. Panel navigation (panel function):
- Replace: SELECT title, active FROM _modules query
- Use: getModules() iterator for building navigation
- Consistent with panelblock implementation
3. 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:
1. 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
2. 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
Эта неделя (29.12.2025)
Cleanup: Remove legacy code and fix setConfigFile calls
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
• 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
Refactor: Migrate module system from database to configuration files
This commit represents a major architectural change in SLAED CMS, moving module
management from database storage to file-based configuration for better performance,
portability, and version control integration.
Core changes:
1. Module configuration storage (config/modules.php):
- Rename field: 'inmenu' → 'menu' for clarity
- Store all module settings: active, view, menu, group, side, top
- Configuration now version-controlled and portable
- 26 modules migrated with existing settings preserved
2. New module management functions (core/system.php):
- Add getModules($title = null): Iterator-style module reader
* Returns array: [title, active, view, menu, group, side, top]
* Static iterator for row-by-row processing
* Single module lookup when title provided
- Load modules.php configuration on bootstrap
- Enhance setConfigFile(): array_replace_recursive for deep merging
3. Module synchronization utility (core/admin.php):
- Add updateModulesConfig(): Sync config with filesystem
* Scan modules/ directory for actual modules
* Add new modules with default settings
* Preserve existing module configurations
* Remove entries for deleted modules
* Natural case-insensitive sorting
4. Admin module management refactor (admin/modules/modules.php):
- Remove temporary migration function migrateModulesDbToConfig()
- Replace database operations with config file operations
- Update all functions to use config-based storage:
modules():
- Call updateModulesConfig() to sync filesystem
- Read modules via getModules() iterator
- Comment out legacy directory scanning code
edit():
- Parameter change: 'mid' (DB ID) → 'mod' (module name)
- Load settings from config instead of database
- Field renames: mod_group→group, blocks_m→side, blocks_mc→top
- Display module status in edit form
status():
- Update module active state in config file
- Use setConfigFile() instead of SQL UPDATE
save():
- Persist all module settings to config file
- Conditional group assignment (only for view=1)
- Parameter renames throughout: inmenu→menu, mod_group→group
5. Setup/upgrade system (setup/index.php):
- Sync setConfigFile() implementation with core
- Add recursive normalization for nested arrays
- Fix parameter order in setConfigFile() calls
- Add update6_3 migration:
* Read all modules from database _modules table
* Generate initial config/modules.php
* Rename inmenu→menu during migration
Benefits:
• No database queries for module configuration (performance)
• Module settings in version control (auditability)
• Easier backup and restore (portability)
• Simpler debugging (readable PHP arrays)
• Atomic updates via setConfigFile() with file locking
Technical details:
• Maintains backward compatibility during upgrade
• Config file auto-regenerates from filesystem scan
• Preserves all existing module settings
• Natural sorting ensures consistent file ordering
• Deep merge allows partial config updates
Files changed: 5 files, ~250 lines modified
Database impact: Replaces _modules table reads/writes with config file I/O
management from database storage to file-based configuration for better performance,
portability, and version control integration.
Core changes:
1. Module configuration storage (config/modules.php):
- Rename field: 'inmenu' → 'menu' for clarity
- Store all module settings: active, view, menu, group, side, top
- Configuration now version-controlled and portable
- 26 modules migrated with existing settings preserved
2. New module management functions (core/system.php):
- Add getModules($title = null): Iterator-style module reader
* Returns array: [title, active, view, menu, group, side, top]
* Static iterator for row-by-row processing
* Single module lookup when title provided
- Load modules.php configuration on bootstrap
- Enhance setConfigFile(): array_replace_recursive for deep merging
3. Module synchronization utility (core/admin.php):
- Add updateModulesConfig(): Sync config with filesystem
* Scan modules/ directory for actual modules
* Add new modules with default settings
* Preserve existing module configurations
* Remove entries for deleted modules
* Natural case-insensitive sorting
4. Admin module management refactor (admin/modules/modules.php):
- Remove temporary migration function migrateModulesDbToConfig()
- Replace database operations with config file operations
- Update all functions to use config-based storage:
modules():
- Call updateModulesConfig() to sync filesystem
- Read modules via getModules() iterator
- Comment out legacy directory scanning code
edit():
- Parameter change: 'mid' (DB ID) → 'mod' (module name)
- Load settings from config instead of database
- Field renames: mod_group→group, blocks_m→side, blocks_mc→top
- Display module status in edit form
status():
- Update module active state in config file
- Use setConfigFile() instead of SQL UPDATE
save():
- Persist all module settings to config file
- Conditional group assignment (only for view=1)
- Parameter renames throughout: inmenu→menu, mod_group→group
5. Setup/upgrade system (setup/index.php):
- Sync setConfigFile() implementation with core
- Add recursive normalization for nested arrays
- Fix parameter order in setConfigFile() calls
- Add update6_3 migration:
* Read all modules from database _modules table
* Generate initial config/modules.php
* Rename inmenu→menu during migration
Benefits:
• No database queries for module configuration (performance)
• Module settings in version control (auditability)
• Easier backup and restore (portability)
• Simpler debugging (readable PHP arrays)
• Atomic updates via setConfigFile() with file locking
Technical details:
• Maintains backward compatibility during upgrade
• Config file auto-regenerates from filesystem scan
• Preserves all existing module settings
• Natural sorting ensures consistent file ordering
• Deep merge allows partial config updates
Files changed: 5 files, ~250 lines modified
Database impact: Replaces _modules table reads/writes with config file I/O
23.12.2025
Setup: Add generated module configuration file
• Create config/modules.php with all module settings
• Migrate module data from database to configuration
• Include settings for 26 modules: active, view, inmenu, group, side, top
• Generated by migrateModulesDbToConfig() function
• Migrate module data from database to configuration
• Include settings for 26 modules: active, view, inmenu, group, side, top
• Generated by migrateModulesDbToConfig() function
Refactor: Migrate SEO config and improve code formatting
Core changes:
• Merge config/config_seo.php into core/system.php
* Move $confse SEO configuration array inline
* Remove separate config_seo.php file
* Consolidate configuration loading
• Enhance setConfigFile() function in core/system.php
* Add recursive normalization for array values
* Convert booleans to string '0'/'1'
* Handle floats, integers, and null values
* Add copyright header to generated files
* Improve type safety and consistency
• Add module migration utility in admin/modules/modules.php
* Create migrateModulesDbToConfig() function
* Migrate module settings from database to config file
* Extract: active, view, inmenu, group, side, top fields
* Generate config/modules.php via setConfigFile()
Code formatting:
• core/access.php: Convert tabs to spaces, update copyright to 2026
• core/security.php: Fix indentation, add trailing newline
• modules/news/index.php: Reformat code structure
Configuration:
• config/global.php: Regenerate sitekey
Files changed: 7 modified, 1 deleted
• Merge config/config_seo.php into core/system.php
* Move $confse SEO configuration array inline
* Remove separate config_seo.php file
* Consolidate configuration loading
• Enhance setConfigFile() function in core/system.php
* Add recursive normalization for array values
* Convert booleans to string '0'/'1'
* Handle floats, integers, and null values
* Add copyright header to generated files
* Improve type safety and consistency
• Add module migration utility in admin/modules/modules.php
* Create migrateModulesDbToConfig() function
* Migrate module settings from database to config file
* Extract: active, view, inmenu, group, side, top fields
* Generate config/modules.php via setConfigFile()
Code formatting:
• core/access.php: Convert tabs to spaces, update copyright to 2026
• core/security.php: Fix indentation, add trailing newline
• modules/news/index.php: Reformat code structure
Configuration:
• config/global.php: Regenerate sitekey
Files changed: 7 modified, 1 deleted
22.12.2025
Docs: update README content
Setup/config: update config loaders and setup entrypoint
Config admin: fix saving module multiselect input
Refactor: Remove forum module and cleanup code
• Delete forum module (core/forum.php)
• Remove forum-related images
• Rename admin info files (configure-*.html → config-*.html)
• Update language files
• Modernize blocks and modules
• Create config/global.php
• Remove forum-related images
• Rename admin info files (configure-*.html → config-*.html)
• Update language files
• Modernize blocks and modules
• Create config/global.php
Modernize admin/modules/config.php: Quote conversion and code cleanup
• Convert all double quotes (") to single quotes (')
• Remove dead commented code (# DELETE block)
• Rename function configNavi() → navi()
• Add return type hints (: void)
• Modernize opendir/readdir → scandir()
• Replace timezone array with timezone_identifiers_list()
• Update require_once to use CONFIG_DIR constant
• Add exit after header redirect
• Implement strict comparisons (===, !==)
• Format code according to SLAED standards
• Remove dead commented code (# DELETE block)
• Rename function configNavi() → navi()
• Add return type hints (: void)
• Modernize opendir/readdir → scandir()
• Replace timezone array with timezone_identifiers_list()
• Update require_once to use CONFIG_DIR constant
• Add exit after header redirect
• Implement strict comparisons (===, !==)
• Format code according to SLAED standards





