Existe-t-il un moyen d’étendre légèrement cette fonctionnalité et d’envoyer une notification à un utilisateur (ou à un groupe) lorsqu’un message de « première visite » ou de « retour » a été publié ?
Nous avons quelqu’un qui souhaite jouer le rôle du « comité d’accueil », mais qui ne lit pas chaque publication sur un grand forum. Il serait idéal de pouvoir recevoir une notification à ce sujet.
Je réponds à ma propre question, voici une requête Data Explorer pour récupérer les utilisateurs qui ont effectué leur tout premier message le plus récemment :
-- [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
Il s’agit d’une modification mineure de cette requête par @tshenry :
On pourrait l’améliorer en définissant une période fixe à partir de laquelle on regarde en arrière, par exemple une semaine ou un mois, mais cela m’a mis en difficulté car je n’ai pas réussi à trouver comment faire fonctionner NOW() - 7 ou quelque chose de similaire.
De plus, exclure les MP comme dans une autre requête de @tshenry serait formidable, mais en tant que novice en SQL, il me faudrait énormément de temps pour comprendre comment le faire.
Pour exclure les MP, vous devez effectuer une jointure avec la table topics (en suivant la clé étrangère posts.topic_id) et vérifier la colonne archetype. Ajoutez ceci avant la clause WHERE :
Les avis de publication sont en réalité stockés dans la table post_custom_fields, vous pouvez donc obtenir une liste plus précise des publications comme ceci :
-- [params]
-- int :days_ago = 7
SELECT p.created_at,
p.id AS post_id,
p.user_id,
pcf.value AS "type d'avis"
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