diff --git a/src/applications/audit/application/PhabricatorAuditApplication.php b/src/applications/audit/application/PhabricatorAuditApplication.php --- a/src/applications/audit/application/PhabricatorAuditApplication.php +++ b/src/applications/audit/application/PhabricatorAuditApplication.php @@ -19,9 +19,7 @@ } public function canUninstall() { - // Audit was once a separate application, but has largely merged with - // Diffusion. - return false; + return true; } public function isPinnedByDefault(PhabricatorUser $viewer) { diff --git a/src/applications/audit/conduit/AuditConduitAPIMethod.php b/src/applications/audit/conduit/AuditConduitAPIMethod.php --- a/src/applications/audit/conduit/AuditConduitAPIMethod.php +++ b/src/applications/audit/conduit/AuditConduitAPIMethod.php @@ -4,7 +4,7 @@ final public function getApplication() { return PhabricatorApplication::getByClass( - 'PhabricatorDiffusionApplication'); + 'PhabricatorAuditApplication'); } } diff --git a/src/applications/audit/query/PhabricatorCommitSearchEngine.php b/src/applications/audit/query/PhabricatorCommitSearchEngine.php --- a/src/applications/audit/query/PhabricatorCommitSearchEngine.php +++ b/src/applications/audit/query/PhabricatorCommitSearchEngine.php @@ -70,6 +70,7 @@ } protected function buildCustomSearchFields() { + $show_audit_fields = (id(new PhabricatorAuditApplication())->isInstalled()); $show_packages = PhabricatorApplication::isClassInstalled( 'PhabricatorPackagesApplication'); return array( @@ -95,6 +96,7 @@ ->setConduitKey('auditors') ->setAliases(array('auditor', 'auditors', 'auditorPHID')) ->setDatasource(new DiffusionAuditorFunctionDatasource()) + ->setIsHidden(!$show_audit_fields) ->setDescription( pht( 'Find commits where given users, projects, or packages are '. @@ -106,6 +108,7 @@ ->setOptions(DiffusionCommitAuditStatus::newOptions()) ->setDeprecatedOptions( DiffusionCommitAuditStatus::newDeprecatedOptions()) + ->setIsHidden(!$show_audit_fields) ->setDescription(pht('Find commits with given audit statuses.')), id(new PhabricatorSearchDatasourceField()) ->setLabel(pht('Repositories')) @@ -172,9 +175,13 @@ $names = array(); if ($this->requireViewer()->isLoggedIn()) { - $names['active'] = pht('Active Audits'); + if (id(new PhabricatorAuditApplication())->isInstalled()) { + $names['active'] = pht('Active Audits'); + } $names['authored'] = pht('Authored'); - $names['audited'] = pht('Audited'); + if (id(new PhabricatorAuditApplication())->isInstalled()) { + $names['audited'] = pht('Audited'); + } } $names['all'] = pht('All Commits'); @@ -224,9 +231,11 @@ $bucket = $this->getResultBucket($query); + // hide "Auditors" on /diffusion/commit/query/all/ if Audit not installed + $show_auditors = id(new PhabricatorAuditApplication())->isInstalled(); $template = id(new DiffusionCommitGraphView()) ->setViewer($viewer) - ->setShowAuditors(true); + ->setShowAuditors($show_auditors); $views = array(); if ($bucket) { diff --git a/src/applications/diffusion/editor/DiffusionCommitEditEngine.php b/src/applications/diffusion/editor/DiffusionCommitEditEngine.php --- a/src/applications/diffusion/editor/DiffusionCommitEditEngine.php +++ b/src/applications/diffusion/editor/DiffusionCommitEditEngine.php @@ -100,19 +100,22 @@ $data = $object->getCommitData(); $fields = array(); - - $fields[] = id(new PhabricatorDatasourceEditField()) - ->setKey('auditors') - ->setLabel(pht('Auditors')) - ->setDatasource(new DiffusionAuditorDatasource()) - ->setUseEdgeTransactions(true) - ->setTransactionType( - DiffusionCommitAuditorsTransaction::TRANSACTIONTYPE) - ->setCommentActionLabel(pht('Change Auditors')) - ->setDescription(pht('Auditors for this commit.')) - ->setConduitDescription(pht('Change the auditors for this commit.')) - ->setConduitTypeDescription(pht('New auditors.')) - ->setValue($object->getAuditorPHIDsForEdit()); + // remove "Change Auditors" from "Add Action" dropdown etc + // if Audit is not installed + if (id(new PhabricatorAuditApplication())->isInstalled()) { + $fields[] = id(new PhabricatorDatasourceEditField()) + ->setKey('auditors') + ->setLabel(pht('Auditors')) + ->setDatasource(new DiffusionAuditorDatasource()) + ->setUseEdgeTransactions(true) + ->setTransactionType( + DiffusionCommitAuditorsTransaction::TRANSACTIONTYPE) + ->setCommentActionLabel(pht('Change Auditors')) + ->setDescription(pht('Auditors for this commit.')) + ->setConduitDescription(pht('Change the auditors for this commit.')) + ->setConduitTypeDescription(pht('New auditors.')) + ->setValue($object->getAuditorPHIDsForEdit()); + } $actions = DiffusionCommitActionTransaction::loadAllActions(); $actions = msortv($actions, 'getCommitActionOrderVector'); diff --git a/src/applications/diffusion/herald/DiffusionAuditorsAddAuditorsHeraldAction.php b/src/applications/diffusion/herald/DiffusionAuditorsAddAuditorsHeraldAction.php --- a/src/applications/diffusion/herald/DiffusionAuditorsAddAuditorsHeraldAction.php +++ b/src/applications/diffusion/herald/DiffusionAuditorsAddAuditorsHeraldAction.php @@ -9,8 +9,13 @@ return pht('Add auditors'); } + // hide "Add auditors" Herald action if Audit not installed public function supportsRuleType($rule_type) { - return ($rule_type != HeraldRuleTypeConfig::RULE_TYPE_PERSONAL); + if (id(new PhabricatorAuditApplication())->isInstalled()) { + return ($rule_type != HeraldRuleTypeConfig::RULE_TYPE_PERSONAL); + } else { + return false; + } } public function applyEffect($object, HeraldEffect $effect) { diff --git a/src/applications/diffusion/herald/DiffusionAuditorsAddSelfHeraldAction.php b/src/applications/diffusion/herald/DiffusionAuditorsAddSelfHeraldAction.php --- a/src/applications/diffusion/herald/DiffusionAuditorsAddSelfHeraldAction.php +++ b/src/applications/diffusion/herald/DiffusionAuditorsAddSelfHeraldAction.php @@ -9,8 +9,13 @@ return pht('Add me as an auditor'); } + // hide "Add me as an auditor" Herald action if Audit not installed public function supportsRuleType($rule_type) { - return ($rule_type == HeraldRuleTypeConfig::RULE_TYPE_PERSONAL); + if (id(new PhabricatorAuditApplication())->isInstalled()) { + return ($rule_type == HeraldRuleTypeConfig::RULE_TYPE_PERSONAL); + } else { + return false; + } } public function applyEffect($object, HeraldEffect $effect) { diff --git a/src/applications/diffusion/herald/DiffusionCommitAuditorsHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitAuditorsHeraldField.php --- a/src/applications/diffusion/herald/DiffusionCommitAuditorsHeraldField.php +++ b/src/applications/diffusion/herald/DiffusionCommitAuditorsHeraldField.php @@ -5,6 +5,15 @@ const FIELDCONST = 'diffusion.commit.auditors'; + // hide "Auditors" Herald condition if Audit not installed + public function supportsObject($object) { + if (id(new PhabricatorAuditApplication())->isInstalled()) { + return ($object instanceof PhabricatorRepositoryCommit); + } else { + return false; + } + } + public function getHeraldFieldName() { return pht('Auditors'); } diff --git a/src/applications/diffusion/herald/DiffusionCommitPackageAuditHeraldField.php b/src/applications/diffusion/herald/DiffusionCommitPackageAuditHeraldField.php --- a/src/applications/diffusion/herald/DiffusionCommitPackageAuditHeraldField.php +++ b/src/applications/diffusion/herald/DiffusionCommitPackageAuditHeraldField.php @@ -5,6 +5,16 @@ const FIELDCONST = 'diffusion.commit.package.audit'; + // hide "Affected packages that need audit" Herald condition + // if Audit not installed + public function supportsObject($object) { + if (id(new PhabricatorAuditApplication())->isInstalled()) { + return ($object instanceof PhabricatorRepositoryCommit); + } else { + return false; + } + } + public function getHeraldFieldName() { return pht('Affected packages that need audit'); } diff --git a/src/applications/diffusion/view/DiffusionCommitGraphView.php b/src/applications/diffusion/view/DiffusionCommitGraphView.php --- a/src/applications/diffusion/view/DiffusionCommitGraphView.php +++ b/src/applications/diffusion/view/DiffusionCommitGraphView.php @@ -169,7 +169,10 @@ $this->addBuildAction($item_view, $hash); } - $this->addAuditAction($item_view, $hash); + // hide Audit entry on /diffusion/commit/query/all if Audit not installed + if (id(new PhabricatorAuditApplication())->isInstalled()) { + $this->addAuditAction($item_view, $hash); + } if ($show_auditors) { $auditor_list = $item_view->newMapView(); diff --git a/src/applications/diffusion/xaction/DiffusionCommitActionTransaction.php b/src/applications/diffusion/xaction/DiffusionCommitActionTransaction.php --- a/src/applications/diffusion/xaction/DiffusionCommitActionTransaction.php +++ b/src/applications/diffusion/xaction/DiffusionCommitActionTransaction.php @@ -8,6 +8,9 @@ } public function isActionAvailable($object, PhabricatorUser $viewer) { + if (!id(new PhabricatorAuditApplication())->isInstalled()) { + return false; + } try { $this->validateAction($object, $viewer); return true; diff --git a/src/applications/search/engine/PhabricatorApplicationSearchEngine.php b/src/applications/search/engine/PhabricatorApplicationSearchEngine.php --- a/src/applications/search/engine/PhabricatorApplicationSearchEngine.php +++ b/src/applications/search/engine/PhabricatorApplicationSearchEngine.php @@ -275,16 +275,18 @@ ->setOptions($orders); } - $buckets = $this->newResultBuckets(); - if ($query && $buckets) { - $bucket_options = array( - self::BUCKET_NONE => pht('No Bucketing'), - ) + mpull($buckets, 'getResultBucketName'); - - $fields[] = id(new PhabricatorSearchSelectField()) - ->setLabel(pht('Bucket')) - ->setKey('bucket') - ->setOptions($bucket_options); + if (id(new PhabricatorAuditApplication())->isInstalled()) { + $buckets = $this->newResultBuckets(); + if ($query && $buckets) { + $bucket_options = array( + self::BUCKET_NONE => pht('No Bucketing'), + ) + mpull($buckets, 'getResultBucketName'); + + $fields[] = id(new PhabricatorSearchSelectField()) + ->setLabel(pht('Bucket')) + ->setKey('bucket') + ->setOptions($bucket_options); + } } $field_map = array();