mirror of
https://github.com/discourse/discourse.git
synced 2025-05-22 16:21:18 +08:00
FIX: Make topic query include topics from sub-sub-categories (#8709)
This commit is contained in:
@ -677,15 +677,18 @@ class TopicQuery
|
||||
else
|
||||
sql = <<~SQL
|
||||
categories.id IN (
|
||||
SELECT c2.id FROM categories c2 WHERE c2.parent_category_id = :category_id
|
||||
UNION ALL
|
||||
SELECT :category_id
|
||||
) AND
|
||||
topics.id NOT IN (
|
||||
SELECT c3.topic_id FROM categories c3 WHERE c3.parent_category_id = :category_id AND c3.topic_id IS NOT NULL
|
||||
WITH RECURSIVE subcategories AS (
|
||||
SELECT :category_id id, 1 depth
|
||||
UNION
|
||||
SELECT categories.id, (subcategories.depth + 1) depth
|
||||
FROM categories
|
||||
JOIN subcategories ON subcategories.id = categories.parent_category_id
|
||||
WHERE subcategories.depth < :max_category_nesting
|
||||
)
|
||||
SELECT subcategories.id FROM subcategories
|
||||
) AND (categories.id = :category_id OR topics.id != categories.topic_id)
|
||||
SQL
|
||||
result = result.where(sql, category_id: category_id)
|
||||
result = result.where(sql, category_id: category_id, max_category_nesting: SiteSetting.max_category_nesting)
|
||||
end
|
||||
result = result.references(:categories)
|
||||
|
||||
|
Reference in New Issue
Block a user