[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhrictionCreateConduitAPIMethod extends PhrictionConduitAPIMethod { 4 public function getAPIMethodName() { 5 return 'phriction.create'; 6 } 7 public function getMethodDescription() { 8 return pht('Create a Phriction document.'); 9 } 10 public function defineParamTypes() { 11 return array( 12 'slug' => 'required string', 13 'title' => 'required string', 14 'content' => 'required string', 15 'description' => 'optional string', 16 ); 17 } 18 public function defineReturnType() { 19 return 'nonempty dict'; 20 } 21 public function defineErrorTypes() { 22 return array( 23 ); 24 } 25 protected function execute(ConduitAPIRequest $request) { 26 $slug = $request->getValue('slug'); 27 if (!strlen($slug)) { 28 throw new Exception(pht('No such document.')); 29 } 30 $doc = id(new PhrictionDocumentQuery()) 31 ->setViewer($request->getUser()) 32 ->withSlugs(array(PhabricatorSlug::normalize($slug))) 33 ->requireCapabilities( 34 array( 35 PhabricatorPolicyCapability::CAN_VIEW, 36 PhabricatorPolicyCapability::CAN_EDIT, 37 )) 38 ->executeOne(); 39 if ($doc) { 40 throw new Exception(pht('Document already exists!')); 41 } 42 43 $doc = PhrictionDocument::initializeNewDocument( 44 $request->getUser(), 45 $slug); 46 47 $xactions = array(); 48 $xactions[] = id(new PhrictionTransaction()) 49 ->setTransactionType(PhrictionTransaction::TYPE_TITLE) 50 ->setNewValue($request->getValue('title')); 51 $xactions[] = id(new PhrictionTransaction()) 52 ->setTransactionType(PhrictionTransaction::TYPE_CONTENT) 53 ->setNewValue($request->getValue('content')); 54 55 $editor = id(new PhrictionTransactionEditor()) 56 ->setActor($request->getUser()) 57 ->setContentSourceFromConduitRequest($request) 58 ->setContinueOnNoEffect(true) 59 ->setDescription($request->getValue('description')); 60 61 try { 62 $editor->applyTransactions($doc, $xactions); 63 } catch (PhabricatorApplicationTransactionValidationException $ex) { 64 // TODO - some magical hotness via T5873 65 throw $ex; 66 } 67 68 return $this->buildDocumentInfoDictionary($doc); 69 } 70 }
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 |