diff --git a/framework/core/src/Core/Activity/Listeners/UserActivitySyncer.php b/framework/core/src/Core/Activity/Listeners/UserActivitySyncer.php index fa8f70c4e..707a785f0 100755 --- a/framework/core/src/Core/Activity/Listeners/UserActivitySyncer.php +++ b/framework/core/src/Core/Activity/Listeners/UserActivitySyncer.php @@ -5,6 +5,7 @@ use Flarum\Core\Activity\PostedBlueprint; use Flarum\Core\Activity\StartedDiscussionBlueprint; use Flarum\Core\Activity\JoinedBlueprint; use Flarum\Core\Posts\Post; +use Flarum\Core\Users\Guest; use Flarum\Events\PostWasPosted; use Flarum\Events\PostWasDeleted; use Flarum\Events\PostWasHidden; @@ -95,9 +96,11 @@ class UserActivitySyncer */ protected function postBecameVisible(Post $post) { - $blueprint = $this->postedBlueprint($post); + if ($post->isVisibleTo(new Guest)) { + $blueprint = $this->postedBlueprint($post); - $this->activity->sync($blueprint, [$post->user]); + $this->activity->sync($blueprint, [$post->user]); + } } /** diff --git a/framework/core/src/Core/Posts/Post.php b/framework/core/src/Core/Posts/Post.php index 9d1c9da2f..17e293c74 100755 --- a/framework/core/src/Core/Posts/Post.php +++ b/framework/core/src/Core/Posts/Post.php @@ -3,6 +3,7 @@ use DomainException; use Flarum\Events\PostWasDeleted; use Flarum\Core\Model; +use Flarum\Core\Users\User; use Flarum\Core\Support\Locked; use Flarum\Core\Support\VisibleScope; use Flarum\Core\Support\EventGenerator; @@ -96,6 +97,25 @@ class Post extends Model static::addGlobalScope(new RegisteredTypesScope); } + /** + * Determine whether or not this post is visible to the given user. + * + * @param User $user + * @return boolean + */ + public function isVisibleTo(User $user) + { + $discussion = $this->discussion()->whereVisibleTo($user)->first(); + + if ($discussion) { + $this->setRelation('discussion', $discussion); + + return (bool) $discussion->postsVisibleTo($user)->find($this->id)->count(); + } + + return false; + } + /** * Define the relationship with the post's discussion. *