[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class AuditQueryConduitAPIMethod extends AuditConduitAPIMethod { 4 5 public function getAPIMethodName() { 6 return 'audit.query'; 7 } 8 9 public function getMethodDescription() { 10 return 'Query audit requests.'; 11 } 12 13 public function defineParamTypes() { 14 $statuses = array( 15 DiffusionCommitQuery::AUDIT_STATUS_ANY, 16 DiffusionCommitQuery::AUDIT_STATUS_OPEN, 17 DiffusionCommitQuery::AUDIT_STATUS_CONCERN, 18 DiffusionCommitQuery::AUDIT_STATUS_ACCEPTED, 19 DiffusionCommitQuery::AUDIT_STATUS_PARTIAL, 20 ); 21 $status_const = $this->formatStringConstants($statuses); 22 23 return array( 24 'auditorPHIDs' => 'optional list<phid>', 25 'commitPHIDs' => 'optional list<phid>', 26 'status' => ('optional '.$status_const. 27 ' (default = "audit-status-any")'), 28 'offset' => 'optional int', 29 'limit' => 'optional int (default = 100)', 30 ); 31 } 32 33 public function defineReturnType() { 34 return 'list<dict>'; 35 } 36 37 public function defineErrorTypes() { 38 return array( 39 ); 40 } 41 42 protected function execute(ConduitAPIRequest $request) { 43 44 $query = id(new DiffusionCommitQuery()) 45 ->setViewer($request->getUser()); 46 47 $auditor_phids = $request->getValue('auditorPHIDs', array()); 48 if ($auditor_phids) { 49 $query->withAuditorPHIDs($auditor_phids); 50 } 51 52 $commit_phids = $request->getValue('commitPHIDs', array()); 53 if ($commit_phids) { 54 $query->withPHIDs($commit_phids); 55 } 56 57 $status = $request->getValue( 58 'status', 59 DiffusionCommitQuery::AUDIT_STATUS_ANY); 60 $query->withAuditStatus($status); 61 62 // NOTE: These affect the number of commits identified, which is sort of 63 // reasonable but means the method may return an arbitrary number of 64 // actual audit requests. 65 $query->setOffset($request->getValue('offset', 0)); 66 $query->setLimit($request->getValue('limit', 100)); 67 68 $commits = $query->execute(); 69 70 $auditor_map = array_fuse($auditor_phids); 71 72 $results = array(); 73 foreach ($commits as $commit) { 74 $requests = $commit->getAudits(); 75 foreach ($requests as $request) { 76 77 // If this audit isn't triggered for one of the requested PHIDs, 78 // skip it. 79 if ($auditor_map && empty($auditor_map[$request->getAuditorPHID()])) { 80 continue; 81 } 82 83 $results[] = array( 84 'id' => $request->getID(), 85 'commitPHID' => $request->getCommitPHID(), 86 'auditorPHID' => $request->getAuditorPHID(), 87 'reasons' => $request->getAuditReasons(), 88 'status' => $request->getAuditStatus(), 89 ); 90 } 91 } 92 93 return $results; 94 } 95 96 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |