[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/policy/rule/ -> PhabricatorPolicyRuleProjects.php (source)

   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  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1