[RFC|Accepted] Soft Delete

These requests for comments/change have lead to an implemented feature that has been successfully merged into the 3.1/Ascraeus branch. Everything listed in this forum will be available in phpBB 3.1.
Post Reply
User avatar
nickvergessen
Former Team Member
Posts: 733
Joined: Sun Oct 07, 2007 11:54 am
Location: Stuttgart, Germany
Contact:

Re: [RFC|Accepted] Soft Delete

Post by nickvergessen »

The current Implementation includes 4 permissions, which were added by A_Jelly_Donut. 2 of them are okay (green), but i think the other two (red) should be removed.
  • m_softdelete:
    Moderator forum permission to allow soft deleting a post, which hides it from normal users[1]
  • m_restore:
    Moderator forum permission to restore soft deleted posts in a sub module of the moderator queue or in the topic. As we had a RFC to simplify the permission system and similarity to m_approve, I personally would merge this two permissions (meaning to just modify its description in the ACP).
  • f_softdelete:
    User forum permission to allow soft deleting own posts, which hides it from normal users[1]
    Could be used to disallow Users to delete their posts instead.
  • f_restore:
    User forum permission to allow restoring own soft deleted posts. However users can only restore their posts within the topic view. This however is only possible, when the user can view his own soft deleted posts, so [1] is not really correct. This also means, we have an extra OR in all queries that retrieve posts/topics from the DB.

    Also users could use the f_restore to overrule a moderators decision:
    • Moderator A hides post of user B
    • User B unhides the post himself
    This problem should lead to f_restore, not being given to users at all and moderators with m_restore don't even need it. So I think f_restore should be removed.
Removing both permissions would cause an improvement on the query performance.
Member of the Development-TeamNo Support via PM

User avatar
brunoais
Registered User
Posts: 964
Joined: Fri Dec 18, 2009 3:55 pm

Re: [RFC|Accepted] Soft Delete

Post by brunoais »

I say there's a fatal flaw in the was this was made, according to what you just wrote.
I think there should be a "kinda" override when the moderator does it. If the moderator soft deletes it, the user may not restore it. That's crutial and if it does not work, it's a major code design flaw.

You may join m_softdelete and m_restore for the sake of the "simplify the permission system". Just make the code such way that's not "that hard" to have that permission back in an extension. Not so much for f_softdelete and f_restore (if for these 2 f_* the performance impact is quite significant forget what's after this). The forum admin may want to allow a user to delete his post and also to be able to restore it at a later time I don't know how likely is that to happen I'd actually activate the f_restore permission for "power users" of the forum because that gives 'em more freedom in the forum. Ofc, these are not that needed, just as nickvergessen stated.

Either way, I'm not against nickvergessen's opinion

User avatar
MichaelC
Development Team
Development Team
Posts: 889
Joined: Thu Jan 28, 2010 6:29 pm

Re: [RFC|Accepted] Soft Delete

Post by MichaelC »

I personally thing that m_restore should be kept while f_restore should be removed.

I would maybe add a m_viewsoftdeleted that would be a separate permission that would decide whether or not a moderator can view soft deleted posts?
Formerly known as Unknown Bliss
psoTFX wrote: I went with Olympus because as I said to the teams ... "It's been one hell of a hill to climb"
No unsolicited PMs please except for quotes.

User avatar
canonknipser
Registered User
Posts: 71
Joined: Mon Sep 19, 2011 4:42 am
Location: Germany

Re: [RFC|Accepted] Soft Delete

Post by canonknipser »

Remove f_restore and use softdelete as default for non-moderators, so users can't hard-delete their posts. Merge those m_-permissions
Greetings
Frank
phpbb.de support team member - no support via PM or mail
English is not my native language
Extensions and scripts for phpBB

User avatar
nickvergessen
Former Team Member
Posts: 733
Joined: Sun Oct 07, 2007 11:54 am
Location: Stuttgart, Germany
Contact:

Re: [RFC|Accepted] Soft Delete

Post by nickvergessen »

I updated the first post with my idea of a phpBB Soft Delete Implementation:
Ticket: http://tracker.phpbb.com/browse/PHPBB3-9657
Patch: https://github.com/nickvergessen/phpbb3 ... oft-delete (WIP)

Terms:
  • Soft deleting:
    If a post is soft deleted by a moderator or user, it is not visible in the topic for normal users anymore.
    If the first post of a topic is soft deleted, the whole topic will no longer be visibile.
  • Restore:
    Restoring a post/topic means to revert the soft deletion, so it's visibile again.

