3 final class DrydockObjectAuthorizationView
extends AphrontView
{
6 private $blueprintPHIDs;
8 public function setObjectPHID($object_phid) {
9 $this->objectPHID
= $object_phid;
13 public function getObjectPHID() {
14 return $this->objectPHID
;
17 public function setBlueprintPHIDs(array $blueprint_phids) {
18 $this->blueprintPHIDs
= $blueprint_phids;
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)
44 $authorizations = mpull($authorizations, null, 'getBlueprintPHID');
47 $authorizations = array();
52 foreach ($blueprint_phids as $phid) {
53 $authorization = idx($authorizations, $phid);
54 if (!$authorization) {
58 $handle = $handles[$phid];
60 $item = id(new PHUIStatusItemView())
61 ->setTarget($handle->renderLink());
63 $state = $authorization->getBlueprintAuthorizationState();
65 DrydockAuthorization
::getBlueprintStateIcon($state),
67 DrydockAuthorization
::getBlueprintStateName($state));
70 case DrydockAuthorization
::BLUEPRINTAUTH_REQUESTED
:
71 case DrydockAuthorization
::BLUEPRINTAUTH_DECLINED
:
72 $warnings[] = $authorization;
79 $status = new PHUIStatusListView();
83 id(new PHUIStatusItemView())
84 ->setIcon('fa-exclamation-triangle', 'pink')
87 'WARNING: There are %s unapproved authorization(s)!',
88 new PhutilNumber(count($warnings)))));
91 foreach ($items as $item) {
92 $status->addItem($item);