diff --git a/plugin.rb b/plugin.rb index 6f714e5..9f6c902 100644 --- a/plugin.rb +++ b/plugin.rb @@ -695,53 +695,55 @@ SQL .count end - class ::Topic - attr_accessor :accepted_answer_user_id - end + if respond_to?(:register_topic_list_preload_user_ids) + class ::Topic + attr_accessor :accepted_answer_user_id + end - register_topic_list_preload_user_ids do |topics, user_ids, topic_list| - answer_post_ids = TopicCustomField - .select('value::INTEGER') - .where(name: 'accepted_answer_post_id') - .where(topic_id: topics.map(&:id)) - answer_user_ids = Post - .where(id: answer_post_ids) - .pluck(:topic_id, :user_id) - .to_h - topics.each { |topic| topic.accepted_answer_user_id = answer_user_ids[topic.id] } - user_ids.concat(answer_user_ids.values) - end + register_topic_list_preload_user_ids do |topics, user_ids, topic_list| + answer_post_ids = TopicCustomField + .select('value::INTEGER') + .where(name: 'accepted_answer_post_id') + .where(topic_id: topics.map(&:id)) + answer_user_ids = Post + .where(id: answer_post_ids) + .pluck(:topic_id, :user_id) + .to_h + topics.each { |topic| topic.accepted_answer_user_id = answer_user_ids[topic.id] } + user_ids.concat(answer_user_ids.values) + end - module AddSolvedToTopicPostersSummary - def descriptions_by_id - if !defined? @descriptions_by_id - super(ids: old_user_ids) + module AddSolvedToTopicPostersSummary + def descriptions_by_id + if !defined? @descriptions_by_id + super(ids: old_user_ids) - if id = topic.accepted_answer_user_id - @descriptions_by_id[id] ||= [] - @descriptions_by_id[id] << I18n.t(:accepted_answer) + if id = topic.accepted_answer_user_id + @descriptions_by_id[id] ||= [] + @descriptions_by_id[id] << I18n.t(:accepted_answer) + end end - end - super - end - - def last_poster_is_topic_creator? - super || topic.accepted_answer_user_id == topic.last_post_user_id - end - - def user_ids - if id = topic.accepted_answer_user_id - super.insert(1, id) - else super end + + def last_poster_is_topic_creator? + super || topic.accepted_answer_user_id == topic.last_post_user_id + end + + def user_ids + if id = topic.accepted_answer_user_id + super.insert(1, id) + else + super + end + end + end + + TopicPostersSummary.class_eval do + alias :old_user_ids :user_ids + + prepend AddSolvedToTopicPostersSummary end end - - TopicPostersSummary.class_eval do - alias :old_user_ids :user_ids - - prepend AddSolvedToTopicPostersSummary - end end