Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/phabricator
Path: blob/master/src/applications/people/controller/PhabricatorPeopleProfileEditController.php
12262 views
1
<?php
2
3
final 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
}
108
109