История коммитов

.
test(guestbook): add unit tests for module use cases, access and forms
.
docs(agents): add pagination usage guidelines
.
refactor(guestbook): extract user stats update to repository
.
feat: add new pagination component and migrate guestbook to it
.
refactor(guestbook): migrate to use case architecture
- fix TypeError: nullable manage URLs in GuestbookEntryMetaDTO
- enforce manage access server-side: edit/delete/reply check author rights (403)
- unify mode/access checks in GuestbookMode and GuestbookAccess, drop GuestbookService
- add use cases: create, edit, reply, delete, clear + context/ensure-access guards
- move all data access to GuestbookEntryRepositoryInterface, add ClearGuestbookPeriod enum
- extract text formatting from model to GuestbookEntryTextFormatter (profile activity updated)
- use PageMeta for paginated titles, Session service instead of $_SESSION
- escape user text at output in templates instead of controllers
- log previously swallowed exceptions in captcha and attached files cleanup
.
refactor(admin): remove legacy dispatcher and dead code
All admin actions are migrated, so drop the legacy query-param front controller
(modules/admin/index.php), the includes/ directory, the catch-all admin.legacy
route, and the deprecated BaseAdminController (replaced by AdminControllerContext).
Removes the dead mail/index dispatcher entries. Trailing-slash links keep working
via the global rtrim in the front controller.
.
refactor(admin): migrate file integrity scanner to new architecture
Move the antispy file integrity scanner to FileIntegrityController (rights>=9
super-group) at /admin/file-integrity (menu, GET scan, GET snapshot confirm +
POST create). Extract the CRC32 snapshot/scan logic into CrcFileIntegrityScanner
behind FileIntegrityScannerInterface; add Scan/CreateSnapshot use cases and a
result DTO. Snapshot creation is POST + CSRF with a PRG redirect. Remove
includes/antispy.php and the dispatcher entry; point both sidebars at
/admin/file-integrity.
.
refactor(admin): migrate forum management to new architecture
Migrate the forum admin mini-module (legacy includes/forum dispatcher, 8 modes)
to controllers under /admin/forum: dashboard, settings (rights>=9), structure
CRUD (categories/sections with slug generation and delete flows that move
subsections/topics or cascade-delete content), and hidden topics/posts with
author/section filters and rights>=9 bulk purge. Reuse forum module models
(ForumSection/Topic/Message/File/Vote/Unread); add ForumAdmin/ForumConfig/
ForumStructure/HiddenForum repositories, use cases, slug generator and hidden
row mappers. Convert all ?mod= GET mutations to POST forms with CSRF and PRG.
Remove includes/forum.php and includes/forum/, drop the dispatcher entry, and
point both sidebars at /admin/forum.
.
refactor(admin): migrate ads management to new architecture
Move advertisement CRUD to AdsController under REST routes /admin/ads
(list by placement type, new/edit/store, up/down within type, toggle, delete,
clear inactive). Add Ad model, AdRepositoryInterface (CRUD + sort swap +
deleteInactive), use cases GetAdList/SaveAd/ManageAd, and AdRowMapper for the
agreement/remains/styles presentation. Convert ?mod= GET mutations to POST forms
with CSRF and PRG redirects; fix the legacy edit-form bug that showed the link in
the name field. Remove includes/ads.php and the dispatcher entry; point both
sidebars at /admin/ads.
.
refactor(admin): migrate counters to new architecture
Move counters CRUD to CountersController (rights>=9 super-group) under REST routes
/admin/counters (list/view/new/edit/preview/store/toggle/up/down/delete). Add
Counter model, CounterRepositoryInterface (CRUD + sort swap), and use cases
GetCounterList/SaveCounter/ManageCounter. Convert ?mod= GET mutations (toggle,
up, down, delete) to POST forms with CSRF and PRG redirects; store counter code
raw and render it raw only in the trusted admin preview (escape names/attributes).
Remove includes/counters.php and the dispatcher entry; point both sidebars at
/admin/counters.