public function scopeHiddenDiscussionVisibility(ScopeHiddenDiscussionVisibility $event)
 {
     // By default, discussions are not visible to the public if they are
     // hidden or contain zero comments - unless the actor has a certain
     // permission. Since we grant permissions per-tag, we will make
     // discussions visible in the tags for which the user has that
     // permission.
     $event->query->orWhereExists(function ($query) use($event) {
         return $query->select(new Expression(1))->from('discussions_tags')->whereIn('tag_id', Tag::getIdsWhereCan($event->actor, $event->permission))->where('discussions.id', new Expression('discussion_id'));
     });
 }
 /**
  * @param GetPermission $event
  * @return bool
  */
 public function grantGlobalDiscussionPermissions(GetPermission $event)
 {
     if (in_array($event->ability, ['viewDiscussions', 'startDiscussion']) && is_null($event->model)) {
         return !empty(Tag::getIdsWhereCan($event->actor, $event->ability));
     }
 }
 public function scopeEmptyDiscussionVisibility(ScopeEmptyDiscussionVisibility $event)
 {
     $event->query->orWhereExists(function ($query) use($event) {
         return $query->select(new Expression(1))->from('discussions_tags')->whereIn('tag_id', Tag::getIdsWhereCan($event->actor, 'discussion.editPosts'))->where('discussions.id', new Expression('discussion_id'));
     });
 }