From 52d563f8b8cf2bb7734a69b47a330d198961ddd8 Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 10 Jan 2017 13:43:26 -0800 Subject: [PATCH] Make differential.querydiffs more liberal about arguments Summary: Fixes T12092. D17164 made `DiffQuery` more strict about arguments using modern conventions, but `differential.querydiffs` uses bizarre ancient conventions. Give it more modern conventions instead. Test Plan: Made a `querydiffs` call with only revision IDs. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12092 Differential Revision: https://secure.phabricator.com/D17172 --- ...DifferentialQueryDiffsConduitAPIMethod.php | 27 +++++++++++++------ 1 file changed, 19 insertions(+), 8 deletions(-) diff --git a/src/applications/differential/conduit/DifferentialQueryDiffsConduitAPIMethod.php b/src/applications/differential/conduit/DifferentialQueryDiffsConduitAPIMethod.php index 836181d1df..7ff8600f81 100644 --- a/src/applications/differential/conduit/DifferentialQueryDiffsConduitAPIMethod.php +++ b/src/applications/differential/conduit/DifferentialQueryDiffsConduitAPIMethod.php @@ -26,16 +26,27 @@ final class DifferentialQueryDiffsConduitAPIMethod $ids = $request->getValue('ids', array()); $revision_ids = $request->getValue('revisionIDs', array()); - $diffs = array(); - if ($ids || $revision_ids) { - $diffs = id(new DifferentialDiffQuery()) - ->setViewer($request->getUser()) - ->withIDs($ids) - ->withRevisionIDs($revision_ids) - ->needChangesets(true) - ->execute(); + if (!$ids && !$revision_ids) { + // This method just returns nothing if you pass no constraints because + // pagination hadn't been invented yet in 2008 when this method was + // written. + return array(); } + $query = id(new DifferentialDiffQuery()) + ->setViewer($request->getUser()) + ->needChangesets(true); + + if ($ids) { + $query->withIDs($ids); + } + + if ($revision_ids) { + $query->withRevisionIDs($revision_ids); + } + + $diffs = $query->execute(); + return mpull($diffs, 'getDiffDict', 'getID'); }