FEATURE: Forced summary mode for megalodon topics.
This is mainly done for performance reasons and megalodon topics are usually a byproduct of imports where site setting limits are not respected.
This commit is contained in:
parent
ac80360bea
commit
f7d22bad90
|
@ -355,7 +355,7 @@ class Post < ActiveRecord::Base
|
|||
SELECT posts.id
|
||||
FROM posts
|
||||
WHERE posts.topic_id = #{topic_id.to_i}
|
||||
AND post_number = 1
|
||||
AND posts.post_number = 1
|
||||
) UNION
|
||||
(
|
||||
SELECT p1.id
|
||||
|
|
|
@ -482,9 +482,9 @@ class TopicView
|
|||
@filtered_posts = unfiltered_posts
|
||||
|
||||
# Filters
|
||||
if @filter == 'summary'
|
||||
if @filter == 'summary' || force_summary_mode?
|
||||
@filtered_posts = @filtered_posts.summary(@topic.id)
|
||||
@contains_gaps = true
|
||||
@contains_gaps = true unless force_summary_mode?
|
||||
end
|
||||
|
||||
if @best.present?
|
||||
|
@ -572,4 +572,9 @@ class TopicView
|
|||
def is_mega_topic?
|
||||
@topic.posts_count >= MEGA_TOPIC_POSTS_COUNT
|
||||
end
|
||||
|
||||
def force_summary_mode?
|
||||
@force_summary_mode ||=
|
||||
(@topic.closed? && @topic.posts_count >= (MEGA_TOPIC_POSTS_COUNT * 2))
|
||||
end
|
||||
end
|
||||
|
|
|
@ -364,6 +364,26 @@ describe TopicView do
|
|||
end
|
||||
end
|
||||
|
||||
describe 'when a megalodon topic is closed' do
|
||||
it 'should be forced into summary mode without gaps' do
|
||||
begin
|
||||
original_const = TopicView::MEGA_TOPIC_POSTS_COUNT
|
||||
TopicView.send(:remove_const, "MEGA_TOPIC_POSTS_COUNT")
|
||||
TopicView.const_set("MEGA_TOPIC_POSTS_COUNT", 1)
|
||||
SiteSetting.summary_max_results = 2
|
||||
topic.update!(closed: true)
|
||||
|
||||
topic_view = TopicView.new(topic.id, evil_trout)
|
||||
|
||||
expect(topic_view.contains_gaps?).to eq(false)
|
||||
expect(topic_view.posts).to eq([p5])
|
||||
ensure
|
||||
TopicView.send(:remove_const, "MEGA_TOPIC_POSTS_COUNT")
|
||||
TopicView.const_set("MEGA_TOPIC_POSTS_COUNT", original_const)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
it "#restricts to correct topic" do
|
||||
t2 = Fabricate(:topic)
|
||||
|
||||
|
|
Loading…
Reference in New Issue