@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at recaptime-dev/main 107 lines 3.0 kB view raw
1<?php 2 3final class PhabricatorPeopleProfileEditController 4 extends PhabricatorPeopleProfileController { 5 6 public function handleRequest(AphrontRequest $request) { 7 $viewer = $this->getViewer(); 8 $id = $request->getURIData('id'); 9 10 $user = id(new PhabricatorPeopleQuery()) 11 ->setViewer($viewer) 12 ->withIDs(array($id)) 13 ->needProfileImage(true) 14 ->requireCapabilities( 15 array( 16 PhabricatorPolicyCapability::CAN_VIEW, 17 PhabricatorPolicyCapability::CAN_EDIT, 18 )) 19 ->executeOne(); 20 if (!$user) { 21 return new Aphront404Response(); 22 } 23 24 $this->setUser($user); 25 26 $done_uri = $this->getApplicationURI("manage/{$id}/"); 27 28 $field_list = PhabricatorCustomField::getObjectFields( 29 $user, 30 PhabricatorCustomField::ROLE_EDIT); 31 $field_list 32 ->setViewer($viewer) 33 ->readFieldsFromStorage($user); 34 35 $validation_exception = null; 36 if ($request->isFormPost()) { 37 $xactions = $field_list->buildFieldTransactionsFromRequest( 38 new PhabricatorUserTransaction(), 39 $request); 40 41 $editor = id(new PhabricatorUserTransactionEditor()) 42 ->setActor($viewer) 43 ->setContentSourceFromRequest($request) 44 ->setContinueOnNoEffect(true); 45 46 try { 47 $editor->applyTransactions($user, $xactions); 48 return id(new AphrontRedirectResponse())->setURI($done_uri); 49 } catch (PhabricatorApplicationTransactionValidationException $ex) { 50 $validation_exception = $ex; 51 } 52 } 53 54 $title = pht('Edit Profile'); 55 56 $form = id(new AphrontFormView()) 57 ->setUser($viewer); 58 59 $field_list->appendFieldsToForm($form); 60 $form 61 ->appendChild( 62 id(new AphrontFormSubmitControl()) 63 ->addCancelButton($done_uri) 64 ->setValue(pht('Save Profile'))); 65 66 $allow_public = PhabricatorEnv::getEnvConfig('policy.allow-public'); 67 $note = null; 68 if ($allow_public) { 69 $note = id(new PHUIInfoView()) 70 ->setSeverity(PHUIInfoView::SEVERITY_WARNING) 71 ->appendChild(pht( 72 'Information on user profiles on this install is publicly '. 73 'visible.')); 74 } 75 76 $form_box = id(new PHUIObjectBoxView()) 77 ->setHeaderText(pht('Profile')) 78 ->setValidationException($validation_exception) 79 ->setBackground(PHUIObjectBoxView::BLUE_PROPERTY) 80 ->setForm($form); 81 82 $crumbs = $this->buildApplicationCrumbs(); 83 $crumbs->addTextCrumb(pht('Edit Profile')); 84 $crumbs->setBorder(true); 85 86 $nav = $this->newNavigation( 87 $user, 88 PhabricatorPeopleProfileMenuEngine::ITEM_MANAGE); 89 90 $header = id(new PHUIHeaderView()) 91 ->setHeader(pht('Edit Profile: %s', $user->getFullName())) 92 ->setHeaderIcon('fa-pencil'); 93 94 $view = id(new PHUITwoColumnView()) 95 ->setHeader($header) 96 ->setFooter(array( 97 $note, 98 $form_box, 99 )); 100 101 return $this->newPage() 102 ->setTitle($title) 103 ->setCrumbs($crumbs) 104 ->setNavigation($nav) 105 ->appendChild($view); 106 } 107}