[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhragmentQueryFragmentsConduitAPIMethod 4 extends PhragmentConduitAPIMethod { 5 6 public function getAPIMethodName() { 7 return 'phragment.queryfragments'; 8 } 9 10 public function getMethodStatus() { 11 return self::METHOD_STATUS_UNSTABLE; 12 } 13 14 public function getMethodDescription() { 15 return pht('Query fragments based on their paths.'); 16 } 17 18 public function defineParamTypes() { 19 return array( 20 'paths' => 'required list<string>', 21 ); 22 } 23 24 public function defineReturnType() { 25 return 'nonempty dict'; 26 } 27 28 public function defineErrorTypes() { 29 return array( 30 'ERR_BAD_FRAGMENT' => 'No such fragment exists', 31 ); 32 } 33 34 protected function execute(ConduitAPIRequest $request) { 35 $paths = $request->getValue('paths'); 36 37 $fragments = id(new PhragmentFragmentQuery()) 38 ->setViewer($request->getUser()) 39 ->withPaths($paths) 40 ->execute(); 41 $fragments = mpull($fragments, null, 'getPath'); 42 foreach ($paths as $path) { 43 if (!array_key_exists($path, $fragments)) { 44 throw new ConduitException('ERR_BAD_FRAGMENT'); 45 } 46 } 47 48 $results = array(); 49 foreach ($fragments as $path => $fragment) { 50 $mappings = $fragment->getFragmentMappings( 51 $request->getUser(), 52 $fragment->getPath()); 53 54 $file_phids = mpull(mpull($mappings, 'getLatestVersion'), 'getFilePHID'); 55 $files = id(new PhabricatorFileQuery()) 56 ->setViewer($request->getUser()) 57 ->withPHIDs($file_phids) 58 ->execute(); 59 $files = mpull($files, null, 'getPHID'); 60 61 $result = array(); 62 foreach ($mappings as $cpath => $child) { 63 $file_phid = $child->getLatestVersion()->getFilePHID(); 64 if (!isset($files[$file_phid])) { 65 // Skip any files we don't have permission to access. 66 continue; 67 } 68 69 $file = $files[$file_phid]; 70 $cpath = substr($child->getPath(), strlen($fragment->getPath()) + 1); 71 $result[] = array( 72 'phid' => $child->getPHID(), 73 'phidVersion' => $child->getLatestVersionPHID(), 74 'path' => $cpath, 75 'hash' => $file->getContentHash(), 76 'version' => $child->getLatestVersion()->getSequence(), 77 'uri' => $file->getViewURI(), 78 ); 79 } 80 $results[$path] = $result; 81 } 82 return $results; 83 } 84 85 }
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 |