Configuration:
  • Enable/Disable:
    This simple boolean config will allow managing soft delete with one option, rather than having to check all permission.
    • Default value: true

Permissions:
  • New permissions:
    • m_softdelete:
      Moderator forum permission to allow soft deleting a post, which hides it from normal users
      • Default value: Copied from m_delete
    • f_softdelete:
      User forum permission to allow soft deleting own posts, which hides it from normal users. Could be used in order to disallow Users to delete their posts instead, moderators could then decide whether to really delete the post or not.
      • Default value: Copied from f_delete
  • Modified permissions:
    • m_approve:
      The m_approve permission will not only be used for new unapproved posts, in order to approve them, but also for soft-deleted posts to restore them (revert soft-deletion).
      • Default value: Not modified
How to:
  • Soft delete:
    Most might agree, that it would look a bit stupid to add a second delete button on each post. So I thought the following might be the best option:
    • Soft delete posts:
      Currently when you click on the X to delete a post, you are prompted with a confirm box, asking if you really want to delete the post. This Confirmbox would be modified to have 3 options, instead of Yes/No only:
      • Soft delete:
        Soft deletes the post/topic, so it can be recovered with "Restore".
      • Delete:
        Hard deletes the post/topic. the post/topic can not be recovered/restored.
      • Cancel:
        In case of a misclick or when the user decides not to delete the post/topic.
      If the user does not have *_softdelete, the soft delete option is not displayed, if the user does not have *_delete, the hard delete option is missing, and the Soft delete option is named "Delete" in order to avoid confusion.
    • Soft delete topics:
      Topics can be soft deleted, by:
      • Soft deleting the first post of the topic, or
      • Using the "Soft delete topic" option in the Quick-Moderation box.
      (Both actions have the exactly same result)
  • Restore:
    • Restore posts:
      Posts can be restored by moderators in two ways:
      • Click on a "Restore" button, like it is currently done with unapproved posts, for approving them, or
      • In a MCP module within the queue category.
    • Restore topics:
      Topics can be restored, with performing the Restore post action for the first post of the topic.
Member of the Development-TeamNo Support via PM

User avatar
EXreaction
Registered User
Posts: 1555
Joined: Sat Sep 10, 2005 2:15 am

Re: [RFC|Accepted] Soft Delete

Post by EXreaction »

nickvergessen wrote:If the first post of a topic is soft deleted, the whole topic will no longer be visibile.
Why would the whole topic not be visible? That's not the way deleting posts works now, so the behavior should not change. No behavior should change from the way posts/topics are currently deleted, except that they will still be visible to certain people and be able to be restored by certain people.


Instead of adding new permissions for soft deletion, permissions should be added for permanent deletion, and the current delete permission would become the soft delete permission setting. Permission to permanently delete posts or topics should be given out less often after soft deletion is available.


When a user soft deletes their own post, they should be able to see it, plus anyone with moderator level soft deletion permission. This should not be m_approve because they are not "approving" posts, the OP wanted the post removed for a reason and the moderator is not approving them by undeleting them.

The moderator permission setting could be titled: "Can soft delete and restore soft deleted posts" to make this clear.


When a moderator soft deletes a post, only someone with the moderator permission to soft delete should be able to see it.


If someone has the ability to see a soft deleted post, they should be able to restore it (after all, they could just quote and repost it), there does not need to be a separate permission for that.

nickvergessen wrote:Restore:
  • Restore posts:
    Posts can be restored by moderators in two ways:
    • Click on a "Restore" button, like it is currently done with unapproved posts, for approving them, or
    • In a MCP module within the queue category.
Soft deleted posts should not show up in a moderation queue. They were deleted for a reason and they should not be restored without greater reason. If administrators don't want users deleting their own posts without approval, they should not allow post deletion at all.

User avatar
brunoais
Registered User
Posts: 964
Joined: Fri Dec 18, 2009 3:55 pm

Re: [RFC|Accepted] Soft Delete

Post by brunoais »

I also agree (with EXreaction) that if the current system is:
if the 1st post is deleted the topic remains, then that should not change unless you have a good reason for it.
I've got nothing else to add, for now.

