X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/043cdeafb3773288fd7d07ac3dbdbf989ef94bb8..refs/pull/236/head:/app/Services/ViewService.php diff --git a/app/Services/ViewService.php b/app/Services/ViewService.php index 6b50e90de..1a9ee5f70 100644 --- a/app/Services/ViewService.php +++ b/app/Services/ViewService.php @@ -8,18 +8,18 @@ class ViewService protected $view; protected $user; - protected $restrictionService; + protected $permissionService; /** * ViewService constructor. * @param View $view - * @param RestrictionService $restrictionService + * @param PermissionService $permissionService */ - public function __construct(View $view, RestrictionService $restrictionService) + public function __construct(View $view, PermissionService $permissionService) { $this->view = $view; - $this->user = auth()->user(); - $this->restrictionService = $restrictionService; + $this->user = user(); + $this->permissionService = $permissionService; } /** @@ -50,17 +50,21 @@ class ViewService * Get the entities with the most views. * @param int $count * @param int $page - * @param bool|false $filterModel + * @param bool|false|array $filterModel */ public function getPopular($count = 10, $page = 0, $filterModel = false) { $skipCount = $count * $page; - $query = $this->restrictionService->filterRestrictedEntityRelations($this->view, 'views', 'viewable_id', 'viewable_type') + $query = $this->permissionService->filterRestrictedEntityRelations($this->view, 'views', 'viewable_id', 'viewable_type') ->select('*', 'viewable_id', 'viewable_type', \DB::raw('SUM(views) as view_count')) ->groupBy('viewable_id', 'viewable_type') ->orderBy('view_count', 'desc'); - if ($filterModel) $query->where('viewable_type', '=', get_class($filterModel)); + if ($filterModel && is_array($filterModel)) { + $query->whereIn('viewable_type', $filterModel); + } else if ($filterModel) { + $query->where('viewable_type', '=', get_class($filterModel)); + }; return $query->with('viewable')->skip($skipCount)->take($count)->get()->pluck('viewable'); } @@ -76,11 +80,11 @@ class ViewService { if ($this->user === null) return collect(); - $query = $this->restrictionService + $query = $this->permissionService ->filterRestrictedEntityRelations($this->view, 'views', 'viewable_id', 'viewable_type'); if ($filterModel) $query = $query->where('viewable_type', '=', get_class($filterModel)); - $query = $query->where('user_id', '=', auth()->user()->id); + $query = $query->where('user_id', '=', user()->id); $viewables = $query->with('viewable')->orderBy('updated_at', 'desc') ->skip($count * $page)->take($count)->get()->pluck('viewable');