Sto cercando un modo per eliminare i messaggi privati (whispers) oltre una certa età da tutti i topic.
In genere usiamo i messaggi privati per discutere potenziali azioni dei moderatori, ma una volta che l’azione è stata intrapresa, i messaggi privati non sono più così utili e col passare del tempo diventano sempre più rumore di fondo.
Potrei eliminare i post oltre una certa età con post_type=4 (whisper), ma questo potrebbe lasciare cose sospese o inconsistenti nel database, o non essere consentito a causa delle chiavi del forum.
Questo sarebbe il modo più pulito per eliminare i post:
whispers = Post.where(post_type: 4).where("created_at < ?", 1.year.ago)
whispers.find_each do |w|
PostDestroyer.new(Discourse.system_user, w, skip_staff_log: true).destroy
putc "."
end
In pratica, questo farà sì che sia come se l’utente di Sistema avesse eliminato manualmente ogni post utilizzando il pulsante di eliminazione sul post. Ho incluso skip_staff_log in modo da non intasare i tuoi log dello staff, ma puoi rimuoverlo se preferisci registrare l’azione.
Quindi questo compito funziona bene, grazie… ma i messaggi privati sono semplicemente accorpati e rimangono visibili agli amministratori e ai moderatori quando vengono espansi.