Page MenuHomePhabricator

Implement `PhabricatorDestructableInterface` on `PhabricatorProject`
Closed, ResolvedPublic

Description

Whilst I most agree with the reasons against being able to delete objects for the sake of auditability, I think that there are certain conditions in which it is preferable to forcefully delete a project.

Event Timeline

joshuaspence claimed this task.
joshuaspence raised the priority of this task from to Normal.
joshuaspence updated the task description. (Show Details)
joshuaspence added a subscriber: joshuaspence.

bin/remove should always be able to destroy objects, we just haven't implemented PhabricatorDestroyableInterface or whatever for Projects yet.

epriestley renamed this task from Allow projects to be deleted by `./bin/remove` under certain conditions. to Implement `PhabricatorDestructableInterface` on `PhabricatorProject`.Jun 2 2014, 2:04 PM

Offhand, I think these are the related objects to destroy when destroying a project:

  • The PhabricatorProjectColumns on its workboard.
    • These should also implement PhabricatorDestructableInterface, since they have edges and transactions.
  • The ProjectSlug rows.
  • The wiki pages will become inaccessible, but I think we shouldn't delete them -- I plan to break Phriction and Projects apart more. Soon these will be more similar to a Maniphest task that happens to have a "Members of X" visibility policy, which we should not delete.
  • At some point, we should handle classes of PhabricatorCustomFieldInterface (see TODOs in PhabricatorDestructionEngine->destroyObject()).

I think that's about it. Membership and subscription relationships are stored in edges, and transactions are normal, and those both get cleaned up for free already.