users: add 'show deleted posts' account setting.

Add an account setting to always show deleted posts in searches. This
only applies to searches, not to thumbnails in other places.

Fixes #4512.
This commit is contained in:
evazion
2022-05-01 00:47:35 -05:00
parent f117049750
commit f434abc59a
5 changed files with 10 additions and 3 deletions

View File

@@ -12,11 +12,12 @@ module PostSets
MAX_SIDEBAR_TAGS = 25
MAX_WILDCARD_TAGS = PostQueryBuilder::MAX_WILDCARD_TAGS
attr_reader :page, :format, :tag_string, :query, :post_query, :normalized_query, :show_votes
attr_reader :current_user, :page, :format, :tag_string, :query, :post_query, :normalized_query, :show_votes
delegate :tag, to: :post_query
alias_method :show_votes?, :show_votes
def initialize(tags, page = 1, per_page = nil, user: CurrentUser.user, format: "html", show_votes: false)
@current_user = user
@query = PostQueryBuilder.new(tags, user, tag_limit: user.tag_query_limit, safe_mode: CurrentUser.safe_mode?)
@post_query = PostQuery.normalize(tags, current_user: user, tag_limit: user.tag_query_limit, safe_mode: CurrentUser.safe_mode?)
@normalized_query = post_query.with_implicit_metatags
@@ -134,6 +135,10 @@ module PostSets
end
def show_deleted?
current_user.show_deleted_posts? || has_status_metatag?
end
def has_status_metatag?
post_query.select_metatags("status").any? do |metatag|
metatag.value.downcase.in?(%w[all any active unmoderated modqueue deleted appealed])
end