I’m not well-versed in these queries but I have been using this (and others with different post requirements) query I got from the Discourse meta site to reward posting to a particular category.
SELECT P.user_id, MIN(P.created_at) granted_at, MAX(P.id) post_id
FROM badge_posts P JOIN topics T ON T.id = P.topic_id
WHERE T.category_id IN (SELECT id FROM categories WHERE id = 56 OR parent_category_id = 6)
AND P.user_id >= 0 GROUP BY P.user_id HAVING COUNT(*) >= 1
I was wondering how exactly I could change this to:
A) Require new TOPICS, not just posts in the category and
B) How I could include subcategories. So not just category 6, but also subcategories 7,8, and 9.
I finally realized why this code wasn’t working. I can’t award badges to categories that are limited to certain trust levels. I have a category that is only accessible/visible to trust level 2+
Badges won’t work for that group. Is that a bug or feature? Is there any way around it?
@sam, is there any way around this? The category is a corner of my forum designed to be earned by “leveling” up your trust level and contributing. I don’t mind if people who can’t access can see the badges earned from it. It’s meant to be something to work toward.
Das ist machbar. Das Problem liegt daran, dass die Abfrage die Tabelle badge_posts verwendet. Die Tabelle badge_posts enthält keine Beiträge aus geschützten Kategorien. Wenn die Abfrage so geändert wird, dass sie stattdessen die Tabelle posts verwendet, sollte es funktionieren.