2
0
Fork 0
mirror of https://github.com/discourse/discourse.git synced 2025-09-06 10:50:21 +08:00

FEATURE: automatically close topics with 10k+ posts

FEATURE: automatically close messages with 2k+ posts

Both configurable via `auto_close_messages_post_count`
and `auto_close_topics_post_count`
This commit is contained in:
Sam 2016-04-12 13:29:48 +10:00
parent 22b2f5285c
commit 0113fce420
4 changed files with 58 additions and 0 deletions

View file

@ -148,6 +148,8 @@ class PostCreator
BadgeGranter.queue_badge_grant(Badge::Trigger::PostRevision, post: @post)
trigger_after_events(@post)
auto_close
end
if @post || @spam
@ -221,6 +223,26 @@ class PostCreator
DiscourseEvent.trigger(:post_created, post, @opts, @user)
end
def auto_close
if @post.topic.private_message? &&
!@post.topic.closed &&
SiteSetting.auto_close_messages_post_count > 0 &&
SiteSetting.auto_close_messages_post_count <= @post.topic.posts_count
@post.topic.update_status(:closed, true, Discourse.system_user,
message: I18n.t('topic_statuses.autoclosed_message_max_posts', count: SiteSetting.auto_close_messages_post_count))
elsif !@post.topic.private_message? &&
!@post.topic.closed &&
SiteSetting.auto_close_topics_post_count > 0 &&
SiteSetting.auto_close_topics_post_count <= @post.topic.posts_count
@post.topic.update_status(:closed, true, Discourse.system_user,
message: I18n.t('topic_statuses.autoclosed_topic_max_posts', count: SiteSetting.auto_close_messages_post_count))
end
end
def transaction(&blk)
Post.transaction do
if new_topic?