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

.
refactor(album): migrate album deletion to new architecture
Add DeleteAlbumController (GET confirmation + POST submit) with
GetDeleteAlbumContextUseCase guard (owner or rights>=6) and DeleteAlbumUseCase
cascading removal of photo files, votes, comments, photos and the album.
Replace the delete_token with the standard csrf_token + Csrf validator. New
routes GET+POST /album/{al}/delete; drop the delete action from the legacy
dispatcher. Add AlbumComment model and comment repository plus delete helpers
on the album/photo/vote repositories.
.
refactor(album): migrate album create/edit to new architecture
Add EditAlbumController (create/edit form + save) with GetEditAlbumContextUseCase
guard and SaveAlbumUseCase validation (1:1 with legacy). New routes
GET+POST /album/user/{id}/create and /album/{al}/edit; drop the edit action
from the legacy dispatcher. Escape album form output via $this->e().
.
refactor(album): migrate photo comments to new architecture
Add PhotoCommentsController wrapping Johncms\Comments behind
/album/photo/{img}/comments (capture via ob_start like downloads).
GetPhotoCommentsContextUseCase loads the photo and guards album access;
the controller resets/sets the unread-comments flag via the photo
repository. Remove includes/comments.php.
.
refactor(album): migrate photo download to new architecture
Add DownloadPhotoController and DownloadPhotoUseCase behind
/album/photo/{img}/download. Reuse EnsureAlbumAccessUseCase with a
configurable bypass-rights level (download keeps the legacy moderator
threshold, show keeps admin). Grow the photo repository with download
counter methods. Remove includes/image_download.php.
.
fix(album): pass Eloquent builder type in countByUsers closure
AlbumPhoto::query()->where(Closure) hands the closure an Eloquent\Builder,
not a Query\Builder, so the visibility filter threw a TypeError for
regular users on /album/users. Retype the closure parameter and drop the
now-unused QueryBuilder import.
.
refactor(album): migrate album and photo view to new architecture
Split legacy show action into ShowAlbumController (/album/{al}) and
ShowPhotoController (/album/photo/{img}). Add EnsureAlbumAccessUseCase
(private/password guard reused by comments/download), GetAlbumViewUseCase
and GetPhotoViewUseCase with result DTOs, PhotoPresenter::presentDetail,
and grow album/photo repositories. Rewrite templates onto DTOs with
output escaping. Update internal show links in remaining legacy includes
to /album/{al}; remove includes/show.php.
.
refactor(album): migrate user albums list to new architecture
Replace the legacy ?act=list dispatcher action with UserAlbumsController.

- New route GET /album/user/{id} (album.user) with AuthorizedUserMiddleware
- GetUserAlbumsUseCase + UserAlbumsResultDTO hold album visibility and
create/manage permission rules (moderator >=6, admin >=7, max 20 albums)
- AlbumRepositoryInterface gains findUserById and getUserAlbums (withCount)
- AlbumOwnerNotFoundException maps a missing owner to the result page
- list.phtml rebuilt around discrete variables with output escaping
- Update internal/external links to /album/user/{id} (users list,
PhotoPresenter, album index, profile account/view, legacy back_urls)
- Fix legacy sort redirect that pointed to the removed list action
.
refactor(album): migrate top feeds to new architecture
- Add TopController with GetTopUseCase, TopResultDTO and TopFilter enum (8 feeds)
- Add PhotoPresenter and PhotoViewDTO to replace legacy Albums\Photo accessors
- Add AlbumVoteRepository for batch vote checks; compute can_vote in the use case
- Extend AlbumPhoto repository with paginateTop (joinSub/correlated subqueries)
- Use path-segment URLs: /album/top and /album/top/{feed}
- Update top template to the DTO with output escaping
- Update album landing and external links (notifications, Counters) to new top URLs
- Remove legacy includes/top.php and its dispatcher entry
.
refactor(album): migrate users list to new architecture
- Add UsersListController with GetUsersListUseCase and UsersListResultDTO
- Use path-segment URLs: /album/users and /album/users/{boys|girls}
- Extend Album/AlbumPhoto repositories with paginateOwnersBySex and countByUsers
- Update users template to discrete vars and simplified layout call
- Fix stale users links on the album landing page
- Remove legacy includes/users.php and its dispatcher entry
.
refactor(album): migrate index landing page to new architecture
- Add AlbumIndexController with GetAlbumIndexUseCase and AlbumIndexDTO
- Add Album/AlbumPhoto repository interfaces and Eloquent implementations
- Add AuthorizedUserMiddleware; register GET /album as top-level route before legacy catch-all
- Update index template to consume the DTO and use absolute links
- Remove legacy includes/index.php and its dispatcher entry