Per rispondere alla tua prima domanda, mi aspetterei che mettere un sito in modalità di sola lettura influenzi la capacità degli utenti di ottenere il badge Devotee. Quando un sito è in modalità di sola lettura, nessun nuovo dato viene scritto nel database, quindi i dettagli sulle visite dell’utente non verranno registrati quando il sito è in modalità di sola lettura.
Prova questa query. Restituisce i giorni in cui un utente non ha visitato il sito tra una data di inizio e una data di fine specificate:
Giorni senza visite per utente
--[params]
-- date :start_date
-- date :end_date
-- string :username
WITH days AS (
SELECT date_trunc('day', day)::date AS day
FROM generate_series(:start_date::date, :end_date::date, '1 day') AS day
),
users_visits AS (
SELECT
visited_at
FROM user_visits uv
JOIN users u ON u.id = uv.user_id
WHERE u.username = :username
AND visited_at BETWEEN :start_date AND :end_date
),
visits_days AS (
SELECT
day,
visited_at
FROM days
LEFT JOIN users_visits uv
ON uv.visited_at = day
ORDER BY day DESC
)
SELECT day AS days_without_visits
FROM visits_days WHERE visited_at IS NULL
ORDER BY day DESC
Se desideri assegnare il badge ad alcuni utenti che tecnicamente non ne hanno diritto, dai un’occhiata a Award a non-custom badge through the console. Nota che questo approccio è possibile solo su siti self-hosted. Per i siti sulla nostra hosting, possiamo assegnarti i badge elencati in quell’argomento.