mirror of
https://github.com/Vateron-Media/XC_VM.git
synced 2026-10-05 12:02:27 +02:00
The front controller selected a pair of procedural files per scope (<scope>_session.php + <scope>_functions.php) from a hardcoded map and require'd them at global scope. Consolidate into a typed class hierarchy: - ScopeBootstrap (interface) + ScopeBootstrapFactory::create($scope) - Admin/Reseller/PlayerScopeBootstrap, each porting its former session + functions logic 1:1 into boot()/bootSession()/bootFunctions(). index.php now calls ScopeBootstrapFactory::create($scope)->boot() instead of building file paths and require'ing. Unknown scopes still fall back to admin. Behaviour is unchanged: the view-facing globals ($rUserInfo, $rPermissions, $_STATUS, $customScript, $_PAGE, server/health flags) are still injected via explicit `global` declarations in the boot methods, so the ~140 procedural view templates read them from scope exactly as before. player_utility_- functions.php is unchanged and still loaded by PlayerScopeBootstrap. Also fix the PHPStan stub: SERVER_ID is an int (getMainID(): ?int, a server_id PK), not a string. Moving its define() into a class method meant PHPStan no longer inferred the type from a top-level define and fell back to the stub, which wrongly typed it `(string) mt_rand()` — surfacing 20 false argument.type errors at int-param call sites. Stub now uses mt_rand(). Removes: admin_session_fc.php, admin_functions_fc.php, reseller_session.php, reseller_functions.php, player_session.php, player_functions.php. make phpstan / cs / gates all green.