fix(store): restore globals and init keys, clean up Charset check
- FrontRunner: set $GLOBALS['db'] and $GLOBALS['config'] so legacy
classes (GameAuth, modelConfirm) can resolve them via `global`
- store.php itemID: init $r['rulette']/lot/chance/sound before resolver
to silence undefined-key warnings in restContent
- Charset::toUtf8: remove dead `!== false` check on mb_convert_encoding
(PHP 8 never returns false, only throws)
fix(user): preserve fractional money balance in CurrentUser and PlayerDataRepository
- PlayerDataRepository::getUserDataByUsername: (int) !92 (float) for coins/rub
- CurrentUser::load: (int) !92 (float) for coins/rub
- CurrentUser::getCoins/getRub: return type int !92 float
Fixes loss of fractional balance after discounted purchases.
fix(store): keep bundle item fields when switching product types
- addItemPanelWithIndex: always fill hidden price/chance/sound inputs
regardless of active product mode, so values persist when admin
toggles between set/switch/roulette in the edit form
- insert handler: merge submitted items with existing serialized items
by id, preserving fields not present in the current form (cmd/give/lang,
prices, chance, sound)