public static function loadPolicies(PhabricatorUser $viewer, PhabricatorPolicyInterface $object)
 {
     $results = array();
     $map = array();
     foreach ($object->getCapabilities() as $capability) {
         $map[$capability] = $object->getPolicy($capability);
     }
     $policies = id(new PhabricatorPolicyQuery())->setViewer($viewer)->withPHIDs($map)->execute();
     foreach ($map as $capability => $phid) {
         $results[$capability] = $policies[$phid];
     }
     return $results;
 }
Пример #2
0
 public static function renderPolicyDescriptions(PhabricatorUser $viewer, PhabricatorPolicyInterface $object)
 {
     $results = array();
     $policies = null;
     $global = self::getGlobalPolicies();
     $capabilities = $object->getCapabilities();
     foreach ($capabilities as $capability) {
         $policy = $object->getPolicy($capability);
         if (!$policy) {
             continue;
         }
         if (isset($global[$policy])) {
             $results[$capability] = $global[$policy]->renderDescription();
             continue;
         }
         if ($policies === null) {
             // This slightly overfetches data, but it shouldn't generally
             // be a problem.
             $policies = id(new PhabricatorPolicyQuery())->setViewer($viewer)->setObject($object)->execute();
         }
         $results[$capability] = $policies[$policy]->renderDescription();
     }
     return $results;
 }