From c821639e93d50c537daa6506de335530b355daf6 Mon Sep 17 00:00:00 2001 From: Jonathan Lomas Date: Tue, 3 Jul 2012 00:38:49 -0700 Subject: [PATCH] Opt-in approve your own Differential revisions Summary: Did exactly what @epriestley suggested in T1428#2. Test Plan: Turn it on in your config, post a revision, accept it. Turn it off in your config, post a revision, can't accept it. Reviewers: epriestley Reviewed By: epriestley CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D2900 --- conf/default.conf.php | 7 ++++++- .../controller/DifferentialRevisionViewController.php | 5 +++++ .../differential/editor/DifferentialCommentEditor.php | 4 +++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/conf/default.conf.php b/conf/default.conf.php index 9e176a6b7c..c0a80ce958 100644 --- a/conf/default.conf.php +++ b/conf/default.conf.php @@ -943,12 +943,17 @@ return array( 'differential.anonymous-access' => false, // List of file regexps that should be treated as if they are generated by - // an automatic process, and thus get hidden by default in differential + // an automatic process, and thus get hidden by default in differential. 'differential.generated-paths' => array( // '/config\.h$/', // '#/autobuilt/#', ), + // If you set this to true, users can accept their own revisions. This action + // is disabled by default because it's most likely not a behavior you want, + // but it proves useful if you are working alone on a project and want to make + // use of all of differential's features. + 'differential.allow-self-accept' => false, // -- Maniphest ------------------------------------------------------------- // diff --git a/src/applications/differential/controller/DifferentialRevisionViewController.php b/src/applications/differential/controller/DifferentialRevisionViewController.php index 2e09f8812b..3b5a157d29 100644 --- a/src/applications/differential/controller/DifferentialRevisionViewController.php +++ b/src/applications/differential/controller/DifferentialRevisionViewController.php @@ -536,13 +536,18 @@ final class DifferentialRevisionViewController extends DifferentialController { $viewer_did_accept = ($viewer_phid === $revision->loadReviewedBy()); $status = $revision->getStatus(); + $allow_self_accept = PhabricatorEnv::getEnvConfig( + 'differential.allow-self-accept', false); + if ($viewer_is_owner) { switch ($status) { case ArcanistDifferentialRevisionStatus::NEEDS_REVIEW: + $actions[DifferentialAction::ACTION_ACCEPT] = $allow_self_accept; $actions[DifferentialAction::ACTION_ABANDON] = true; $actions[DifferentialAction::ACTION_RETHINK] = true; break; case ArcanistDifferentialRevisionStatus::NEEDS_REVISION: + $actions[DifferentialAction::ACTION_ACCEPT] = $allow_self_accept; $actions[DifferentialAction::ACTION_ABANDON] = true; $actions[DifferentialAction::ACTION_REQUEST] = true; break; diff --git a/src/applications/differential/editor/DifferentialCommentEditor.php b/src/applications/differential/editor/DifferentialCommentEditor.php index 30704c87d6..9cfd4de8bf 100644 --- a/src/applications/differential/editor/DifferentialCommentEditor.php +++ b/src/applications/differential/editor/DifferentialCommentEditor.php @@ -111,6 +111,8 @@ final class DifferentialCommentEditor { $actor_phid = $this->actorPHID; $actor = id(new PhabricatorUser())->loadOneWhere('PHID = %s', $actor_phid); $actor_is_author = ($actor_phid == $revision->getAuthorPHID()); + $allow_self_accept = PhabricatorEnv::getEnvConfig( + 'differential.allow-self-accept', false); $revision_status = $revision->getStatus(); $revision->loadRelationships(); @@ -176,7 +178,7 @@ final class DifferentialCommentEditor { break; case DifferentialAction::ACTION_ACCEPT: - if ($actor_is_author) { + if ($actor_is_author && !$allow_self_accept) { throw new Exception('You can not accept your own revision.'); } if (($revision_status !=