Panel/modules/steam_workshop
copilot-swe-agent[bot] 8eff063a93
feat: add database-driven Steam Workshop system
- Create 3 new DB tables: workshop_game_profiles, workshop_cache, server_workshop_mods
- Add WorkshopRepository (DB access layer for all 3 tables)
- Add WorkshopInstaller (rsync/robocopy/custom_script copy logic, SteamCMD download via agent exec)
- Add WorkshopUpdater (scheduled cache update functions grouped by agent)
- Add WorkshopPreStart (pre-start mod sync helper)
- Add WorkshopProfileController (admin CRUD for profiles)
- Add WorkshopModController (user install/remove/toggle/load_order/sync)
- Add admin views: profiles list + profile_form
- Add user views: user_workshop_index + user_workshop_mods
- Add cron_update.php CLI entry point (--all/--agent-id/--home-id/--profile-id/--workshop-id)
- Add prestart_sync.php CLI helper for XML pre_start hook
- Update workshop_admin.php to route to profile management
- Update main.php to route to new mod management (legacy fallback preserved)
- Update module.php with DB migration SQL and version bump to 2.1
- Update lang/en_US.php with all new strings

Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/dbeebd0e-e7a5-469d-8a8c-e63193d1ebb0

Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
2026-04-30 18:01:33 +00:00
..
bin used gpt script 2026-01-31 12:07:22 -06:00
controllers feat: add database-driven Steam Workshop system 2026-04-30 18:01:33 +00:00
data Updates 2026-01-17 19:45:24 -06:00
DayZ Workshop Mod Auto Update Steam workshop UPDATE 2026-01-17 09:12:06 -06:00
game_configs No changes 2025-09-11 13:29:15 -04:00
lang feat: add database-driven Steam Workshop system 2026-04-30 18:01:33 +00:00
lib feat: add database-driven Steam Workshop system 2026-04-30 18:01:33 +00:00
migrations feat: add database-driven Steam Workshop system 2026-04-30 18:01:33 +00:00
views feat: add database-driven Steam Workshop system 2026-04-30 18:01:33 +00:00
cron_update.php feat: add database-driven Steam Workshop system 2026-04-30 18:01:33 +00:00
functions.php Apply automated PHP8 safety transforms 2026-04-23 14:01:37 +00:00
main.php feat: add database-driven Steam Workshop system 2026-04-30 18:01:33 +00:00
module.php feat: add database-driven Steam Workshop system 2026-04-30 18:01:33 +00:00
monitor_buttons.php Updates 2026-01-17 19:45:24 -06:00
navigation.xml updated 2026-01-17 09:37:36 -06:00
prestart_sync.php feat: add database-driven Steam Workshop system 2026-04-30 18:01:33 +00:00
README.md Steam workshop UPDATE 2026-01-17 09:12:06 -06:00
steam_workshop.css Fix workshop search appID lookup and checkbox picker 2026-01-31 19:01:46 +00:00
steam_workshop.js Address Steam Workshop search review notes 2026-01-31 20:23:40 +00:00
uninstall.php Apply automated PHP8 safety transforms 2026-04-23 14:01:37 +00:00
workshop_admin.php feat: add database-driven Steam Workshop system 2026-04-30 18:01:33 +00:00

Steam Workshop Automation (WIP)

This folder now hosts the rewritten Steam Workshop tooling for the GSP panel. The previous DayZ-only batch scripts are left untouched under DayZ Workshop Mod Auto Update/ for historical reference, but the new MVC layer introduces adapters, XML-backed configuration, and an eventual agent scheduler.

Milestone 1 summary

  • Controllers controllers/SteamWorkshopController.php routes the module entrypoint through a thin MVC wrapper.
  • Service layer lib/SteamWorkshopService.php loads/saves per-home XML configs under data/configs/<home_id>.xml, parses Modlist-style imports, and exposes adapter metadata.
  • Adapters lib/GameAdapters/*.xml define canonical behaviors for DayZ, Arma 3, ARK, Garry's Mod, and CS2. They are validated against schema.xsd.
  • Views views/* render the server list, edit form, and parsed mod table using localized strings from lang/en_US.php.
  • Data directory data/configs/ stores the serialized workshop configuration for each game home.

Editing workflow

  1. Visit home.php?m=steam_workshop&p=main to see the list of homes you can access. Click Configure on any home to edit its Workshop setup.
  2. Paste a Modlist.txt style payload (e.g., 1565508334,@MyMod) into the Workshop IDs textarea.
  3. Choose the adapter, interval, install strategy, and on-update action, then click Save settings. The controller serializes this into XML so the agent can consume it later.
  4. Config files live under modules/steam_workshop/data/configs/. Delete a file to reset a home to defaults.

Roadmap

  • Milestone 2 will flesh out the adapter runtime helpers and validation against the schema.
  • Milestone 3 wires the Linux/Windows agents via a new workshop_update RPC and scheduler, using the serialized XML from this module.
  • Later milestones add dry-run/apply actions, activation writers, and safe apply hooks.

GSP is a heavily customized fork of OGP maintained by WDS. Keep all Steam Workshop code inside this module tree so storefront, agents, and future docs stay decoupled.