Path: blob/master/src/applications/diffusion/conduit/DiffusionRefsQueryConduitAPIMethod.php
12242 views
<?php12final class DiffusionRefsQueryConduitAPIMethod3extends DiffusionQueryConduitAPIMethod {45public function getAPIMethodName() {6return 'diffusion.refsquery';7}89public function getMethodDescription() {10return pht(11'Query a git repository for ref information at a specific commit.');12}1314protected function defineReturnType() {15return 'array';16}1718protected function defineCustomParamTypes() {19return array(20'commit' => 'required string',21);22}2324protected function getGitResult(ConduitAPIRequest $request) {25$drequest = $this->getDiffusionRequest();26$repository = $drequest->getRepository();27$commit = $request->getValue('commit');2829list($stdout) = $repository->execxLocalCommand(30'log -n 1 %s %s --',31'--format=%d',32gitsprintf('%s', $commit));3334// %d, gives a weird output format35// similar to (remote/one, remote/two, remote/three)36$refs = trim($stdout, "() \n");37if (!$refs) {38return array();39}40$refs = explode(',', $refs);41$refs = array_map('trim', $refs);4243$ref_links = array();44foreach ($refs as $ref) {45$ref_links[] = array(46'ref' => $ref,47'href' => $drequest->generateURI(48array(49'action' => 'browse',50'branch' => $ref,51)),52);53}5455return $ref_links;56}5758}596061