@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge "Audit" more completely into "Diffusion"

Summary:
Fixes T6630. Long ago, "Audit", "Diffusion" and "Repositories" were three totally separate applications.

This separation isn't useful and the three rapidly became intertwined. Ideally, they would all be one application.

This doesn't take us quite that far, but Audit no longer has any controllers and has little actual behavior.

The "Audit" screen has always just been a SearchEngine view of commits with some filters on it, and this formalizes that and puts a link to it in Diffusion. (This view has other uses, too.)

Test Plan:
- Accessed audit from home page.
- Accessed audit/commits from Diffusion.
- Could no longer uninstall Audit on its own.
- Grepped for `/audit/` and `AuditApplication`.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T6630

Differential Revision: https://secure.phabricator.com/D17186

+64 -52
+2 -2
src/__phutil_library_map__.php
··· 642 642 'DiffusionCommitHintQuery' => 'applications/diffusion/query/DiffusionCommitHintQuery.php', 643 643 'DiffusionCommitHookEngine' => 'applications/diffusion/engine/DiffusionCommitHookEngine.php', 644 644 'DiffusionCommitHookRejectException' => 'applications/diffusion/exception/DiffusionCommitHookRejectException.php', 645 + 'DiffusionCommitListController' => 'applications/diffusion/controller/DiffusionCommitListController.php', 645 646 'DiffusionCommitMergeHeraldField' => 'applications/diffusion/herald/DiffusionCommitMergeHeraldField.php', 646 647 'DiffusionCommitMessageHeraldField' => 'applications/diffusion/herald/DiffusionCommitMessageHeraldField.php', 647 648 'DiffusionCommitPackageAuditHeraldField' => 'applications/diffusion/herald/DiffusionCommitPackageAuditHeraldField.php', ··· 1873 1874 'PhabricatorAuditController' => 'applications/audit/controller/PhabricatorAuditController.php', 1874 1875 'PhabricatorAuditEditor' => 'applications/audit/editor/PhabricatorAuditEditor.php', 1875 1876 'PhabricatorAuditInlineComment' => 'applications/audit/storage/PhabricatorAuditInlineComment.php', 1876 - 'PhabricatorAuditListController' => 'applications/audit/controller/PhabricatorAuditListController.php', 1877 1877 'PhabricatorAuditListView' => 'applications/audit/view/PhabricatorAuditListView.php', 1878 1878 'PhabricatorAuditMailReceiver' => 'applications/audit/mail/PhabricatorAuditMailReceiver.php', 1879 1879 'PhabricatorAuditManagementDeleteWorkflow' => 'applications/audit/management/PhabricatorAuditManagementDeleteWorkflow.php', ··· 5346 5346 'DiffusionCommitHintQuery' => 'PhabricatorCursorPagedPolicyAwareQuery', 5347 5347 'DiffusionCommitHookEngine' => 'Phobject', 5348 5348 'DiffusionCommitHookRejectException' => 'Exception', 5349 + 'DiffusionCommitListController' => 'DiffusionController', 5349 5350 'DiffusionCommitMergeHeraldField' => 'DiffusionCommitHeraldField', 5350 5351 'DiffusionCommitMessageHeraldField' => 'DiffusionCommitHeraldField', 5351 5352 'DiffusionCommitPackageAuditHeraldField' => 'DiffusionCommitHeraldField', ··· 6764 6765 'Phobject', 6765 6766 'PhabricatorInlineCommentInterface', 6766 6767 ), 6767 - 'PhabricatorAuditListController' => 'PhabricatorAuditController', 6768 6768 'PhabricatorAuditListView' => 'AphrontView', 6769 6769 'PhabricatorAuditMailReceiver' => 'PhabricatorObjectMailReceiver', 6770 6770 'PhabricatorAuditManagementDeleteWorkflow' => 'PhabricatorAuditManagementWorkflow',
+9 -18
src/applications/audit/application/PhabricatorAuditApplication.php
··· 3 3 final class PhabricatorAuditApplication extends PhabricatorApplication { 4 4 5 5 public function getBaseURI() { 6 - return '/audit/'; 6 + return '/diffusion/commit/'; 7 7 } 8 8 9 9 public function getIcon() { ··· 18 18 return pht('Browse and Audit Commits'); 19 19 } 20 20 21 - public function isPinnedByDefault(PhabricatorUser $viewer) { 22 - return true; 21 + public function canUninstall() { 22 + // Audit was once a separate application, but has largely merged with 23 + // Diffusion. 24 + return false; 23 25 } 24 26 25 - public function getHelpDocumentationArticles(PhabricatorUser $viewer) { 26 - return array( 27 - array( 28 - 'name' => pht('Audit User Guide'), 29 - 'href' => PhabricatorEnv::getDoclink('Audit User Guide'), 30 - ), 31 - ); 32 - } 33 - 34 - public function getRoutes() { 35 - return array( 36 - '/audit/' => array( 37 - '(?:query/(?P<queryKey>[^/]+)/)?' => 'PhabricatorAuditListController', 38 - ), 39 - ); 27 + public function isPinnedByDefault(PhabricatorUser $viewer) { 28 + return parent::isClassInstalledForViewer( 29 + 'PhabricatorDiffusionApplication', 30 + $viewer); 40 31 } 41 32 42 33 public function getApplicationOrder() {
+2 -1
src/applications/audit/conduit/AuditConduitAPIMethod.php
··· 3 3 abstract class AuditConduitAPIMethod extends ConduitAPIMethod { 4 4 5 5 final public function getApplication() { 6 - return PhabricatorApplication::getByClass('PhabricatorAuditApplication'); 6 + return PhabricatorApplication::getByClass( 7 + 'PhabricatorDiffusionApplication'); 7 8 } 8 9 9 10 }
-19
src/applications/audit/controller/PhabricatorAuditListController.php
··· 1 - <?php 2 - 3 - final class PhabricatorAuditListController 4 - extends PhabricatorAuditController { 5 - 6 - public function shouldAllowPublic() { 7 - return true; 8 - } 9 - 10 - public function handleRequest(AphrontRequest $request) { 11 - $controller = id(new PhabricatorApplicationSearchController()) 12 - ->setQueryKey($request->getURIData('queryKey')) 13 - ->setSearchEngine(new PhabricatorCommitSearchEngine()) 14 - ->setNavigation($this->buildSideNavView()); 15 - 16 - return $this->delegateToController($controller); 17 - } 18 - 19 - }
+1 -1
src/applications/audit/editor/PhabricatorAuditEditor.php
··· 42 42 } 43 43 44 44 public function getEditorApplicationClass() { 45 - return 'PhabricatorAuditApplication'; 45 + return 'PhabricatorDiffusionApplication'; 46 46 } 47 47 48 48 public function getEditorObjectsDescription() {
+1 -1
src/applications/audit/mail/PhabricatorAuditMailReceiver.php
··· 4 4 5 5 public function isEnabled() { 6 6 return PhabricatorApplication::isClassInstalled( 7 - 'PhabricatorAuditApplication'); 7 + 'PhabricatorDiffusionApplication'); 8 8 } 9 9 10 10 protected function getObjectPattern() {
+1 -1
src/applications/audit/query/PhabricatorCommitSearchEngine.php
··· 73 73 } 74 74 75 75 protected function getURI($path) { 76 - return '/audit/'.$path; 76 + return '/diffusion/commit/'.$path; 77 77 } 78 78 79 79 protected function getBuiltinQueryNames() {
+6
src/applications/diffusion/application/PhabricatorDiffusionApplication.php
··· 28 28 'name' => pht('Diffusion User Guide'), 29 29 'href' => PhabricatorEnv::getDoclink('Diffusion User Guide'), 30 30 ), 31 + array( 32 + 'name' => pht('Audit User Guide'), 33 + 'href' => PhabricatorEnv::getDoclink('Audit User Guide'), 34 + ), 31 35 ); 32 36 } 33 37 ··· 131 135 'lint/' => 'DiffusionLintController', 132 136 133 137 'commit/' => array( 138 + $this->getQueryRoutePattern() => 139 + 'DiffusionCommitListController', 134 140 $this->getEditRoutePattern('edit/') => 135 141 'DiffusionCommitEditController', 136 142 ),
+26
src/applications/diffusion/controller/DiffusionCommitListController.php
··· 1 + <?php 2 + 3 + final class DiffusionCommitListController 4 + extends DiffusionController { 5 + 6 + public function shouldAllowPublic() { 7 + return true; 8 + } 9 + 10 + public function handleRequest(AphrontRequest $request) { 11 + return id(new PhabricatorCommitSearchEngine()) 12 + ->setController($this) 13 + ->buildResponse(); 14 + } 15 + 16 + protected function buildApplicationCrumbs() { 17 + $crumbs = parent::buildApplicationCrumbs(); 18 + 19 + $crumbs->addTextCrumb( 20 + pht('Commits'), 21 + $this->getApplicationURI('commit/')); 22 + 23 + return $crumbs; 24 + } 25 + 26 + }
+11
src/applications/diffusion/controller/DiffusionRepositoryListController.php
··· 7 7 } 8 8 9 9 public function handleRequest(AphrontRequest $request) { 10 + $items = array(); 11 + 12 + $items[] = id(new PHUIListItemView()) 13 + ->setType(PHUIListItemView::TYPE_LABEL) 14 + ->setName(pht('Commits')); 15 + 16 + $items[] = id(new PHUIListItemView()) 17 + ->setName('Browse Commits') 18 + ->setHref($this->getApplicationURI('commit/')); 19 + 10 20 return id(new PhabricatorRepositorySearchEngine()) 11 21 ->setController($this) 22 + ->setNavigationItems($items) 12 23 ->buildResponse(); 13 24 } 14 25
+1 -1
src/applications/owners/controller/PhabricatorOwnersDetailController.php
··· 65 65 66 66 $commit_views = array(); 67 67 68 - $commit_uri = id(new PhutilURI('/audit/')) 68 + $commit_uri = id(new PhutilURI('/diffusion/commit/')) 69 69 ->setQueryParams( 70 70 array( 71 71 'auditorPHIDs' => $package->getPHID(),
+1 -1
src/applications/people/engine/PhabricatorPeopleProfileMenuEngine.php
··· 63 63 $viewer); 64 64 if ($have_diffusion) { 65 65 $uri = urisprintf( 66 - '/audit/?authors=%s#R', 66 + '/diffusion/commit/?authors=%s#R', 67 67 $object->getPHID()); 68 68 69 69 $items[] = $this->newItem()
+1 -1
src/applications/search/engine/PhabricatorJumpNavHandler.php
··· 6 6 $jump = trim($jump); 7 7 8 8 $patterns = array( 9 - '/^a$/i' => 'uri:/audit/', 9 + '/^a$/i' => 'uri:/diffusion/commit/', 10 10 '/^f$/i' => 'uri:/feed/', 11 11 '/^d$/i' => 'uri:/differential/', 12 12 '/^r$/i' => 'uri:/diffusion/',
-4
src/docs/book/phabricator.book
··· 37 37 "name": "Arcanist Integration", 38 38 "include": "(^src/applications/arcanist/)" 39 39 }, 40 - "audit": { 41 - "name": "Audit", 42 - "include": "(^src/applications/audit/)" 43 - }, 44 40 "auth": { 45 41 "name": "Auth", 46 42 "include": "(^src/applications/auth/)"
+2 -2
src/docs/user/userguide/audit.diviner
··· 23 23 - **Audit Requests** which ask a user (or some other entity) to audit a 24 24 commit. These can be triggered in a number of ways (see below). 25 25 26 - In the Audit tool's home screen (at `/audit/`) and on the homepage you can see 27 - commits and requests that require your action: 26 + In the Audit tool's home screen and on the homepage you can see commits and 27 + requests that require your action: 28 28 29 29 - **Required Audits** are open audit requests that require you, a project 30 30 you are a member of, or a package you own to audit a commit. An audit