- $morphClass = (new Page())->getMorphClass();
-
- $existsQuery = function ($permissionQuery) use ($fullPageIdColumn, $morphClass) {
- /** @var Builder $permissionQuery */
- $permissionQuery->select('joint_permissions.role_id')->from('joint_permissions')
- ->whereColumn('joint_permissions.entity_id', '=', $fullPageIdColumn)
- ->where('joint_permissions.entity_type', '=', $morphClass)
- ->whereIn('joint_permissions.role_id', $this->getCurrentUserRoleIds())
- ->where(function (QueryBuilder $query) {
- $this->addJointHasPermissionCheck($query, $this->currentUser()->id);
- });
- };
-
- $q = $query->where(function ($query) use ($existsQuery, $fullPageIdColumn) {
- $query->whereExists($existsQuery)
- ->orWhere($fullPageIdColumn, '=', 0);
- });
-
- // Prevent visibility of non-owned draft pages
- $q->whereExists(function (QueryBuilder $query) use ($fullPageIdColumn) {
- $query->select('id')->from('pages')
- ->whereColumn('pages.id', '=', $fullPageIdColumn)
- ->where(function (QueryBuilder $query) {
- $query->where('pages.draft', '=', false)
- ->orWhere('pages.owned_by', '=', $this->currentUser()->id);
+ return $this->restrictEntityQuery($query)
+ ->where(function ($query) use ($fullPageIdColumn) {
+ /** @var Builder $query */
+ $query->whereExists(function (QueryBuilder $query) use ($fullPageIdColumn) {
+ $query->select('id')->from('pages')
+ ->whereColumn('pages.id', '=', $fullPageIdColumn)
+ ->where('pages.draft', '=', false);