[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhortuneAccountEditController extends PhortuneController { 4 5 private $id; 6 7 public function willProcessRequest(array $data) { 8 $this->id = idx($data, 'id'); 9 } 10 11 public function processRequest() { 12 $request = $this->getRequest(); 13 $viewer = $request->getUser(); 14 15 if ($this->id) { 16 $account = id(new PhortuneAccountQuery()) 17 ->setViewer($viewer) 18 ->withIDs(array($this->id)) 19 ->requireCapabilities( 20 array( 21 PhabricatorPolicyCapability::CAN_VIEW, 22 PhabricatorPolicyCapability::CAN_EDIT, 23 )) 24 ->executeOne(); 25 if (!$account) { 26 return new Aphront404Response(); 27 } 28 $is_new = false; 29 } else { 30 $account = PhortuneAccount::initializeNewAccount($viewer); 31 $account->attachMemberPHIDs(array($viewer->getPHID())); 32 $is_new = true; 33 } 34 35 $v_name = $account->getName(); 36 $e_name = true; 37 38 $v_members = $account->getMemberPHIDs(); 39 $e_members = null; 40 41 $validation_exception = null; 42 43 if ($request->isFormPost()) { 44 $v_name = $request->getStr('name'); 45 $v_members = $request->getArr('memberPHIDs'); 46 47 $type_name = PhortuneAccountTransaction::TYPE_NAME; 48 $type_edge = PhabricatorTransactions::TYPE_EDGE; 49 50 $xactions = array(); 51 $xactions[] = id(new PhortuneAccountTransaction()) 52 ->setTransactionType($type_name) 53 ->setNewValue($v_name); 54 55 $xactions[] = id(new PhortuneAccountTransaction()) 56 ->setTransactionType($type_edge) 57 ->setMetadataValue( 58 'edge:type', 59 PhortuneAccountHasMemberEdgeType::EDGECONST) 60 ->setNewValue( 61 array( 62 '=' => array_fuse($v_members), 63 )); 64 65 $editor = id(new PhortuneAccountEditor()) 66 ->setActor($viewer) 67 ->setContentSourceFromRequest($request) 68 ->setContinueOnNoEffect(true); 69 70 try { 71 $editor->applyTransactions($account, $xactions); 72 73 $account_uri = $this->getApplicationURI($account->getID().'/'); 74 return id(new AphrontRedirectResponse())->setURI($account_uri); 75 } catch (PhabricatorApplicationTransactionValidationException $ex) { 76 $validation_exception = $ex; 77 $e_name = $ex->getShortMessage($type_name); 78 $e_members = $ex->getShortMessage($type_edge); 79 } 80 } 81 82 $crumbs = $this->buildApplicationCrumbs(); 83 84 if ($is_new) { 85 $cancel_uri = $this->getApplicationURI('account/'); 86 $crumbs->addTextCrumb(pht('Accounts'), $cancel_uri); 87 $crumbs->addTextCrumb(pht('Create Account')); 88 89 $title = pht('Create Payment Account'); 90 $submit_button = pht('Create Account'); 91 } else { 92 $cancel_uri = $this->getApplicationURI($account->getID().'/'); 93 $crumbs->addTextCrumb($account->getName(), $cancel_uri); 94 $crumbs->addTextCrumb(pht('Edit')); 95 96 $title = pht('Edit %s', $account->getName()); 97 $submit_button = pht('Save Changes'); 98 } 99 100 $member_handles = $this->loadViewerHandles($v_members); 101 102 $form = id(new AphrontFormView()) 103 ->setUser($viewer) 104 ->appendChild( 105 id(new AphrontFormTextControl()) 106 ->setName('name') 107 ->setLabel(pht('Name')) 108 ->setValue($v_name) 109 ->setError($e_name)) 110 ->appendChild( 111 id(new AphrontFormTokenizerControl()) 112 ->setDatasource(new PhabricatorPeopleDatasource()) 113 ->setLabel(pht('Members')) 114 ->setName('memberPHIDs') 115 ->setValue($member_handles) 116 ->setError($e_members)) 117 ->appendChild( 118 id(new AphrontFormSubmitControl()) 119 ->setValue($submit_button) 120 ->addCancelButton($cancel_uri)); 121 122 $box = id(new PHUIObjectBoxView()) 123 ->setHeaderText($title) 124 ->setValidationException($validation_exception) 125 ->appendChild($form); 126 127 return $this->buildApplicationPage( 128 array( 129 $crumbs, 130 $box, 131 ), 132 array( 133 'title' => $title, 134 )); 135 } 136 137 }
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 |