mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FEATURE: Admins can configure the reflag cooldown window and if posts flagged as spam by TL3+ users get automatically hidden (#9010)
This commit is contained in:
parent
dd4a04e72c
commit
c7787464cd
@ -1873,6 +1873,8 @@ en:
|
|||||||
reviewable_claiming: "Does reviewable content need to be claimed before it can be acted upon?"
|
reviewable_claiming: "Does reviewable content need to be claimed before it can be acted upon?"
|
||||||
reviewable_default_topics: "Show reviewable content grouped by topic by default"
|
reviewable_default_topics: "Show reviewable content grouped by topic by default"
|
||||||
reviewable_default_visibility: "Don't show reviewable items unless they meet this priority"
|
reviewable_default_visibility: "Don't show reviewable items unless they meet this priority"
|
||||||
|
high_trust_flaggers_auto_hide_posts: "New user posts are automatically hidden after being flagged as spam by a TL3+ user"
|
||||||
|
cooldown_hours_until_reflag: "How much time users will have to wait until they are able to reflag a post"
|
||||||
|
|
||||||
reply_by_email_enabled: "Enable replying to topics via email."
|
reply_by_email_enabled: "Enable replying to topics via email."
|
||||||
reply_by_email_address: "Template for reply by email incoming email address, for example: %%{reply_key}@reply.example.com or replies+%%{reply_key}@example.com"
|
reply_by_email_address: "Template for reply by email incoming email address, for example: %%{reply_key}@reply.example.com or replies+%%{reply_key}@example.com"
|
||||||
|
@ -1477,6 +1477,10 @@ spam:
|
|||||||
auto_silence_fast_typers_on_first_post: true
|
auto_silence_fast_typers_on_first_post: true
|
||||||
auto_silence_fast_typers_max_trust_level: 0
|
auto_silence_fast_typers_max_trust_level: 0
|
||||||
auto_silence_first_post_regex: ""
|
auto_silence_first_post_regex: ""
|
||||||
|
high_trust_flaggers_auto_hide_posts: true
|
||||||
|
cooldown_hours_until_reflag:
|
||||||
|
default: 24
|
||||||
|
min: 0
|
||||||
|
|
||||||
reviewable_claiming:
|
reviewable_claiming:
|
||||||
client: true
|
client: true
|
||||||
|
@ -130,7 +130,7 @@ private
|
|||||||
return false if @post_action_type_id == PostActionType.types[:notify_moderators]
|
return false if @post_action_type_id == PostActionType.types[:notify_moderators]
|
||||||
flag_type_already_used = reviewable.reviewable_scores.any? { |rs| rs.reviewable_score_type == @post_action_type_id }
|
flag_type_already_used = reviewable.reviewable_scores.any? { |rs| rs.reviewable_score_type == @post_action_type_id }
|
||||||
not_edited_since_last_review = @post.last_version_at.blank? || reviewable.updated_at > @post.last_version_at
|
not_edited_since_last_review = @post.last_version_at.blank? || reviewable.updated_at > @post.last_version_at
|
||||||
handled_recently = reviewable.updated_at > 24.hours.ago
|
handled_recently = reviewable.updated_at > SiteSetting.cooldown_hours_until_reflag.to_i.hours.ago
|
||||||
|
|
||||||
!reviewable.pending? && flag_type_already_used && not_edited_since_last_review && handled_recently
|
!reviewable.pending? && flag_type_already_used && not_edited_since_last_review && handled_recently
|
||||||
end
|
end
|
||||||
@ -177,9 +177,11 @@ private
|
|||||||
|
|
||||||
# Special case: If you have TL3 and the user is TL0, and the flag is spam,
|
# Special case: If you have TL3 and the user is TL0, and the flag is spam,
|
||||||
# hide it immediately.
|
# hide it immediately.
|
||||||
if @post_action_name == :spam &&
|
if SiteSetting.high_trust_flaggers_auto_hide_posts &&
|
||||||
|
@post_action_name == :spam &&
|
||||||
@created_by.has_trust_level?(TrustLevel[3]) &&
|
@created_by.has_trust_level?(TrustLevel[3]) &&
|
||||||
@post.user&.trust_level == TrustLevel[0]
|
@post.user&.trust_level == TrustLevel[0]
|
||||||
|
|
||||||
@post.hide!(@post_action_type_id, Post.hidden_reasons[:flagged_by_tl3_user])
|
@post.hide!(@post_action_type_id, Post.hidden_reasons[:flagged_by_tl3_user])
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -99,6 +99,29 @@ describe PostActionCreator do
|
|||||||
expect(score.reviewed_at).to be_blank
|
expect(score.reviewed_at).to be_blank
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe "Auto hide spam flagged posts" do
|
||||||
|
before do
|
||||||
|
user.trust_level = TrustLevel[3]
|
||||||
|
post.user.trust_level = TrustLevel[0]
|
||||||
|
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)
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'does not hide the post if the setting is disabled' do
|
||||||
|
SiteSetting.high_trust_flaggers_auto_hide_posts = false
|
||||||
|
|
||||||
|
result = PostActionCreator.create(user, post, :spam)
|
||||||
|
|
||||||
|
expect(post.hidden?).to eq(false)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
context "existing reviewable" do
|
context "existing reviewable" do
|
||||||
let!(:reviewable) {
|
let!(:reviewable) {
|
||||||
PostActionCreator.create(Fabricate(:user), post, :inappropriate).reviewable
|
PostActionCreator.create(Fabricate(:user), post, :inappropriate).reviewable
|
||||||
|
Loading…
Reference in New Issue
Block a user