Changeset View
Changeset View
Standalone View
Standalone View
src/applications/policy/filter/PhabricatorPolicyFilterSet.php
| Show First 20 Lines • Show All 96 Lines • ▼ Show 20 Lines | foreach ($this->queue as $capability => $user_map) { | ||||
| $this->results[$capability][$user_key][$object_key] = $has_capability; | $this->results[$capability][$user_key][$object_key] = $has_capability; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| $this->queue = array(); | $this->queue = array(); | ||||
| } | } | ||||
| public static function loadHandleViewCapabilities( | |||||
| $viewer, | |||||
| $handles, | |||||
| array $objects) { | |||||
| $capabilities = array( | |||||
| PhabricatorPolicyCapability::CAN_VIEW, | |||||
| ); | |||||
| assert_instances_of($objects, 'PhabricatorPolicyInterface'); | |||||
| if (!$objects) { | |||||
| return; | |||||
| } | |||||
| $viewer_map = array(); | |||||
| foreach ($handles as $handle_key => $handle) { | |||||
| if (!$handle->hasCapabilities()) { | |||||
| continue; | |||||
| } | |||||
| $viewer_map[$handle->getPHID()] = $handle_key; | |||||
| } | |||||
| if (!$viewer_map) { | |||||
| return; | |||||
| } | |||||
| $users = id(new PhabricatorPeopleQuery()) | |||||
| ->setViewer($viewer) | |||||
| ->withPHIDs(array_keys($viewer_map)) | |||||
| ->execute(); | |||||
| $users = mpull($users, null, 'getPHID'); | |||||
| $filter_set = new self(); | |||||
| foreach ($users as $user_phid => $user) { | |||||
| foreach ($objects as $object) { | |||||
| foreach ($capabilities as $capability) { | |||||
| $filter_set->addCapability($user, $object, $capability); | |||||
| } | |||||
| } | |||||
| } | |||||
| foreach ($users as $user_phid => $user) { | |||||
| $handle_key = $viewer_map[$user_phid]; | |||||
| $handle = $handles[$handle_key]; | |||||
| foreach ($objects as $object) { | |||||
| foreach ($capabilities as $capability) { | |||||
| $has_capability = $filter_set->hasCapability( | |||||
| $user, | |||||
| $object, | |||||
| $capability); | |||||
| $handle->attachCapability( | |||||
| $object, | |||||
| $capability, | |||||
| $has_capability); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| } | } | ||||