Pour répondre à votre première question, je m’attendrais à ce que la mise en mode lecture seule d’un site affecte la capacité des utilisateurs à obtenir le badge Dévoué. Lorsqu’un site est en mode lecture seule, aucune nouvelle donnée n’est écrite dans la base de données, de sorte que les détails des visites de l’utilisateur ne seront pas enregistrés lorsque le site est en mode lecture seule.
Essayez cette requête. Elle renvoie les jours où un utilisateur n’a pas visité le site entre une date de début et une date de fin données :
Jours sans visites pour l’utilisateur
--[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
Si vous souhaitez attribuer le badge à certains utilisateurs qui ne s’y qualifient pas techniquement, consultez Award a non-custom badge through the console. Notez que cette approche n’est possible que sur les sites auto-hébergés. Pour les sites sur notre hébergement, nous pouvons vous attribuer les badges listés dans ce sujet.