Path: blob/master/src/applications/people/controller/PhabricatorPeopleProfileManageController.php
12262 views
<?php12final class PhabricatorPeopleProfileManageController3extends PhabricatorPeopleProfileController {45public function shouldAllowPublic() {6return true;7}89public function handleRequest(AphrontRequest $request) {10$viewer = $this->getViewer();11$id = $request->getURIData('id');1213$user = id(new PhabricatorPeopleQuery())14->setViewer($viewer)15->withIDs(array($id))16->needProfile(true)17->needProfileImage(true)18->needAvailability(true)19->executeOne();20if (!$user) {21return new Aphront404Response();22}2324$this->setUser($user);25$header = $this->buildProfileHeader();2627$curtain = $this->buildCurtain($user);28$properties = $this->buildPropertyView($user);29$name = $user->getUsername();3031$nav = $this->newNavigation(32$user,33PhabricatorPeopleProfileMenuEngine::ITEM_MANAGE);3435$crumbs = $this->buildApplicationCrumbs();36$crumbs->addTextCrumb(pht('Manage'));37$crumbs->setBorder(true);3839$timeline = $this->buildTransactionTimeline(40$user,41new PhabricatorPeopleTransactionQuery());42$timeline->setShouldTerminate(true);4344$manage = id(new PHUITwoColumnView())45->setHeader($header)46->addClass('project-view-home')47->addClass('project-view-people-home')48->setCurtain($curtain)49->addPropertySection(pht('Details'), $properties)50->setMainColumn($timeline);5152return $this->newPage()53->setTitle(54array(55pht('Manage User'),56$user->getUsername(),57))58->setNavigation($nav)59->setCrumbs($crumbs)60->appendChild($manage);61}6263private function buildPropertyView(PhabricatorUser $user) {6465$viewer = $this->getRequest()->getUser();66$view = id(new PHUIPropertyListView())67->setUser($viewer)68->setObject($user);6970$field_list = PhabricatorCustomField::getObjectFields(71$user,72PhabricatorCustomField::ROLE_VIEW);73$field_list->appendFieldsToPropertyList($user, $viewer, $view);7475return $view;76}7778private function buildCurtain(PhabricatorUser $user) {79$viewer = $this->getViewer();8081$is_self = ($user->getPHID() === $viewer->getPHID());8283$can_edit = PhabricatorPolicyFilter::hasCapability(84$viewer,85$user,86PhabricatorPolicyCapability::CAN_EDIT);8788$is_admin = $viewer->getIsAdmin();89$can_admin = ($is_admin && !$is_self);9091$has_disable = $this->hasApplicationCapability(92PeopleDisableUsersCapability::CAPABILITY);93$can_disable = ($has_disable && !$is_self);9495$id = $user->getID();9697$welcome_engine = id(new PhabricatorPeopleWelcomeMailEngine())98->setSender($viewer)99->setRecipient($user);100101$can_welcome = $welcome_engine->canSendMail();102$curtain = $this->newCurtainView($user);103104$curtain->addAction(105id(new PhabricatorActionView())106->setIcon('fa-pencil')107->setName(pht('Edit Profile'))108->setHref($this->getApplicationURI('editprofile/'.$id.'/'))109->setDisabled(!$can_edit)110->setWorkflow(!$can_edit));111112$curtain->addAction(113id(new PhabricatorActionView())114->setIcon('fa-picture-o')115->setName(pht('Edit Profile Picture'))116->setHref($this->getApplicationURI('picture/'.$id.'/'))117->setDisabled(!$can_edit)118->setWorkflow(!$can_edit));119120$curtain->addAction(121id(new PhabricatorActionView())122->setIcon('fa-wrench')123->setName(pht('Edit Settings'))124->setDisabled(!$can_edit)125->setWorkflow(!$can_edit)126->setHref('/settings/user/'.$user->getUsername().'/'));127128if ($user->getIsAdmin()) {129$empower_icon = 'fa-arrow-circle-o-down';130$empower_name = pht('Remove Administrator');131} else {132$empower_icon = 'fa-arrow-circle-o-up';133$empower_name = pht('Make Administrator');134}135136$curtain->addAction(137id(new PhabricatorActionView())138->setIcon($empower_icon)139->setName($empower_name)140->setDisabled(!$can_admin)141->setWorkflow(true)142->setHref($this->getApplicationURI('empower/'.$id.'/')));143144$curtain->addAction(145id(new PhabricatorActionView())146->setIcon('fa-tag')147->setName(pht('Change Username'))148->setDisabled(!$is_admin)149->setWorkflow(true)150->setHref($this->getApplicationURI('rename/'.$id.'/')));151152if ($user->getIsDisabled()) {153$disable_icon = 'fa-check-circle-o';154$disable_name = pht('Enable User');155} else {156$disable_icon = 'fa-ban';157$disable_name = pht('Disable User');158}159160$curtain->addAction(161id(new PhabricatorActionView())162->setIcon('fa-envelope')163->setName(pht('Send Welcome Email'))164->setWorkflow(true)165->setDisabled(!$can_welcome)166->setHref($this->getApplicationURI('welcome/'.$id.'/')));167168$curtain->addAction(169id(new PhabricatorActionView())170->setType(PhabricatorActionView::TYPE_DIVIDER));171172if (!$user->getIsApproved()) {173$approve_action = id(new PhabricatorActionView())174->setIcon('fa-thumbs-up')175->setName(pht('Approve User'))176->setWorkflow(true)177->setDisabled(!$is_admin)178->setHref("/people/approve/{$id}/via/profile/");179180if ($is_admin) {181$approve_action->setColor(PhabricatorActionView::GREEN);182}183184$curtain->addAction($approve_action);185}186187$curtain->addAction(188id(new PhabricatorActionView())189->setIcon($disable_icon)190->setName($disable_name)191->setDisabled(!$can_disable)192->setWorkflow(true)193->setHref($this->getApplicationURI('disable/'.$id.'/')));194195$curtain->addAction(196id(new PhabricatorActionView())197->setIcon('fa-times')198->setName(pht('Delete User'))199->setDisabled(!$can_admin)200->setWorkflow(true)201->setHref($this->getApplicationURI('delete/'.$id.'/')));202203$curtain->addAction(204id(new PhabricatorActionView())205->setType(PhabricatorActionView::TYPE_DIVIDER));206207return $curtain;208}209210211}212213214