Files
phabricator/src/applications/phid/conduit/ConduitAPI_phid_query_Method.php
epriestley 0a069cb55a Require a viewer to load handles
Summary:
Unmuck almost all of the we-sort-of-have-viewers-some-of-the-time mess.

There are a few notable cases here:

  - I used Omnipotent users when indexing objects for search. I think this is correct; we do policy filtering when showing results.
  - I cheated in a bad way in the Remarkup object rule, but fixing this requires fixing all the PhabricatorRemarkupEngine callsites (there are 85). I'll do that in the next diff.
  - I cheated in a few random places, like when sending mail about package edits. These aren't a big deal.

Test Plan:
  - Grepped for all PhabricatorObjectHandleData references.
  - Gave them viewers.

Reviewers: vrana

Reviewed By: vrana

CC: aran, edward

Maniphest Tasks: T603

Differential Revision: https://secure.phabricator.com/D5151
2013-02-28 17:15:09 -08:00

46 lines
920 B
PHP

<?php
/**
* @group conduit
*/
final class ConduitAPI_phid_query_Method
extends ConduitAPI_phid_Method {
public function getMethodDescription() {
return "Retrieve information about arbitrary PHIDs.";
}
public function defineParamTypes() {
return array(
'phids' => 'required list<phid>',
);
}
public function defineReturnType() {
return 'nonempty dict<string, wild>';
}
public function defineErrorTypes() {
return array();
}
protected function execute(ConduitAPIRequest $request) {
$phids = $request->getValue('phids');
$handles = id(new PhabricatorObjectHandleData($phids))
->setViewer($request->getUser())
->loadHandles();
$result = array();
foreach ($handles as $phid => $handle) {
if ($handle->isComplete()) {
$result[$phid] = $this->buildHandleInformationDictionary($handle);
}
}
return $result;
}
}