[ Index ] |
PHP Cross Reference of Phabricator |
[Summary view] [Print] [Text view]
1 <?php 2 3 final class PhabricatorPolicyRuleProjects 4 extends PhabricatorPolicyRule { 5 6 private $memberships = array(); 7 8 public function getRuleDescription() { 9 return pht('members of projects'); 10 } 11 12 public function willApplyRules(PhabricatorUser $viewer, array $values) { 13 $values = array_unique(array_filter(array_mergev($values))); 14 if (!$values) { 15 return; 16 } 17 18 $projects = id(new PhabricatorProjectQuery()) 19 ->setViewer(PhabricatorUser::getOmnipotentUser()) 20 ->withMemberPHIDs(array($viewer->getPHID())) 21 ->withPHIDs($values) 22 ->execute(); 23 foreach ($projects as $project) { 24 $this->memberships[$viewer->getPHID()][$project->getPHID()] = true; 25 } 26 } 27 28 public function applyRule(PhabricatorUser $viewer, $value) { 29 foreach ($value as $project_phid) { 30 if (isset($this->memberships[$viewer->getPHID()][$project_phid])) { 31 return true; 32 } 33 } 34 return false; 35 } 36 37 public function getValueControlType() { 38 return self::CONTROL_TYPE_TOKENIZER; 39 } 40 41 public function getValueControlTemplate() { 42 $projects_source = new PhabricatorProjectDatasource(); 43 44 return array( 45 'markup' => new AphrontTokenizerTemplateView(), 46 'uri' => $projects_source->getDatasourceURI(), 47 'placeholder' => $projects_source->getPlaceholderText(), 48 ); 49 } 50 51 public function getRuleOrder() { 52 return 200; 53 } 54 55 public function getValueForStorage($value) { 56 PhutilTypeSpec::newFromString('list<string>')->check($value); 57 return array_values($value); 58 } 59 60 public function getValueForDisplay(PhabricatorUser $viewer, $value) { 61 $handles = id(new PhabricatorHandleQuery()) 62 ->setViewer($viewer) 63 ->withPHIDs($value) 64 ->execute(); 65 66 return mpull($handles, 'getFullName', 'getPHID'); 67 } 68 69 public function ruleHasEffect($value) { 70 return (bool)$value; 71 } 72 73 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Sun Nov 30 09:20:46 2014 | Cross-referenced by PHPXref 0.7.1 |