diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php --- a/src/__phutil_library_map__.php +++ b/src/__phutil_library_map__.php @@ -1784,6 +1784,7 @@ 'ManiphestTaskTitleTransaction' => 'applications/maniphest/xaction/ManiphestTaskTitleTransaction.php', 'ManiphestTaskTransactionType' => 'applications/maniphest/xaction/ManiphestTaskTransactionType.php', 'ManiphestTaskUnblockTransaction' => 'applications/maniphest/xaction/ManiphestTaskUnblockTransaction.php', + 'ManiphestTaskUnlockEngine' => 'applications/maniphest/engine/ManiphestTaskUnlockEngine.php', 'ManiphestTransaction' => 'applications/maniphest/storage/ManiphestTransaction.php', 'ManiphestTransactionComment' => 'applications/maniphest/storage/ManiphestTransactionComment.php', 'ManiphestTransactionEditor' => 'applications/maniphest/editor/ManiphestTransactionEditor.php', @@ -4703,6 +4704,7 @@ 'PhabricatorUnitsTestCase' => 'view/__tests__/PhabricatorUnitsTestCase.php', 'PhabricatorUnknownContentSource' => 'infrastructure/contentsource/PhabricatorUnknownContentSource.php', 'PhabricatorUnlockEngine' => 'applications/system/engine/PhabricatorUnlockEngine.php', + 'PhabricatorUnlockableInterface' => 'applications/system/interface/PhabricatorUnlockableInterface.php', 'PhabricatorUnsubscribedFromObjectEdgeType' => 'applications/transactions/edges/PhabricatorUnsubscribedFromObjectEdgeType.php', 'PhabricatorUser' => 'applications/people/storage/PhabricatorUser.php', 'PhabricatorUserApproveTransaction' => 'applications/people/xaction/PhabricatorUserApproveTransaction.php', @@ -7419,6 +7421,7 @@ 'PhabricatorEditEngineLockableInterface', 'PhabricatorEditEngineMFAInterface', 'PhabricatorPolicyCodexInterface', + 'PhabricatorUnlockableInterface', ), 'ManiphestTaskAssignHeraldAction' => 'HeraldAction', 'ManiphestTaskAssignOtherHeraldAction' => 'ManiphestTaskAssignHeraldAction', @@ -7496,6 +7499,7 @@ 'ManiphestTaskTitleTransaction' => 'ManiphestTaskTransactionType', 'ManiphestTaskTransactionType' => 'PhabricatorModularTransactionType', 'ManiphestTaskUnblockTransaction' => 'ManiphestTaskTransactionType', + 'ManiphestTaskUnlockEngine' => 'PhabricatorUnlockEngine', 'ManiphestTransaction' => 'PhabricatorModularTransaction', 'ManiphestTransactionComment' => 'PhabricatorApplicationTransactionComment', 'ManiphestTransactionEditor' => 'PhabricatorApplicationTransactionEditor', diff --git a/src/applications/maniphest/engine/ManiphestTaskUnlockEngine.php b/src/applications/maniphest/engine/ManiphestTaskUnlockEngine.php new file mode 100644 --- /dev/null +++ b/src/applications/maniphest/engine/ManiphestTaskUnlockEngine.php @@ -0,0 +1,14 @@ +newTransaction($object) + ->setTransactionType(ManiphestTaskOwnerTransaction::TRANSACTIONTYPE) + ->setNewValue($user->getPHID()), + ); + } + +} diff --git a/src/applications/maniphest/storage/ManiphestTask.php b/src/applications/maniphest/storage/ManiphestTask.php --- a/src/applications/maniphest/storage/ManiphestTask.php +++ b/src/applications/maniphest/storage/ManiphestTask.php @@ -21,7 +21,8 @@ PhabricatorEditEngineSubtypeInterface, PhabricatorEditEngineLockableInterface, PhabricatorEditEngineMFAInterface, - PhabricatorPolicyCodexInterface { + PhabricatorPolicyCodexInterface, + PhabricatorUnlockableInterface { const MARKUP_FIELD_DESCRIPTION = 'markup:desc'; @@ -649,4 +650,12 @@ return new ManiphestTaskPolicyCodex(); } + +/* -( PhabricatorUnlockableInterface )------------------------------------- */ + + + public function newUnlockEngine() { + return new ManiphestTaskUnlockEngine(); + } + } diff --git a/src/applications/system/engine/PhabricatorUnlockEngine.php b/src/applications/system/engine/PhabricatorUnlockEngine.php --- a/src/applications/system/engine/PhabricatorUnlockEngine.php +++ b/src/applications/system/engine/PhabricatorUnlockEngine.php @@ -13,7 +13,13 @@ 'PhabricatorApplicationTransactionInterface')); } - return new PhabricatorDefaultUnlockEngine(); + if ($object instanceof PhabricatorUnlockableInterface) { + $engine = $object->newUnlockEngine(); + } else { + $engine = new PhabricatorDefaultUnlockEngine(); + } + + return $engine; } public function newUnlockViewTransactions($object, $user) { diff --git a/src/applications/system/interface/PhabricatorUnlockableInterface.php b/src/applications/system/interface/PhabricatorUnlockableInterface.php new file mode 100644 --- /dev/null +++ b/src/applications/system/interface/PhabricatorUnlockableInterface.php @@ -0,0 +1,18 @@ +>>UnlockEngine(); + } + +*/