Path: blob/master/src/applications/diffusion/controller/DiffusionIdentityViewController.php
12242 views
<?php12final class DiffusionIdentityViewController3extends DiffusionController {45public function handleRequest(AphrontRequest $request) {6$viewer = $request->getViewer();78$id = $request->getURIData('id');9$identity = id(new PhabricatorRepositoryIdentityQuery())10->setViewer($viewer)11->withIDs(array($id))12->executeOne();13if (!$identity) {14return new Aphront404Response();15}1617$title = pht('Identity %d', $identity->getID());1819$curtain = $this->buildCurtain($identity);2021$header = id(new PHUIHeaderView())22->setUser($viewer)23->setHeader($identity->getIdentityShortName())24->setHeaderIcon('fa-globe');2526$crumbs = $this->buildApplicationCrumbs();27$crumbs->addTextCrumb(28pht('Identities'),29$this->getApplicationURI('identity/'));30$crumbs->addTextCrumb($identity->getObjectName());31$crumbs->setBorder(true);3233$timeline = $this->buildTransactionTimeline(34$identity,35new PhabricatorRepositoryIdentityTransactionQuery());36$timeline->setShouldTerminate(true);3738$properties = $this->buildPropertyList($identity);3940$view = id(new PHUITwoColumnView())41->setHeader($header)42->setCurtain($curtain)43->setMainColumn(array(44$properties,45$timeline,46));4748return $this->newPage()49->setTitle($title)50->setCrumbs($crumbs)51->appendChild(52array(53$view,54));55}5657private function buildCurtain(PhabricatorRepositoryIdentity $identity) {58$viewer = $this->getViewer();5960$can_edit = PhabricatorPolicyFilter::hasCapability(61$viewer,62$identity,63PhabricatorPolicyCapability::CAN_EDIT);6465$id = $identity->getID();66$edit_uri = $this->getApplicationURI("identity/edit/{$id}/");6768$curtain = $this->newCurtainView($identity);6970$curtain->addAction(71id(new PhabricatorActionView())72->setIcon('fa-pencil')73->setName(pht('Edit Identity'))74->setHref($edit_uri)75->setWorkflow(!$can_edit)76->setDisabled(!$can_edit));7778return $curtain;79}8081private function buildPropertyList(82PhabricatorRepositoryIdentity $identity) {8384$viewer = $this->getViewer();8586$properties = id(new PHUIPropertyListView())87->setViewer($viewer);8889$properties->addProperty(90pht('Email Address'),91$identity->getEmailAddress());9293$effective_phid = $identity->getCurrentEffectiveUserPHID();94$automatic_phid = $identity->getAutomaticGuessedUserPHID();95$manual_phid = $identity->getManuallySetUserPHID();9697if ($effective_phid) {98$tag = id(new PHUITagView())99->setType(PHUITagView::TYPE_SHADE)100->setColor('green')101->setIcon('fa-check')102->setName('Assigned');103} else {104$tag = id(new PHUITagView())105->setType(PHUITagView::TYPE_SHADE)106->setColor('indigo')107->setIcon('fa-bomb')108->setName('Unassigned');109}110$properties->addProperty(111pht('Effective User'),112$this->buildPropertyValue($effective_phid));113$properties->addProperty(114pht('Automatically Detected User'),115$this->buildPropertyValue($automatic_phid));116$properties->addProperty(117pht('Assigned To'),118$this->buildPropertyValue($manual_phid));119120$header = id(new PHUIHeaderView())121->setHeader(array(pht('Identity Assignments'), $tag));122123return id(new PHUIObjectBoxView())124->setHeader($header)125->setBackground(PHUIObjectBoxView::BLUE_PROPERTY)126->addPropertyList($properties);127}128129private function buildPropertyValue($value) {130$viewer = $this->getViewer();131132if ($value == DiffusionIdentityUnassignedDatasource::FUNCTION_TOKEN) {133return phutil_tag('em', array(), pht('Explicitly Unassigned'));134} else if (!$value) {135return phutil_tag('em', array(), pht('None'));136} else {137return $viewer->renderHandle($value);138}139}140}141142143