[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/subscriptions/query/ -> PhabricatorSubscribersQuery.php (source)

   1  <?php
   2  
   3  final class PhabricatorSubscribersQuery extends PhabricatorQuery {
   4  
   5    private $objectPHIDs;
   6    private $subscriberPHIDs;
   7  
   8    public static function loadSubscribersForPHID($phid) {
   9      if (!$phid) {
  10        return array();
  11      }
  12  
  13      $subscribers = id(new PhabricatorSubscribersQuery())
  14        ->withObjectPHIDs(array($phid))
  15        ->execute();
  16      return $subscribers[$phid];
  17    }
  18  
  19    public function withObjectPHIDs(array $object_phids) {
  20      $this->objectPHIDs = $object_phids;
  21      return $this;
  22    }
  23  
  24    public function withSubscriberPHIDs(array $subscriber_phids) {
  25      $this->subscriberPHIDs = $subscriber_phids;
  26      return $this;
  27    }
  28  
  29    public function execute() {
  30      $query = new PhabricatorEdgeQuery();
  31  
  32      $edge_type = PhabricatorEdgeConfig::TYPE_OBJECT_HAS_SUBSCRIBER;
  33  
  34      $query->withSourcePHIDs($this->objectPHIDs);
  35      $query->withEdgeTypes(array($edge_type));
  36  
  37      if ($this->subscriberPHIDs) {
  38        $query->withDestinationPHIDs($this->subscriberPHIDs);
  39      }
  40  
  41      $edges = $query->execute();
  42  
  43      $results = array_fill_keys($this->objectPHIDs, array());
  44      foreach ($edges as $src => $edge_types) {
  45        foreach ($edge_types[$edge_type] as $dst => $data) {
  46          $results[$src][] = $dst;
  47        }
  48      }
  49  
  50      return $results;
  51    }
  52  }


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