Incoraggiare il flag 'Notify Users' per i PM

Vogliamo incoraggiare gli utenti a inviare più messaggi privati riguardo a feedback controversi o personali sui post (e a farlo in modo civile e amichevole…), piuttosto che pubblicarli pubblicamente e rischiare di deviare la conversazione dall’argomento. Ecco il badge:

La query:

SELECT p.user_id, current_timestamp AS granted_at
FROM posts AS p
JOIN topics t on t.id = p.topic_id
WHERE t.archetype = 'private_message'
AND t.title LIKE 'Your post in "%"'
AND p.post_number = 1
AND p.like_count >= 1
AND (:backfill OR p.user_id IN (:user_ids))
GROUP BY p.user_id
HAVING count(*) >= 1

Non ho trovato un trigger specifico per segnalare i messaggi, quindi la query utilizza il titolo predefinito “Your post in …”. Direi che il badge può essere facilmente manipolato o barare in diversi modi, ma raggiungerebbe comunque il suo obiettivo semplicemente dando maggiore visibilità a questa funzione e comunicando che si tratta di un’azione positiva per la comunità.

Potrebbe basarsi sul post_action per ‘Notify User’?

Qualcosa come:

SELECT pa.user_id, current_timestamp AS granted_at
FROM post_actions pa
  JOIN posts p ON p.id = pa.related_post_id
WHERE pa.post_action_type_id = 6
  AND p.like_count >= 1
  AND (:backfill OR p.user_id IN (:user_ids))
GROUP BY pa.user_id
HAVING COUNT(*) >= 1

In realtà, penso che i link nel post su cui si basava il flag, non il PM. Potrebbe essere necessario un piccolo aggiustamento.

Una rapida modifica alla join per rendere p.id = pa.related_post_id fa il lavoro, penso. :+1:

Penso che il ‘HAVING’ sia necessario solo se si desidera concedere una versione Silver e Gold di più di una.