If I want to completely delete a post, I should just hide them?

My apologies, as I know this might have been discussed at length previously, but I am still trying to understand. On a reply by @codinghorror, a while back, he wrote:

https://meta.discourse.org/t/deleted-topics-where-are-they/22312/8

Will that mean that, if I want to completely delete a post, I should just hide them? Will the delete removed posts after setting apply to the forum administrator, and thus, the topics/posts deleted/hidden by the administrator’s account be removed after the n hours set? Are posts and topics considered the same, for this setting?

How can one delete uploads, so that the purge deleted uploads grace period days settings become applicable (Grace period (in days) before a deleted upload is erased)?

So, based on the silent acceptance this topic got, am I to assume hidden posts do not get deleted after 30 days, and thus the delete removed posts after setting is a placebo?

Okay, I must have missed this topic earlier, but here is my understanding of how that setting works.

  1. A Hidden post is still a post that can be seen by other users, it has the message of “this content is hidden due to community flagging”, or something like that, and therefore it is still “visible”
  2. At 30 days (or whatever you have set), the post will be marked as “deleted”

This does not permanently destroy the post, instead it hides it from regular users to where only staff can see it. Discourse, to my knowledge, NEVER destroys a post entirely.

Uploads in that now deleted post, should eventually be cleaned up via the grace period at the next time it runs via Sidekiq.

Not trying to be nitpicky, but if delete doesn’t delete, then maybe that word shouldn’t be used. Flagged should replace the current Hidden, and Hidden should be made the new deleted.

I searched meta a lot, and found three years old developer discussions about implementing a real purge. There has been no advances on that idea, correct?

I am unaware of any plans for a real purge. The only way I know to do that is via the Rails console and calling post.destroy() on the post in question. So it technically exists, but isn’t automated in any form.

I tried the Rails console approach (found an old post referring to it), and it vomited errors at me, so I decided to hold that off.

The reply I referred about:

https://meta.discourse.org/t/tools-to-permanently-remove-or-delete-spam/5289/10?u=david_collantes

FYI, in Discourse, we “soft-delete” topics/posts. Meaning the content is still stored in the database but it flagged as being deleted and is thus not shown to standard users (admins can always seem them if they want to).

This help tremendously in dealing with spammers and/or misbehaving users.

@David_Collantes would you mind explaining why you wanted to completely erase the content of a post?

Imaginez qu’un utilisateur publie quelque chose de très sensible, comme les informations de carte de crédit de quelqu’un, son numéro de sécurité sociale, quelque chose que nous ne voulons absolument pas rendre visible à qui que ce soit, ou même quelque chose que l’équipe juridique de votre organisation vous demande de supprimer car cela pourrait engendrer une responsabilité.

Un autre facteur est que les messages « supprimés de manière douce » semblent être accessibles non seulement aux administrateurs, mais aussi aux modérateurs. Si vous avez un forum où les membres de la communauté peuvent obtenir un rôle de modérateur, cela complique simplement les scénarios liés à la confidentialité.

S’il existe une commande en ligne pour supprimer de tels messages dans des circonstances exceptionnelles, cela fonctionnerait également.

Oui, il en existe…

./launcher enter app
rails c
Post.find(L_ID_DU_MESSAGE).destroy

Notez que cette opération est irréversible à 100 %, sauf à récupérer une sauvegarde. Soyez donc prudent.

Bonjour,

Puisque Discourse « supprime en douceur » les messages, pouvons-nous considérer cette commande Rails comme la méthode recommandée pour supprimer complètement un message contenant des informations hautement sensibles, comme celles fournies par @icaria36 à titre d’exemple ? Si ce n’est pas le cas, quelle serait la méthode recommandée pour gérer ce type de messages ?

Y a-t-il un cas qui vous vient à l’esprit où la suppression complète d’un message de ce type pourrait casser quelque chose dans Discourse ?

La suppression définitive d’un poste en utilisant .destroy est la méthode recommandée. Cela ne cassera rien dans Discourse, car il existe des tâches qui assurent la cohérence.

Il peut y avoir une certaine incohérence dans les comptes pendant 1 à 7 jours selon les cas. (Sam a publié 9997 messages, mais en réalité, il n’en a publié que 9996).

Je ne suis pas sûr que ce soit idéal, mais j’ai utilisé ce code pour remplacer le contenu des publications de l’utilisateur dans les sujets supprimés par "[deleted]"". De cette façon, l’existence des publications a été préservée, et cela semblait plus sûr que de les détruire complètement.

# sauvegarde préalable
deleted_topic_id = 1234
user_id = 5678

t = Topic.unscoped.find(deleted_topic_id)
ps = t.posts.select { |p| p.user_id == user_id }

# `ps.count` pour vérifier

ps.each do |p|
  p.raw = '[deleted]'
  p.save
end

Je ne savais pas que masquer un message signalé ne le rendait pas invisible pour les autres utilisateurs du forum. Y a-t-il un moyen de réduire le délai de suppression de 30 jours ?