discourse/lib/topic_query_params.rb

37 lines
1002 B
Ruby

# frozen_string_literal: true
module TopicQueryParams
def build_topic_list_options
options = {}
params[:tags] = [params[:tag_id]] if params[:tag_id].present? && guardian.can_tag_pms?
TopicQuery.public_valid_options.each do |key|
if params.key?(key)
val = options[key] = params[key]
if !TopicQuery.validate?(key, val)
raise Discourse::InvalidParameters.new key
end
end
end
# hacky columns get special handling
options[:topic_ids] = param_to_integer_list(:topic_ids)
options[:no_subcategories] = options[:no_subcategories] == 'true' if options[:no_subcategories].present?
if hide_welcome_topic?
options[:except_topic_ids] ||= []
options[:except_topic_ids] << SiteSetting.welcome_topic_id
end
options
end
private
def hide_welcome_topic?
return false if !SiteSetting.bootstrap_mode_enabled
return false if @guardian.is_admin?
Site.welcome_topic_exists_and_is_not_edited?
end
end