2019-08-16 01:41:06 +08:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module TopicQueryParams
|
|
|
|
def build_topic_list_options
|
|
|
|
options = {}
|
2020-05-23 12:56:13 +08:00
|
|
|
params[:tags] = [params[:tag_id]] if params[:tag_id].present? && guardian.can_tag_pms?
|
2019-08-16 01:41:06 +08:00
|
|
|
|
|
|
|
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)
|
2020-12-11 20:20:48 +08:00
|
|
|
options[:no_subcategories] = options[:no_subcategories] == 'true' if options[:no_subcategories].present?
|
2019-08-16 01:41:06 +08:00
|
|
|
|
2022-10-20 10:01:36 +08:00
|
|
|
if hide_welcome_topic?
|
|
|
|
options[:except_topic_ids] ||= []
|
|
|
|
options[:except_topic_ids] << SiteSetting.welcome_topic_id
|
|
|
|
end
|
|
|
|
|
2019-08-16 01:41:06 +08:00
|
|
|
options
|
|
|
|
end
|
2022-10-20 10:01:36 +08:00
|
|
|
|
|
|
|
private
|
|
|
|
|
|
|
|
def hide_welcome_topic?
|
|
|
|
return false if !SiteSetting.bootstrap_mode_enabled
|
|
|
|
Site.welcome_topic_exists_and_is_not_edited?
|
|
|
|
end
|
2019-08-16 01:41:06 +08:00
|
|
|
end
|