EDIT:
BTW, if the post is locked by a moderator, is the user able to restore or soft delete?
IMO if a post is locked, the user should be unable to do anything to it. You don't mention that here so I don't know if you do such check while applying the soft delete or the restore.

User avatar
nickvergessen
Former Team Member
Posts: 733
Joined: Sun Oct 07, 2007 11:54 am
Location: Stuttgart, Germany
Contact:

Re: [RFC|Accepted] Soft Delete

Post by nickvergessen »

EXreaction wrote:
nickvergessen wrote:If the first post of a topic is soft deleted, the whole topic will no longer be visibile.
Why would the whole topic not be visible? That's not the way deleting posts works now, so the behavior should not change. No behavior should change from the way posts/topics are currently deleted, except that they will still be visible to certain people and be able to be restored by certain people.
Well that was already implemented like that, but I see your point. I will think about it.
EXreaction wrote:Instead of adding new permissions for soft deletion, permissions should be added for permanent deletion, and the current delete permission would become the soft delete permission setting. Permission to permanently delete posts or topics should be given out less often after soft deletion is available.
Whats the difference between what i was saying? Doesnt really matter which one is which, if the setting is copied anyway.

EXreaction wrote:When a user soft deletes their own post, they should be able to see it, plus anyone with moderator level soft deletion permission.
Why should users be able to see posts they just deleted, and don't have permissions to restore? I really dont see a point in this, so the next three questions are obsoleted.

EXreaction wrote:If someone has the ability to see a soft deleted post, they should be able to restore it (after all, they could just quote and repost it), there does not need to be a separate permission for that.
So restoring would be part of m_softdelete rather then m_approve? This will increase the complexity of queries and so slowing down search/feed and other get topics of all forums functions

EXreaction wrote:Soft deleted posts should not show up in a moderation queue....
Where else would a moderator have the ability to restore posts/topics in the MCP then?!
brunoais wrote:if the post is locked by a moderator, is the user able to restore or soft delete?
1. users should never be able to restore posts
2. if a post is locked it can not be modified by the user (irrelevant because of 1)
Member of the Development-TeamNo Support via PM

User avatar
Pony99CA
Registered User
Posts: 986
Joined: Sun Feb 08, 2009 2:35 am
Location: Hollister, CA
Contact:

Re: [RFC|Accepted] Soft Delete

Post by Pony99CA »

Here are a few other questions.

Currently, for users to delete posts, that post must be the last in the topic. Will that rule still be true for soft deleting? As the post can easily be restored, I see no reason to prevent users from soft deleting any of their posts.

If a user soft deletes a post, and a moderator restores it (perhaps because the deletion broke the flow of the topic), should the user be blocked from soft deleting it again or is appropriate action for the moderator to restore and then lock the post (because the user could still edit it)?

If we have both f_delete and f_softdelete (or f_harddelete and f_softdelete) permissions, shouldn't the ability to hard delete automatically allow the ability to soft delete? Why would you want to allow somebody to hard delete but not soft delete? (The same is true of moderator permissions.)

When combined with post revisions, should a soft delete and/or restore be considered a revision (for auditing purposes)?

Steve
Silicon Valley Pocket PC (http://www.svpocketpc.com)
Creator of manage_bots and spoof_user (ask me)
Need hosting for a small forum with full cPanel & MySQL access? Contact me or PM me.

User avatar
Pony99CA
Registered User
Posts: 986
Joined: Sun Feb 08, 2009 2:35 am
Location: Hollister, CA
Contact:

Re: [RFC|Accepted] Soft Delete

Post by Pony99CA »

nickvergessen wrote:
EXreaction wrote:Instead of adding new permissions for soft deletion, permissions should be added for permanent deletion, and the current delete permission would become the soft delete permission setting. Permission to permanently delete posts or topics should be given out less often after soft deletion is available.
Whats the difference between what i was saying? Doesnt really matter which one is which, if the setting is copied anyway.
Actually, it could be a significant difference. if f_delete becomes the soft delete permission, users who could currently hard delete will now only be able to soft delete. That may be fine, but it's a consideration.

Regardless, I would rename f_delete to either f_harddelete or f_softdelete (depending on the answer to the above question) to prevent confusion about what f_delete means. I would also do the same for m_delete.

Steve
Silicon Valley Pocket PC (http://www.svpocketpc.com)
Creator of manage_bots and spoof_user (ask me)
Need hosting for a small forum with full cPanel & MySQL access? Contact me or PM me.

Post Reply