История версий CMS Donate Engine

2026-10-09 13:34:12
fix(store): lazy-init Discount so apply() works without explicit data()

2026-10-09 13:23:29
refactor(store): extract modals to StoreModalController

2026-10-09 13:05:11
refactor(store): extract catalog to StoreCatalogController

2026-10-09 12:37:26
refactor(template): add renderModal/renderRestContent without exit

2026-10-09 12:00:12
refactor(store): simplify

2026-10-09 11:26:15
refactor(store): drop Template from services, add StoreResponse Services now return data (notify-structure) instead of rendered HTML. StoreResponse::restContent() is the single exit point that renders notify_message.tpl and delegates to Template::restContent. - StorePurchaseService: no Template, uses session->get() for cid/id - StoreAdminDeleteService: no Template, returns notify - StoreResponse: shared view helper for Store JSON responses - store.php: 851 lines, HTTP-only

2026-10-09 10:41:00
refactor(store): drop Template from StorePurchaseService

2026-10-09 09:36:25
fix(cleanup): tolerate race conditions in cleanupCaches

2026-10-09 06:23:31
refactor(store): extract roulette test into StoreRouletteTestService refactor(store): extract products json into StoreProductsJsonView

2026-10-09 06:11:45
refactor(store): extract admin delete into StoreAdminDeleteService

2026-10-09 05:56:47
refactor(store): extract server form into StoreServerFormData

2026-10-09 05:49:11
refactor(store): extract group form into StoreGroupForm/FormData

2026-10-08 18:51:41
refactor(store): extract purchase flow into StorePurchaseService Move itemID branch (resolver, cooldown, ValidatePayment, GiveContext, PurchaseFactory) from controller into StorePurchaseService. Controller keeps only HTTP: instantiation + Template::restContent.

2026-10-08 16:45:40
feat(console): add app:lint:container command Compile DI container before deploy to catch autowiring errors. ContainerFactory::lint() reuses createBuilder() without dumping or writing cache files.

2026-10-08 14:40:59
fix(store): move StoreImagePicker to View/ to exclude from DI

2026-10-08 14:36:04
refactor(store): extract image picker from controller Move scandir + tmbs filtering from imageSelect branch into StoreImagePicker. Controller keeps only HTTP: assigns tmbs and calls modal.

2026-10-08 12:18:43
refactor(store): extract model layer from store.php Move data preparation out of the controller into dedicated classes: StoreProductFormData (insert branch), StoreProductForm (add/edit modal), StorePackageView (package modal), StoreCatalogView (index/server/category). Also fixes: - item='all' discount now matches in server/group badges - number_format on string money/price (PHP 8.5 strictness)

2026-10-08 08:42:13
test(store): cover PurchaseResolver::resolve() Inject RandomItemPicker via constructor. Add 12 unit tests for product/set/switch/roulette branches and DTO contract.

2026-10-07 18:37:03
refactor(store): move localization to Smarty helpers - Replace $LANGUAGE->t() and $config->get() assigns with {'KEY'|t} and {'cfg'|cfg} in all store templates - Drop dead assigns and hardcoded strings - Restore steam fallback in SteamForm::render - Assign meta description/keywords on store index

2026-10-07 14:17:33
refactor(store): extract read-side into query classes Move inline SELECTs from store.php into StoreGroupQuery, StoreProductQuery, StoreItemQuery. Add StoreServerCommand for editServer partial UPDATE. Reuse existing query methods that were duplicated inline.