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.

Revisions and Commits

Restricted Differential Revision

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.

Closed by commit rPc2eff7c2163c.