Correct Aphlict websocket URI construction after PHP8 compatibility changes
[phabricator.git] / src / applications / drydock / view / DrydockObjectAuthorizationView.php
blob25c1d582a306a37bf26cdb53c4d5263fe310c780
1 <?php
3 final class DrydockObjectAuthorizationView extends AphrontView {
5 private $objectPHID;
6 private $blueprintPHIDs;
8 public function setObjectPHID($object_phid) {
9 $this->objectPHID = $object_phid;
10 return $this;
13 public function getObjectPHID() {
14 return $this->objectPHID;
17 public function setBlueprintPHIDs(array $blueprint_phids) {
18 $this->blueprintPHIDs = $blueprint_phids;
19 return $this;
22 public function getBlueprintPHIDs() {
23 return $this->blueprintPHIDs;
26 public function render() {
27 $viewer = $this->getUser();
28 $blueprint_phids = $this->getBlueprintPHIDs();
29 $object_phid = $this->getObjectPHID();
31 // NOTE: We're intentionally letting you see the authorization state on
32 // blueprints you can't see because this has a tremendous potential to
33 // be extremely confusing otherwise. You still can't see the blueprints
34 // themselves, but you can know if the object is authorized on something.
36 if ($blueprint_phids) {
37 $handles = $viewer->loadHandles($blueprint_phids);
39 $authorizations = id(new DrydockAuthorizationQuery())
40 ->setViewer(PhabricatorUser::getOmnipotentUser())
41 ->withObjectPHIDs(array($object_phid))
42 ->withBlueprintPHIDs($blueprint_phids)
43 ->execute();
44 $authorizations = mpull($authorizations, null, 'getBlueprintPHID');
45 } else {
46 $handles = array();
47 $authorizations = array();
50 $warnings = array();
51 $items = array();
52 foreach ($blueprint_phids as $phid) {
53 $authorization = idx($authorizations, $phid);
54 if (!$authorization) {
55 continue;
58 $handle = $handles[$phid];
60 $item = id(new PHUIStatusItemView())
61 ->setTarget($handle->renderLink());
63 $state = $authorization->getBlueprintAuthorizationState();
64 $item->setIcon(
65 DrydockAuthorization::getBlueprintStateIcon($state),
66 null,
67 DrydockAuthorization::getBlueprintStateName($state));
69 switch ($state) {
70 case DrydockAuthorization::BLUEPRINTAUTH_REQUESTED:
71 case DrydockAuthorization::BLUEPRINTAUTH_DECLINED:
72 $warnings[] = $authorization;
73 break;
76 $items[] = $item;
79 $status = new PHUIStatusListView();
81 if ($warnings) {
82 $status->addItem(
83 id(new PHUIStatusItemView())
84 ->setIcon('fa-exclamation-triangle', 'pink')
85 ->setTarget(
86 pht(
87 'WARNING: There are %s unapproved authorization(s)!',
88 new PhutilNumber(count($warnings)))));
91 foreach ($items as $item) {
92 $status->addItem($item);
95 return $status;