diff --git a/app/logical/post_query_builder.rb b/app/logical/post_query_builder.rb index 29d3b872f..26b62624a 100644 --- a/app/logical/post_query_builder.rb +++ b/app/logical/post_query_builder.rb @@ -340,19 +340,23 @@ class PostQueryBuilder relation = relation.order("position(' '||posts.id||' ' in ' '||(select post_ids from pools where id = #{pool_id})||' ')") end - if q[:favgroup_neg].present? - favgroup_id = q[:favgroup_neg].to_i - favgroup = FavoriteGroup.where("favorite_groups.id = ?", favgroup_id).first - if favgroup - relation = relation.where("posts.id NOT in (?)", favgroup.post_id_array) + if q[:favgroups_neg].present? + q[:favgroups_neg].each do |favgroup_rec| + favgroup_id = favgroup_rec.to_i + favgroup = FavoriteGroup.where("favorite_groups.id = ?", favgroup_id).first + if favgroup + relation = relation.where("posts.id NOT in (?)", favgroup.post_id_array) + end end end - if q[:favgroup].present? - favgroup_id = q[:favgroup].to_i - favgroup = FavoriteGroup.where("favorite_groups.id = ?", favgroup_id).first - if favgroup - relation = relation.where("posts.id in (?)", favgroup.post_id_array) + if q[:favgroups].present? + q[:favgroups].each do |favgroup_rec| + favgroup_id = favgroup_rec.to_i + favgroup = FavoriteGroup.where("favorite_groups.id = ?", favgroup_id).first + if favgroup + relation = relation.where("posts.id in (?)", favgroup.post_id_array) + end end end diff --git a/app/models/tag.rb b/app/models/tag.rb index f6d293707..18e7df76c 100644 --- a/app/models/tag.rb +++ b/app/models/tag.rb @@ -487,11 +487,13 @@ class Tag < ActiveRecord::Base when "-favgroup" favgroup_id = FavoriteGroup.name_to_id($2) - q[:favgroup_neg] = favgroup_id + q[:favgroups_neg] ||= [] + q[:favgroups_neg] << favgroup_id when "favgroup" favgroup_id = FavoriteGroup.name_to_id($2) - q[:favgroup] = favgroup_id + q[:favgroups] ||= [] + q[:favgroups] << favgroup_id when "-fav" q[:tags][:exclude] << "fav:#{User.name_to_id($2)}"