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

simba77
refactor(downloads): extract FileCommentsController with clean URL route
Migrate ?act=comments&id=X to /downloads/comments/{id}. Legacy action
now redirects. Comments class gets buildUrl()/queryBase() helpers so
URL param separator is chosen correctly (? vs &) based on the base URL,
enabling path-based routing without appending redundant query params.
simba77
refactor(downloads): extract ViewFileController with clean URL route
Migrates ?act=view to /downloads/files/{id}/ with proper MVC structure:
VoteOnFileUseCase, ToggleBookmarkUseCase, FileMediaInfoService for getID3/image
metadata, Session class replacing raw $_SESSION access. Updates all old
?act=view links across includes and templates. Fixes Bootstrap 5 video ratio
classes and corrects "on moderation" wording to "awaiting moderation".
simba77
refactor: extract PageMeta value object for document title and description
Eliminates duplicated buildDocumentTitle/buildDescription private methods
across 6 downloads controllers by introducing a PageMeta VO.
Optional description parameter handles cases where page description differs
from the document title.
simba77
chore(downloads): remove dead redirect action from index.php
simba77
refactor(downloads): extract CommentsReviewController with clean URL route
Migrates ?act=review_comments to /downloads/comments-review/ via a dedicated
controller, use case, and repository method. Updates the index template link.
simba77
refactor(downloads): extract FavoritesController, rename bookmark to favorites
Migrates ?act=bookmark to /downloads/favorites/ via a dedicated controller,
use case, and repository method. Updates the index template link accordingly.
simba77
refactor(downloads): extract UserFilesController with slug-based route
Migrates ?act=user_files&id={id} to /downloads/user-files/{id} via a
dedicated controller, use case, and repository method. Updates top-users
page to link to the new URL.
simba77
refactor(downloads): extract TopUsersController with clean URL route
Migrates ?act=top_users to /downloads/top-users/ via a dedicated controller,
use case, and repository method. Two-query pagination strategy avoids MySQL
ONLY_FULL_GROUP_BY violation from grouping users by PK with SELECT *.
simba77
refactor(downloads): include search query in page title and description
simba77
refactor(downloads): extract SearchController with GET-based search URL
- New route GET /downloads/search handled by SearchController
- SearchFilesUseCase sanitizes query and delegates to repository
- DownloadFileRepository::searchFiles() with LIKE escaping
- Search form uses GET method so query is preserved in the URL
- 301 redirect from legacy ?act=search to /downloads/search/
- All Eloquent queries updated to use ::query() for IDE autocompletion