Badge & Comunità private

Ho esaminato le query per i badge esistenti per capire quali mirano ai post nella tabella badge_posts o utilizzano altri metodi per escludere i post delle categorie protette.

Le seguenti query per i badge mirano a post specifici e non verranno assegnate per attività nelle categorie private:

  • Editor
  • Primo Segnalazione
  • Primo Mi piace
  • Primo Link
  • Primo Citazione
  • Primo Condivisione
  • Primo Emoji
  • Primo Menzione
  • Primo Onebox
  • Prima Risposta via Email
  • Lettore
  • Editore Wiki
  • Grande Condivisione
  • Buona Condivisione
  • Helpdesk
  • Bella Condivisione
  • Benvenuto
  • Link Famoso
  • Grande Risposta
  • Grande Argomento
  • Buona Risposta
  • Buon Argomento
  • Link Caldo
  • Bella Risposta
  • Buon Argomento
  • Link Popolare

Le seguenti badge non interrogano post specifici e verranno assegnate per attività nelle categorie private:

  • Licenziato
  • Autobiografo
  • Certificato
  • Nuovo Utente del Mese
  • Lettura delle Linee Guida
  • Ammirato
  • Campione
  • Pazzo d’Amore
  • Devoto
  • Empatico
  • Aficionado
  • Anniversario
  • Campagna
  • Dona
  • Amore Superiore
  • Rispettato
  • Apprezzato
  • Entusiasta
  • Fuori per Amore
  • Promotore
  • Grazie
  • Leader
  • Regolare
  • Base
  • Membro
  • Staff
  • Immagine del Profilo

Qualcosa di simile è già coperto dai badge Apprezzato (1 like su 20 post) e Rispettato (2 like su 100 post). Potrebbero essere aggiunte alcune varianti di queste query. Ad esempio, 10 like su 20 post. Un badge concesso per argomenti super apprezzati potrebbe essere un’ottima idea: funzionerebbe come l’equivalente del badge Grandi Argomenti. Ad esempio, potrebbe essere assegnato quando un utente ha creato 10 argomenti che hanno ricevuto 10 like.

Non sono sicuro che abbia senso aggiungere un badge assegnato per attività su un singolo post o argomento che non colleghi al post. Ad esempio, potrebbe essere creato un badge Primo Mi piace alternativo con il seguente SQL:

SELECT pa1.user_id, pa1.created_at granted_at
FROM (
  SELECT pa.user_id, min(pa.id) id
  FROM post_actions pa
  JOIN posts p on p.id = pa.post_id
  WHERE post_action_type_id = 2
  GROUP BY pa.user_id
) x
JOIN post_actions pa1 on pa1.id = x.id

Affinché la query funzioni, deve utilizzare il trigger “Aggiorna ogni giorno” invece della query “Quando un utente agisce su un post”. Nella pagina dei badge, verranno mostrati gli utenti a cui è stato assegnato il badge insieme all’orario di assegnazione. Non ci sarà un link al post per cui è stato assegnato il badge:

Ha senso questo tipo di approccio per i siti che hanno principalmente categorie protette? Se sì, potrebbe essere utilizzato per duplicare alcune delle query che attualmente mirano alla tabella badge_posts.

4 Mi Piace