3 def add_uncategorized 4 # Support for uncategorized topics 5 uncategorized_topics = Topic 6 .listable_topics 7 .where(category_id: nil) 8 .topic_list_order 9 .limit(SiteSetting.category_featured_topics) 10 if uncategorized_topics.present? 11 12 totals = Topic.exec_sql("SELECT SUM(CASE WHEN created_at >= (CURRENT_TIMESTAMP - INTERVAL '1 WEEK') THEN 1 ELSE 0 END) as topics_week, 13 SUM(CASE WHEN created_at >= (CURRENT_TIMESTAMP - INTERVAL '1 MONTH') THEN 1 ELSE 0 END) as topics_month, 14 SUM(CASE WHEN created_at >= (CURRENT_TIMESTAMP - INTERVAL '1 YEAR') THEN 1 ELSE 0 END) as topics_year, 15 COUNT(*) AS topic_count 16 FROM topics 17 WHERE topics.visible 18 AND topics.deleted_at IS NULL 19 AND topics.category_id IS NULL 20 AND topics.archetype <> '#{Archetype.private_message}'").first 21 22 23 uncategorized = Category.new({name: SiteSetting.uncategorized_name, 24 slug: Slug.for(SiteSetting.uncategorized_name), 25 color: SiteSetting.uncategorized_color, 26 text_color: SiteSetting.uncategorized_text_color, 27 featured_topics: uncategorized_topics}.merge(totals)) 28 29 # Find the appropriate place to insert it: 30 insert_at = nil 31 @categories.each_with_index do |c, idx| 32 if (uncategorized.topics_week || 0) > (c.topics_week || 0) 33 insert_at = idx 34 break 35 end 36 end 37 38 @categories.insert(insert_at || @categories.size, uncategorized) 39 end 40 41 if @all_topics.present? && uncategorized.present? 42 uncategorized.displayable_topics = uncategorized_topics 43 @all_topics << uncategorized_topics 44 @all_topics.flatten! 45 end 46 end 47 end Wednesday, 19 June, 13