Path: blob/master/src/applications/auth/controller/contact/PhabricatorAuthContactNumberViewController.php
12262 views
<?php12final class PhabricatorAuthContactNumberViewController3extends PhabricatorAuthContactNumberController {45public function handleRequest(AphrontRequest $request) {6$viewer = $this->getViewer();78$number = id(new PhabricatorAuthContactNumberQuery())9->setViewer($viewer)10->withIDs(array($request->getURIData('id')))11->executeOne();12if (!$number) {13return new Aphront404Response();14}1516$crumbs = $this->buildApplicationCrumbs()17->addTextCrumb($number->getObjectName())18->setBorder(true);1920$header = $this->buildHeaderView($number);21$properties = $this->buildPropertiesView($number);22$curtain = $this->buildCurtain($number);2324$timeline = $this->buildTransactionTimeline(25$number,26new PhabricatorAuthContactNumberTransactionQuery());27$timeline->setShouldTerminate(true);2829$view = id(new PHUITwoColumnView())30->setHeader($header)31->setCurtain($curtain)32->setMainColumn(33array(34$timeline,35))36->addPropertySection(pht('Details'), $properties);3738return $this->newPage()39->setTitle($number->getDisplayName())40->setCrumbs($crumbs)41->setPageObjectPHIDs(42array(43$number->getPHID(),44))45->appendChild($view);46}4748private function buildHeaderView(PhabricatorAuthContactNumber $number) {49$viewer = $this->getViewer();5051$view = id(new PHUIHeaderView())52->setViewer($viewer)53->setHeader($number->getObjectName())54->setPolicyObject($number);5556if ($number->isDisabled()) {57$view->setStatus('fa-ban', 'red', pht('Disabled'));58} else if ($number->getIsPrimary()) {59$view->setStatus('fa-certificate', 'blue', pht('Primary'));60}6162return $view;63}6465private function buildPropertiesView(66PhabricatorAuthContactNumber $number) {67$viewer = $this->getViewer();6869$view = id(new PHUIPropertyListView())70->setViewer($viewer);7172$view->addProperty(73pht('Owner'),74$viewer->renderHandle($number->getObjectPHID()));7576$view->addProperty(pht('Contact Number'), $number->getDisplayName());7778return $view;79}8081private function buildCurtain(PhabricatorAuthContactNumber $number) {82$viewer = $this->getViewer();83$id = $number->getID();8485$can_edit = PhabricatorPolicyFilter::hasCapability(86$viewer,87$number,88PhabricatorPolicyCapability::CAN_EDIT);8990$curtain = $this->newCurtainView($number);9192$curtain->addAction(93id(new PhabricatorActionView())94->setName(pht('Edit Contact Number'))95->setIcon('fa-pencil')96->setHref($this->getApplicationURI("contact/edit/{$id}/"))97->setDisabled(!$can_edit)98->setWorkflow(!$can_edit));99100$curtain->addAction(101id(new PhabricatorActionView())102->setName(pht('Send Test Message'))103->setIcon('fa-envelope-o')104->setHref($this->getApplicationURI("contact/test/{$id}/"))105->setDisabled(!$can_edit)106->setWorkflow(true));107108if ($number->isDisabled()) {109$disable_uri = $this->getApplicationURI("contact/enable/{$id}/");110$disable_name = pht('Enable Contact Number');111$disable_icon = 'fa-check';112$can_primary = false;113} else {114$disable_uri = $this->getApplicationURI("contact/disable/{$id}/");115$disable_name = pht('Disable Contact Number');116$disable_icon = 'fa-ban';117$can_primary = !$number->getIsPrimary();118}119120$curtain->addAction(121id(new PhabricatorActionView())122->setName(pht('Make Primary Number'))123->setIcon('fa-certificate')124->setHref($this->getApplicationURI("contact/primary/{$id}/"))125->setDisabled(!$can_primary)126->setWorkflow(true));127128$curtain->addAction(129id(new PhabricatorActionView())130->setName($disable_name)131->setIcon($disable_icon)132->setHref($disable_uri)133->setWorkflow(true));134135return $curtain;136}137138}139140141