FIX: Make topic query include topics from sub-sub-categories (#8709)

This commit is contained in:
Dan Ungureanu
2020-01-20 17:06:58 +02:00
committed by GitHub
parent 1014e56e80
commit 788ddcc407
2 changed files with 28 additions and 7 deletions

View File

@ -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)