From 5adf5b527de97a1cc30c5eb699dd45dd6d247595 Mon Sep 17 00:00:00 2001 From: Sam Date: Wed, 18 Jul 2018 10:56:09 +1000 Subject: [PATCH] FEATURE: support filter_auto_bump_topics event Use this event to filter the list of auto bumped topics. EG: on(:filter_auto_bump_topics) do |_category, filters| filters.push(->(r) { r.where(<<~SQL) NOT EXISTS( SELECT 1 FROM topic_custom_fields WHERE topic_id = topics.id AND name = 'accepted_answer_post_id' ) SQL }) end --- app/models/category.rb | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/app/models/category.rb b/app/models/category.rb index 610406bd0ea..24bfed6f8ec 100644 --- a/app/models/category.rb +++ b/app/models/category.rb @@ -410,7 +410,18 @@ class Category < ActiveRecord::Base limiter = auto_bump_limiter return false if !limiter.can_perform? - topic = Topic + filters = [] + DiscourseEvent.trigger(:filter_auto_bump_topics, self, filters) + + relation = Topic + + if filters.length > 0 + filters.each do |filter| + relation = filter.call(relation) + end + end + + topic = relation .visible .listable_topics .where(category_id: self.id)