有没有办法扩展此功能,以便在发布“首次访问”或“回访”通知时向用户(或群组)发送通知?
我们有一位希望担任“欢迎委员会”角色的成员,但无法阅读大型论坛上的每篇帖子。如果能为此类通知专门设置提醒,那就太好了。
有没有办法扩展此功能,以便在发布“首次访问”或“回访”通知时向用户(或群组)发送通知?
我们有一位希望担任“欢迎委员会”角色的成员,但无法阅读大型论坛上的每篇帖子。如果能为此类通知专门设置提醒,那就太好了。
回答我自己的问题,这里有一个数据浏览器查询,用于拉取最近发布第一条帖子的用户:
-- [params]
-- date :start_date
SELECT u.id AS user_id, p.id AS post_id, p.created_at
FROM users u
JOIN user_stats us
ON u.id = us.user_id
JOIN posts p
ON u.id = p.user_id
WHERE p.created_at = us.first_post_created_at
AND us.first_post_created_at BETWEEN :start_date::date AND NOW()
ORDER BY us.first_post_created_at desc
这是对 @tshenry 提供的此查询的轻微修改:
可以通过设置一个回溯时间段(例如一周或一个月)来改进它——但这难住了我,因为我无法弄清楚如何让 NOW() - 7 或类似表达式生效。
此外,排除私信(正如 @tshenry 的另一个查询所述)[Return all non-PM topics that have not received a staff reply] 会很棒,但作为 SQL 新手,我需要花费大量时间才能弄清楚如何实现。
我认为您可以使用类似以下内容:
AND us.first_post_created_at > NOW() - INTERVAL '7 DAYS'
要排除私信,您需要连接到 topics 表(遵循 posts.topic_id 外键),并检查 archetype 列。在 WHERE 子句之前添加以下内容:
JOIN topics t ON p.topic_id = t.id
…并在 ORDER BY 之前添加以下内容:
AND t.archetype = 'regular'
帖子通知实际上存储在 post_custom_fields 表中,因此您可以像这样获取更精确的帖子列表:
-- [params]
-- int :days_ago = 7
SELECT p.created_at,
p.id AS post_id,
p.user_id,
pcf.value AS "notice type"
FROM post_custom_fields pcf
INNER JOIN posts p ON pcf.post_id = p.id
INNER JOIN topics t ON p.topic_id = t.id
WHERE pcf.name = 'notice_type'
AND p.created_at > NOW() - INTERVAL ':days_ago days'
AND t.archetype = 'regular'
ORDER BY p.created_at ASC
太棒了!谢谢,这要好得多。
This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.