[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/herald/adapter/ -> HeraldPholioMockAdapter.php (source)

   1  <?php
   2  
   3  final class HeraldPholioMockAdapter extends HeraldAdapter {
   4  
   5    private $mock;
   6    private $ccPHIDs = array();
   7  
   8    public function getAdapterApplicationClass() {
   9      return 'PhabricatorPholioApplication';
  10    }
  11  
  12    public function getAdapterContentDescription() {
  13      return pht('React to mocks being created or updated.');
  14    }
  15  
  16    public function getObject() {
  17      return $this->mock;
  18    }
  19  
  20    public function setMock(PholioMock $mock) {
  21      $this->mock = $mock;
  22      return $this;
  23    }
  24    public function getMock() {
  25      return $this->mock;
  26    }
  27  
  28    private function setCcPHIDs(array $cc_phids) {
  29      $this->ccPHIDs = $cc_phids;
  30      return $this;
  31    }
  32    public function getCcPHIDs() {
  33      return $this->ccPHIDs;
  34    }
  35  
  36    public function getAdapterContentName() {
  37      return pht('Pholio Mocks');
  38    }
  39  
  40    public function supportsRuleType($rule_type) {
  41      switch ($rule_type) {
  42        case HeraldRuleTypeConfig::RULE_TYPE_GLOBAL:
  43        case HeraldRuleTypeConfig::RULE_TYPE_PERSONAL:
  44          return true;
  45        case HeraldRuleTypeConfig::RULE_TYPE_OBJECT:
  46        default:
  47          return false;
  48      }
  49    }
  50  
  51    public function getFields() {
  52      return array_merge(
  53        array(
  54          self::FIELD_TITLE,
  55          self::FIELD_BODY,
  56          self::FIELD_AUTHOR,
  57          self::FIELD_CC,
  58          self::FIELD_PROJECTS,
  59          self::FIELD_IS_NEW_OBJECT,
  60        ),
  61        parent::getFields());
  62    }
  63  
  64    public function getActions($rule_type) {
  65      switch ($rule_type) {
  66        case HeraldRuleTypeConfig::RULE_TYPE_GLOBAL:
  67          return array_merge(
  68            array(
  69              self::ACTION_ADD_CC,
  70              self::ACTION_NOTHING,
  71            ),
  72            parent::getActions($rule_type));
  73        case HeraldRuleTypeConfig::RULE_TYPE_PERSONAL:
  74          return array_merge(
  75            array(
  76              self::ACTION_ADD_CC,
  77              self::ACTION_FLAG,
  78              self::ACTION_NOTHING,
  79            ),
  80            parent::getActions($rule_type));
  81      }
  82    }
  83  
  84    public function getPHID() {
  85      return $this->getMock()->getPHID();
  86    }
  87  
  88    public function getHeraldName() {
  89      return 'M'.$this->getMock()->getID();
  90    }
  91  
  92    public function getHeraldField($field) {
  93      switch ($field) {
  94        case self::FIELD_TITLE:
  95          return $this->getMock()->getName();
  96        case self::FIELD_BODY:
  97          return $this->getMock()->getDescription();
  98        case self::FIELD_AUTHOR:
  99          return $this->getMock()->getAuthorPHID();
 100        case self::FIELD_CC:
 101          return PhabricatorSubscribersQuery::loadSubscribersForPHID(
 102            $this->getMock()->getPHID());
 103        case self::FIELD_PROJECTS:
 104          return PhabricatorEdgeQuery::loadDestinationPHIDs(
 105            $this->getMock()->getPHID(),
 106            PhabricatorProjectObjectHasProjectEdgeType::EDGECONST);
 107      }
 108  
 109      return parent::getHeraldField($field);
 110    }
 111  
 112    public function applyHeraldEffects(array $effects) {
 113      assert_instances_of($effects, 'HeraldEffect');
 114  
 115      $result = array();
 116      foreach ($effects as $effect) {
 117        $action = $effect->getAction();
 118        switch ($action) {
 119          case self::ACTION_NOTHING:
 120            $result[] = new HeraldApplyTranscript(
 121              $effect,
 122              true,
 123              pht('Great success at doing nothing.'));
 124            break;
 125          case self::ACTION_ADD_CC:
 126            foreach ($effect->getTarget() as $phid) {
 127              $this->ccPHIDs[] = $phid;
 128            }
 129            $result[] = new HeraldApplyTranscript(
 130              $effect,
 131              true,
 132              pht('Added address to cc list.'));
 133            break;
 134          case self::ACTION_FLAG:
 135            $result[] = parent::applyFlagEffect(
 136              $effect,
 137              $this->getMock()->getPHID());
 138            break;
 139          default:
 140            $custom_result = parent::handleCustomHeraldEffect($effect);
 141            if ($custom_result === null) {
 142              throw new Exception(pht(
 143                "No rules to handle action '%s'.",
 144                $action));
 145            }
 146  
 147            $result[] = $custom_result;
 148            break;
 149        }
 150      }
 151      return $result;
 152    }
 153  
 154  }


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