diff --git a/lib/post_action_creator.rb b/lib/post_action_creator.rb index 62d576896a6..f64f860f8c4 100644 --- a/lib/post_action_creator.rb +++ b/lib/post_action_creator.rb @@ -188,13 +188,7 @@ private return if !@created_by.staff? && @post.user&.staff? return unless PostActionType.auto_action_flag_types.include?(@post_action_name) - # Special case: If you have TL3 and the user is TL0, and the flag is spam, - # hide it immediately. - if SiteSetting.high_trust_flaggers_auto_hide_posts && - @post_action_name == :spam && - @created_by.has_trust_level?(TrustLevel[3]) && - @post.user&.trust_level == TrustLevel[0] - + if trusted_spam_flagger? @post.hide!(@post_action_type_id, Post.hidden_reasons[:flagged_by_tl3_user]) return end @@ -205,6 +199,15 @@ private end end + # Special case: If you have TL3 and the user is TL0, and the flag is spam, + # hide it immediately. + def trusted_spam_flagger? + SiteSetting.high_trust_flaggers_auto_hide_posts && + @post_action_name == :spam && + @created_by.has_trust_level?(TrustLevel[3]) && + @post.user&.trust_level == TrustLevel[0] + end + def create_post_action @targets_topic = !!( if @flag_topic && @post.topic @@ -315,7 +318,8 @@ private created_at: @created_at, take_action: @take_action, meta_topic_id: @meta_post&.topic_id, - reason: @reason + reason: @reason, + force_review: trusted_spam_flagger? ) end diff --git a/spec/components/post_action_creator_spec.rb b/spec/components/post_action_creator_spec.rb index 010455f48f8..c8cf812fddd 100644 --- a/spec/components/post_action_creator_spec.rb +++ b/spec/components/post_action_creator_spec.rb @@ -103,11 +103,10 @@ describe PostActionCreator do before do user.trust_level = TrustLevel[3] post.user.trust_level = TrustLevel[0] + SiteSetting.high_trust_flaggers_auto_hide_posts = true end it "hides the post when the flagger is a TL3 user and the poster is a TL0 user" do - SiteSetting.high_trust_flaggers_auto_hide_posts = true - result = PostActionCreator.create(user, post, :spam) expect(post.hidden?).to eq(true) @@ -120,6 +119,17 @@ describe PostActionCreator do expect(post.hidden?).to eq(false) end + + it 'forces the review to surpass the minimum priority threshold' do + Reviewable.set_priorities(high: 40.0) + SiteSetting.reviewable_default_visibility = 'high' + result = PostActionCreator.create(user, post, :spam) + + reviewable = result.reviewable + reviewable_score = reviewable.reviewable_scores.find_by(user: user) + + expect(reviewable_score.score).to eq(Reviewable.min_score_for_priority) + end end context "existing reviewable" do