From 451788b95d3b552f3925765e764c41ebb9592dbb Mon Sep 17 00:00:00 2001 From: Sam Date: Thu, 19 Feb 2015 12:56:49 +1100 Subject: [PATCH] FIX: allow searching in PMs when "search this topic" is selected --- lib/search.rb | 6 ++++-- spec/components/search_spec.rb | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/search.rb b/lib/search.rb index 68d2553d69d..454aa5b7c53 100644 --- a/lib/search.rb +++ b/lib/search.rb @@ -294,7 +294,9 @@ class Search .where("topics.deleted_at" => nil) .where("topics.visible") - if opts[:private_messages] + is_topic_search = @search_context.present? && @search_context.is_a?(Topic) + + if opts[:private_messages] || (is_topic_search && @search_context.private_message?) posts = posts.where("topics.archetype = ?", Archetype.private_message) unless @guardian.is_admin? @@ -304,7 +306,7 @@ class Search posts = posts.where("topics.archetype <> ?", Archetype.private_message) end - if @search_context.present? && @search_context.is_a?(Topic) + if is_topic_search posts = posts.joins('JOIN users u ON u.id = posts.user_id') posts = posts.where("posts.raw || ' ' || u.username || ' ' || u.name ilike ?", "%#{@term}%") else diff --git a/spec/components/search_spec.rb b/spec/components/search_spec.rb index 1c62078d566..cdc5a31fc2c 100644 --- a/spec/components/search_spec.rb +++ b/spec/components/search_spec.rb @@ -126,6 +126,13 @@ describe Search do results.posts.length.should == 1 + + results = Search.execute('mars', + search_context: topic, + guardian: Guardian.new(reply.user)) + + results.posts.length.should == 1 + # does not leak out results = Search.execute('mars', type_filter: 'private_messages',