]> BookStack Code Mirror - bookstack/blob - app/Users/Queries/UserRecentlyCreatedContent.php
Tests: Updated comment test to account for new editor usage
[bookstack] / app / Users / Queries / UserRecentlyCreatedContent.php
1 <?php
2
3 namespace BookStack\Users\Queries;
4
5 use BookStack\Entities\Queries\EntityQueries;
6 use BookStack\Users\Models\User;
7 use Illuminate\Database\Eloquent\Builder;
8 use Illuminate\Database\Eloquent\Collection;
9
10 /**
11  * Get the recently created content for the provided user.
12  */
13 class UserRecentlyCreatedContent
14 {
15     public function __construct(
16         protected EntityQueries $queries,
17     ) {
18     }
19
20     /**
21      * @return array{pages: Collection, chapters: Collection, books: Collection, shelves: Collection}
22      */
23     public function run(User $user, int $count): array
24     {
25         $query = function (Builder $query) use ($user, $count) {
26             return $query->orderBy('created_at', 'desc')
27                 ->where('created_by', '=', $user->id)
28                 ->take($count)
29                 ->get();
30         };
31
32         return [
33             'pages'    => $query($this->queries->pages->visibleForList()->where('draft', '=', false)),
34             'chapters' => $query($this->queries->chapters->visibleForList()),
35             'books'    => $query($this->queries->books->visibleForList()),
36             'shelves'  => $query($this->queries->shelves->visibleForList()),
37         ];
38     }
39 }