3 namespace BookStack\Entities\Queries;
5 use BookStack\Actions\Favourite;
6 use Illuminate\Database\Query\JoinClause;
8 class TopFavourites extends EntityQuery
10 public function run(int $count, int $skip = 0)
13 if (is_null($user) || $user->isDefault()) {
17 $query = $this->permissionService()
18 ->filterRestrictedEntityRelations(Favourite::query(), 'favourites', 'favouritable_id', 'favouritable_type', 'view')
19 ->select('favourites.*')
20 ->leftJoin('views', function (JoinClause $join) {
21 $join->on('favourites.favouritable_id', '=', 'views.viewable_id');
22 $join->on('favourites.favouritable_type', '=', 'views.viewable_type');
23 $join->where('views.user_id', '=', user()->id);
25 ->orderBy('views.views', 'desc')
26 ->where('favourites.user_id', '=', user()->id);
28 return $query->with('favouritable')
32 ->pluck('favouritable')