]> BookStack Code Mirror - bookstack/blob - app/Entities/Queries/QueryRecentlyViewed.php
Add optional OIDC avatar fetching from the “picture” claim
[bookstack] / app / Entities / Queries / QueryRecentlyViewed.php
1 <?php
2
3 namespace BookStack\Entities\Queries;
4
5 use BookStack\Activity\Models\View;
6 use BookStack\Entities\Tools\MixedEntityListLoader;
7 use BookStack\Permissions\PermissionApplicator;
8 use Illuminate\Support\Collection;
9
10 class QueryRecentlyViewed
11 {
12     public function __construct(
13         protected PermissionApplicator $permissions,
14         protected MixedEntityListLoader $listLoader,
15     ) {
16     }
17
18     public function run(int $count, int $page): Collection
19     {
20         $user = user();
21         if ($user->isGuest()) {
22             return collect();
23         }
24
25         $query = $this->permissions->restrictEntityRelationQuery(
26             View::query(),
27             'views',
28             'viewable_id',
29             'viewable_type'
30         )
31             ->orderBy('views.updated_at', 'desc')
32             ->where('user_id', '=', user()->id);
33
34         $views = $query
35             ->skip(($page - 1) * $count)
36             ->take($count)
37             ->get();
38
39         $this->listLoader->loadIntoRelations($views->all(), 'viewable', false);
40
41         return $views->pluck('viewable')->filter();
42     }
43 }