search: fix invalid rating searches returning wrong results.
Partial fix for #4389. * Fix "rating:asdf" returning all posts. * Fix "rating:s rating:q" returning results for rating:q.
This commit is contained in:
@@ -445,20 +445,12 @@ class PostQueryBuilder
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if q[:rating] =~ /^q/
|
q[:rating].to_a.each do |rating|
|
||||||
relation = relation.where("posts.rating = 'q'")
|
relation = relation.where(rating: rating.first.downcase)
|
||||||
elsif q[:rating] =~ /^s/
|
|
||||||
relation = relation.where("posts.rating = 's'")
|
|
||||||
elsif q[:rating] =~ /^e/
|
|
||||||
relation = relation.where("posts.rating = 'e'")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if q[:rating_negated] =~ /^q/
|
q[:rating_neg].to_a.each do |rating|
|
||||||
relation = relation.where("posts.rating <> 'q'")
|
relation = relation.where.not(rating: rating.first.downcase)
|
||||||
elsif q[:rating_negated] =~ /^s/
|
|
||||||
relation = relation.where("posts.rating <> 's'")
|
|
||||||
elsif q[:rating_negated] =~ /^e/
|
|
||||||
relation = relation.where("posts.rating <> 'e'")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if q[:locked] == "rating"
|
if q[:locked] == "rating"
|
||||||
@@ -839,10 +831,12 @@ class PostQueryBuilder
|
|||||||
q[:md5] = g2.downcase.split(/,/)
|
q[:md5] = g2.downcase.split(/,/)
|
||||||
|
|
||||||
when "-rating"
|
when "-rating"
|
||||||
q[:rating_negated] = g2.downcase
|
q[:rating_neg] ||= []
|
||||||
|
q[:rating_neg] << g2
|
||||||
|
|
||||||
when "rating"
|
when "rating"
|
||||||
q[:rating] = g2.downcase
|
q[:rating] ||= []
|
||||||
|
q[:rating] << g2
|
||||||
|
|
||||||
when "-locked"
|
when "-locked"
|
||||||
q[:locked_negated] = g2.downcase
|
q[:locked_negated] = g2.downcase
|
||||||
|
|||||||
Reference in New Issue
Block a user