mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-10-01 05:36:00 +00:00
4fb85a9a5c
Updated ajax search and entity selector usage to display and handle items that the user does not have permission to interact with. Started logic changes to not allow permission type to be passed around, with views instead being the fixed sole permission.
30 lines
911 B
PHP
30 lines
911 B
PHP
<?php
|
|
|
|
namespace BookStack\Entities\Queries;
|
|
|
|
use BookStack\Actions\View;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class Popular extends EntityQuery
|
|
{
|
|
public function run(int $count, int $page, array $filterModels = null)
|
|
{
|
|
$query = $this->permissionService()
|
|
->filterRestrictedEntityRelations(View::query(), 'views', 'viewable_id', 'viewable_type', 'view')
|
|
->select('*', 'viewable_id', 'viewable_type', DB::raw('SUM(views) as view_count'))
|
|
->groupBy('viewable_id', 'viewable_type')
|
|
->orderBy('view_count', 'desc');
|
|
|
|
if ($filterModels) {
|
|
$query->whereIn('viewable_type', $this->entityProvider()->getMorphClasses($filterModels));
|
|
}
|
|
|
|
return $query->with('viewable')
|
|
->skip($count * ($page - 1))
|
|
->take($count)
|
|
->get()
|
|
->pluck('viewable')
|
|
->filter();
|
|
}
|
|
}
|