mirror of
https://we.phorge.it/source/phorge.git
synced 2025-01-29 16:08:22 +01:00
Allow projects to be deleted with ./bin/remove destroy
.
Summary: Fixes T5235. Implement `PhabricatorDestructableInterface` on `PhabricatorProject` so that projects can be deleted with `./bin/remove destroy`. Test Plan: Created (and then destroyed) a test project. Verified that the corresponding objects (project, slugs and workboard columns) were removed from the database. Reviewers: epriestley, #blessed_reviewers Reviewed By: epriestley, #blessed_reviewers Subscribers: epriestley, Korvin Maniphest Tasks: T5235 Differential Revision: https://secure.phabricator.com/D9352
This commit is contained in:
parent
1e2a592ceb
commit
c2eff7c216
2 changed files with 38 additions and 2 deletions
|
@ -5,7 +5,8 @@ final class PhabricatorProject extends PhabricatorProjectDAO
|
||||||
PhabricatorFlaggableInterface,
|
PhabricatorFlaggableInterface,
|
||||||
PhabricatorPolicyInterface,
|
PhabricatorPolicyInterface,
|
||||||
PhabricatorSubscribableInterface,
|
PhabricatorSubscribableInterface,
|
||||||
PhabricatorCustomFieldInterface {
|
PhabricatorCustomFieldInterface,
|
||||||
|
PhabricatorDestructableInterface {
|
||||||
|
|
||||||
protected $name;
|
protected $name;
|
||||||
protected $status = PhabricatorProjectStatus::STATUS_ACTIVE;
|
protected $status = PhabricatorProjectStatus::STATUS_ACTIVE;
|
||||||
|
@ -247,4 +248,27 @@ final class PhabricatorProject extends PhabricatorProjectDAO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* -( PhabricatorDestructableInterface )----------------------------------- */
|
||||||
|
|
||||||
|
public function destroyObjectPermanently(
|
||||||
|
PhabricatorDestructionEngine $engine) {
|
||||||
|
|
||||||
|
$this->openTransaction();
|
||||||
|
$this->delete();
|
||||||
|
|
||||||
|
$columns = id(new PhabricatorProjectColumn())
|
||||||
|
->loadAllWhere('projectPHID = %s', $this->getPHID());
|
||||||
|
foreach ($columns as $column) {
|
||||||
|
$engine->destroyObject($column);
|
||||||
|
}
|
||||||
|
|
||||||
|
$slugs = id(new PhabricatorProjectSlug())
|
||||||
|
->loadAllWhere('projectPHID = %s', $this->getPHID());
|
||||||
|
foreach ($slugs as $slug) {
|
||||||
|
$slug->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->saveTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,7 +2,8 @@
|
||||||
|
|
||||||
final class PhabricatorProjectColumn
|
final class PhabricatorProjectColumn
|
||||||
extends PhabricatorProjectDAO
|
extends PhabricatorProjectDAO
|
||||||
implements PhabricatorPolicyInterface {
|
implements PhabricatorPolicyInterface,
|
||||||
|
PhabricatorDestructableInterface {
|
||||||
|
|
||||||
const STATUS_ACTIVE = 0;
|
const STATUS_ACTIVE = 0;
|
||||||
const STATUS_DELETED = 1;
|
const STATUS_DELETED = 1;
|
||||||
|
@ -87,4 +88,15 @@ final class PhabricatorProjectColumn
|
||||||
return pht('Users must be able to see a project to see its board.');
|
return pht('Users must be able to see a project to see its board.');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* -( PhabricatorDestructableInterface )----------------------------------- */
|
||||||
|
|
||||||
|
public function destroyObjectPermanently(
|
||||||
|
PhabricatorDestructionEngine $engine) {
|
||||||
|
|
||||||
|
$this->openTransaction();
|
||||||
|
$this->delete();
|
||||||
|
$this->saveTransaction();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue