From 328aa383e460991d7f5cc4caa674ec63861cfdc4 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 1 Jul 2013 12:38:27 -0700 Subject: [PATCH] Always provide a viewer when executing DifferentialRevisionQuery Summary: Ref T603. This query isn't policy-aware yet, but prepare for it to be one day. Test Plan: Looked at: home page; differential home; differential detail; diffusion browse. Made differential.query conduit call. Reviewers: btrahan Reviewed By: btrahan CC: aran Maniphest Tasks: T603 Differential Revision: https://secure.phabricator.com/D6337 --- .../application/PhabricatorApplicationDifferential.php | 1 + .../conduit/ConduitAPI_differential_query_Method.php | 4 +++- .../controller/DifferentialRevisionListController.php | 6 +++--- .../controller/DifferentialRevisionViewController.php | 1 + .../differential/view/DifferentialRevisionListView.php | 1 + .../diffusion/controller/DiffusionController.php | 3 ++- .../controller/PhabricatorDirectoryMainController.php | 9 +++++---- .../phid/handle/PhabricatorObjectHandleData.php | 9 ++++----- .../specification/ReleephDiffChurnFieldSpecification.php | 1 + .../PhabricatorRepositoryCommitMessageParserWorker.php | 8 ++++---- 10 files changed, 25 insertions(+), 18 deletions(-) diff --git a/src/applications/differential/application/PhabricatorApplicationDifferential.php b/src/applications/differential/application/PhabricatorApplicationDifferential.php index 771567a18c..366e28db4f 100644 --- a/src/applications/differential/application/PhabricatorApplicationDifferential.php +++ b/src/applications/differential/application/PhabricatorApplicationDifferential.php @@ -81,6 +81,7 @@ final class PhabricatorApplicationDifferential extends PhabricatorApplication { public function loadStatus(PhabricatorUser $user) { $revisions = id(new DifferentialRevisionQuery()) + ->setViewer($user) ->withResponsibleUsers(array($user->getPHID())) ->withStatus(DifferentialRevisionQuery::STATUS_OPEN) ->needRelationships(true) diff --git a/src/applications/differential/conduit/ConduitAPI_differential_query_Method.php b/src/applications/differential/conduit/ConduitAPI_differential_query_Method.php index 5bef573d75..4a3c819120 100644 --- a/src/applications/differential/conduit/ConduitAPI_differential_query_Method.php +++ b/src/applications/differential/conduit/ConduitAPI_differential_query_Method.php @@ -75,7 +75,9 @@ final class ConduitAPI_differential_query_Method $branches = $request->getValue('branches'); $arc_projects = $request->getValue('arcanistProjects'); - $query = new DifferentialRevisionQuery(); + $query = id(new DifferentialRevisionQuery()) + ->setViewer($request->getUser()); + if ($authors) { $query->withAuthors($authors); } diff --git a/src/applications/differential/controller/DifferentialRevisionListController.php b/src/applications/differential/controller/DifferentialRevisionListController.php index 6434614af9..bb8ef64cf8 100644 --- a/src/applications/differential/controller/DifferentialRevisionListController.php +++ b/src/applications/differential/controller/DifferentialRevisionListController.php @@ -237,9 +237,9 @@ final class DifferentialRevisionListController extends DifferentialController { private function buildQuery($filter, array $params) { $user_phids = $params['view_users']; - $query = new DifferentialRevisionQuery(); - - $query->needRelationships(true); + $query = id(new DifferentialRevisionQuery()) + ->setViewer($this->getRequest()->getUser()) + ->needRelationships(true); switch ($filter) { case 'active': diff --git a/src/applications/differential/controller/DifferentialRevisionViewController.php b/src/applications/differential/controller/DifferentialRevisionViewController.php index 9190783440..6d8ebaf7db 100644 --- a/src/applications/differential/controller/DifferentialRevisionViewController.php +++ b/src/applications/differential/controller/DifferentialRevisionViewController.php @@ -803,6 +803,7 @@ final class DifferentialRevisionViewController extends DifferentialController { } $query = id(new DifferentialRevisionQuery()) + ->setViewer($this->getRequest()->getUser()) ->withStatus(DifferentialRevisionQuery::STATUS_OPEN) ->setOrder(DifferentialRevisionQuery::ORDER_PATH_MODIFIED) ->setLimit(10) diff --git a/src/applications/differential/view/DifferentialRevisionListView.php b/src/applications/differential/view/DifferentialRevisionListView.php index a46ac0ffc6..a7fa970bee 100644 --- a/src/applications/differential/view/DifferentialRevisionListView.php +++ b/src/applications/differential/view/DifferentialRevisionListView.php @@ -61,6 +61,7 @@ final class DifferentialRevisionListView extends AphrontView { ->execute(); $this->drafts = id(new DifferentialRevisionQuery()) + ->setViewer($user) ->withIDs(mpull($this->revisions, 'getID')) ->withDraftRepliesByAuthors(array($user->getPHID())) ->execute(); diff --git a/src/applications/diffusion/controller/DiffusionController.php b/src/applications/diffusion/controller/DiffusionController.php index 8f079ba348..9e932fc490 100644 --- a/src/applications/diffusion/controller/DiffusionController.php +++ b/src/applications/diffusion/controller/DiffusionController.php @@ -111,6 +111,7 @@ abstract class DiffusionController extends PhabricatorController { } $revisions = id(new DifferentialRevisionQuery()) + ->setViewer($user) ->withPath($repository->getID(), $path_id) ->withStatus(DifferentialRevisionQuery::STATUS_OPEN) ->setOrder(DifferentialRevisionQuery::ORDER_PATH_MODIFIED) @@ -125,7 +126,7 @@ abstract class DiffusionController extends PhabricatorController { $view = id(new DifferentialRevisionListView()) ->setRevisions($revisions) ->setFields(DifferentialRevisionListView::getDefaultFields($user)) - ->setUser($this->getRequest()->getUser()) + ->setUser($user) ->loadAssets(); $phids = $view->getRequiredHandlePHIDs(); diff --git a/src/applications/directory/controller/PhabricatorDirectoryMainController.php b/src/applications/directory/controller/PhabricatorDirectoryMainController.php index a19188763f..3c136c87cb 100644 --- a/src/applications/directory/controller/PhabricatorDirectoryMainController.php +++ b/src/applications/directory/controller/PhabricatorDirectoryMainController.php @@ -183,10 +183,11 @@ final class PhabricatorDirectoryMainController $user = $this->getRequest()->getUser(); $user_phid = $user->getPHID(); - $revision_query = new DifferentialRevisionQuery(); - $revision_query->withStatus(DifferentialRevisionQuery::STATUS_OPEN); - $revision_query->withResponsibleUsers(array($user_phid)); - $revision_query->needRelationships(true); + $revision_query = id(new DifferentialRevisionQuery()) + ->setViewer($user) + ->withStatus(DifferentialRevisionQuery::STATUS_OPEN) + ->withResponsibleUsers(array($user_phid)) + ->needRelationships(true); // NOTE: We need to unlimit this query to hit the responsible user // fast-path. diff --git a/src/applications/phid/handle/PhabricatorObjectHandleData.php b/src/applications/phid/handle/PhabricatorObjectHandleData.php index 4e9720ae25..37293ef54f 100644 --- a/src/applications/phid/handle/PhabricatorObjectHandleData.php +++ b/src/applications/phid/handle/PhabricatorObjectHandleData.php @@ -108,11 +108,10 @@ final class PhabricatorObjectHandleData { return mpull($lists, null, 'getPHID'); case PhabricatorPHIDConstants::PHID_TYPE_DREV: - // TODO: Update this to DifferentialRevisionQuery - $revision_dao = new DifferentialRevision(); - $revisions = $revision_dao->loadAllWhere( - 'phid IN (%Ls)', - $phids); + $revisions = id(new DifferentialRevisionQuery()) + ->setViewer($this->viewer) + ->withPHIDs($phids) + ->execute(); return mpull($revisions, null, 'getPHID'); case PhabricatorPHIDConstants::PHID_TYPE_WIKI: diff --git a/src/applications/releeph/field/specification/ReleephDiffChurnFieldSpecification.php b/src/applications/releeph/field/specification/ReleephDiffChurnFieldSpecification.php index cf5a2b91f4..fa191c797c 100644 --- a/src/applications/releeph/field/specification/ReleephDiffChurnFieldSpecification.php +++ b/src/applications/releeph/field/specification/ReleephDiffChurnFieldSpecification.php @@ -20,6 +20,7 @@ final class ReleephDiffChurnFieldSpecification $diff_rev = $this->getReleephRequest()->loadDifferentialRevision(); $comments = id(new DifferentialRevisionQuery()) + ->setViewer($this->getUser()) ->withRevisionIDs(array($diff_rev->getID())) ->excute(); diff --git a/src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php b/src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php index b8faffbaf6..a910695d1c 100644 --- a/src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php +++ b/src/applications/repository/worker/commitmessageparser/PhabricatorRepositoryCommitMessageParserWorker.php @@ -100,10 +100,10 @@ abstract class PhabricatorRepositoryCommitMessageParserWorker $this->repository, $this->commit); if ($hashes) { - - $query = new DifferentialRevisionQuery(); - $query->withCommitHashes($hashes); - $revisions = $query->execute(); + $revisions = id(new DifferentialRevisionQuery()) + ->setViewer(PhabricatorUser::getOmnipotentUser()) + ->withCommitHashes($hashes) + ->execute(); if (!empty($revisions)) { $revision = $this->identifyBestRevision($revisions); -- 2.51.2