2019-08-15 12:41:06 -05:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
module TopicQueryParams
|
|
|
|
def build_topic_list_options
|
|
|
|
options = {}
|
2023-03-20 13:51:39 -05:00
|
|
|
params[:tags] = [params[:tag_id], *Array(params[:tags])].uniq if params[:tag_id].present?
|
2019-08-15 12:41:06 -05:00
|
|
|
|
|
|
|
TopicQuery.public_valid_options.each do |key|
|
|
|
|
if params.key?(key)
|
|
|
|
val = options[key] = params[key]
|
2023-01-09 06:10:19 -06:00
|
|
|
raise Discourse::InvalidParameters.new key if !TopicQuery.validate?(key, val)
|
2019-08-15 12:41:06 -05:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
# hacky columns get special handling
|
|
|
|
options[:topic_ids] = param_to_integer_list(:topic_ids)
|
2023-01-09 06:10:19 -06:00
|
|
|
options[:no_subcategories] = options[:no_subcategories] == "true" if options[
|
|
|
|
:no_subcategories
|
|
|
|
].present?
|
2019-08-15 12:41:06 -05:00
|
|
|
|
|
|
|
options
|
|
|
|
end
|
|
|
|
end
|