Path: blob/master/src/applications/drydock/view/DrydockObjectAuthorizationView.php
12256 views
<?php12final class DrydockObjectAuthorizationView extends AphrontView {34private $objectPHID;5private $blueprintPHIDs;67public function setObjectPHID($object_phid) {8$this->objectPHID = $object_phid;9return $this;10}1112public function getObjectPHID() {13return $this->objectPHID;14}1516public function setBlueprintPHIDs(array $blueprint_phids) {17$this->blueprintPHIDs = $blueprint_phids;18return $this;19}2021public function getBlueprintPHIDs() {22return $this->blueprintPHIDs;23}2425public function render() {26$viewer = $this->getUser();27$blueprint_phids = $this->getBlueprintPHIDs();28$object_phid = $this->getObjectPHID();2930// NOTE: We're intentionally letting you see the authorization state on31// blueprints you can't see because this has a tremendous potential to32// be extremely confusing otherwise. You still can't see the blueprints33// themselves, but you can know if the object is authorized on something.3435if ($blueprint_phids) {36$handles = $viewer->loadHandles($blueprint_phids);3738$authorizations = id(new DrydockAuthorizationQuery())39->setViewer(PhabricatorUser::getOmnipotentUser())40->withObjectPHIDs(array($object_phid))41->withBlueprintPHIDs($blueprint_phids)42->execute();43$authorizations = mpull($authorizations, null, 'getBlueprintPHID');44} else {45$handles = array();46$authorizations = array();47}4849$warnings = array();50$items = array();51foreach ($blueprint_phids as $phid) {52$authorization = idx($authorizations, $phid);53if (!$authorization) {54continue;55}5657$handle = $handles[$phid];5859$item = id(new PHUIStatusItemView())60->setTarget($handle->renderLink());6162$state = $authorization->getBlueprintAuthorizationState();63$item->setIcon(64DrydockAuthorization::getBlueprintStateIcon($state),65null,66DrydockAuthorization::getBlueprintStateName($state));6768switch ($state) {69case DrydockAuthorization::BLUEPRINTAUTH_REQUESTED:70case DrydockAuthorization::BLUEPRINTAUTH_DECLINED:71$warnings[] = $authorization;72break;73}7475$items[] = $item;76}7778$status = new PHUIStatusListView();7980if ($warnings) {81$status->addItem(82id(new PHUIStatusItemView())83->setIcon('fa-exclamation-triangle', 'pink')84->setTarget(85pht(86'WARNING: There are %s unapproved authorization(s)!',87new PhutilNumber(count($warnings)))));88}8990foreach ($items as $item) {91$status->addItem($item);92}9394return $status;95}9697}9899100