[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class DifferentialCreateRawDiffConduitAPIMethod 4 extends DifferentialConduitAPIMethod { 5 6 public function getAPIMethodName() { 7 return 'differential.createrawdiff'; 8 } 9 10 public function getMethodDescription() { 11 return pht('Create a new Differential diff from a raw diff source.'); 12 } 13 14 public function defineParamTypes() { 15 return array( 16 'diff' => 'required string', 17 'repositoryPHID' => 'optional string', 18 'viewPolicy' => 'optional string', 19 ); 20 } 21 22 public function defineReturnType() { 23 return 'nonempty dict'; 24 } 25 26 public function defineErrorTypes() { 27 return array( 28 ); 29 } 30 31 protected function execute(ConduitAPIRequest $request) { 32 $viewer = $request->getUser(); 33 $raw_diff = $request->getValue('diff'); 34 35 $repository_phid = $request->getValue('repositoryPHID'); 36 if ($repository_phid) { 37 $repository = id(new PhabricatorRepositoryQuery()) 38 ->setViewer($viewer) 39 ->withPHIDs(array($repository_phid)) 40 ->executeOne(); 41 if (!$repository) { 42 throw new Exception( 43 pht('No such repository "%s"!', $repository_phid)); 44 } 45 } 46 47 $parser = new ArcanistDiffParser(); 48 $changes = $parser->parseDiff($raw_diff); 49 $diff = DifferentialDiff::newFromRawChanges($viewer, $changes); 50 51 $diff_data_dict = array( 52 'creationMethod' => 'web', 53 'authorPHID' => $viewer->getPHID(), 54 'repositoryPHID' => $repository_phid, 55 'lintStatus' => DifferentialLintStatus::LINT_SKIP, 56 'unitStatus' => DifferentialUnitStatus::UNIT_SKIP,); 57 58 $xactions = array(id(new DifferentialTransaction()) 59 ->setTransactionType(DifferentialDiffTransaction::TYPE_DIFF_CREATE) 60 ->setNewValue($diff_data_dict),); 61 62 if ($request->getValue('viewPolicy')) { 63 $xactions[] = id(new DifferentialTransaction()) 64 ->setTransactionType(PhabricatorTransactions::TYPE_VIEW_POLICY) 65 ->setNewValue($request->getValue('viewPolicy')); 66 } 67 68 id(new DifferentialDiffEditor()) 69 ->setActor($viewer) 70 ->setContentSourceFromConduitRequest($request) 71 ->setLookupRepository(false) // respect user choice 72 ->applyTransactions($diff, $xactions); 73 74 return $this->buildDiffInfoDictionary($diff); 75 } 76 77 }
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 |