public function __construct(HeraldEffect $effect, $applied, $reason = null) { $this->setAction($effect->getAction()); $this->setTarget($effect->getTarget()); $this->setRuleID($effect->getRuleID()); $this->setEffector($effect->getEffector()); $this->setReason($effect->getReason()); $this->setApplied($applied); $this->setAppliedReason($reason); }
public function applyEffect($object, HeraldEffect $effect) { $phid = $this->getAdapter()->getPHID(); $rule = $effect->getRule(); $author = $rule->getAuthor(); $flag = PhabricatorFlagQuery::loadUserFlag($author, $phid); if ($flag) { $this->logEffect(self::DO_IGNORE, $flag->getColor()); return; } $flag = id(new PhabricatorFlag())->setOwnerPHID($author->getPHID())->setType(phid_get_type($phid))->setObjectPHID($phid)->setReasonPHID($rule->getPHID())->setColor($effect->getTarget())->setNote('')->save(); $this->logEffect(self::DO_FLAG, $flag->getColor()); }
public function applyEffect($object, HeraldEffect $effect) { $status = head($effect->getTarget()); if (!$status) { $this->logEffect(self::DO_STANDARD_EMPTY); return; } $adapter = $this->getAdapter(); $object = $adapter->getObject(); $current = $object->getStatus(); if ($current == $status) { $this->logEffect(self::DO_STANDARD_NO_EFFECT, $status); return; } $xaction = $adapter->newTransaction()->setTransactionType(ManiphestTransaction::TYPE_STATUS)->setNewValue($status); $adapter->queueTransaction($xaction); $this->logEffect(self::DO_STATUS, $status); }
public function applyEffect($object, HeraldEffect $effect) { $priority = head($effect->getTarget()); if (!$priority) { $this->logEffect(self::DO_STANDARD_EMPTY); return; } $adapter = $this->getAdapter(); $object = $adapter->getObject(); $current = $object->getPriority(); if ($current == $priority) { $this->logEffect(self::DO_STANDARD_NO_EFFECT, $priority); return; } $xaction = $adapter->newTransaction()->setTransactionType(ManiphestTransaction::TYPE_PRIORITY)->setNewValue($priority); $adapter->queueTransaction($xaction); $this->logEffect(self::DO_PRIORITY, $priority); }
public static function applyFlagEffect(HeraldEffect $effect, $phid) { $color = $effect->getTarget(); // TODO: Silly that we need to load this again here. $rule = id(new HeraldRule())->load($effect->getRuleID()); $user = id(new PhabricatorUser())->loadOneWhere('phid = %s', $rule->getAuthorPHID()); $flag = PhabricatorFlagQuery::loadUserFlag($user, $phid); if ($flag) { return new HeraldApplyTranscript($effect, false, 'Object already flagged.'); } $handle = PhabricatorObjectHandleData::loadOneHandle($phid); $flag = new PhabricatorFlag(); $flag->setOwnerPHID($user->getPHID()); $flag->setType($handle->getType()); $flag->setObjectPHID($handle->getPHID()); // TOOD: Should really be transcript PHID, but it doesn't exist yet. $flag->setReasonPHID($user->getPHID()); $flag->setColor($color); $flag->setNote('Flagged by Herald Rule "' . $rule->getName() . '".'); $flag->save(); return new HeraldApplyTranscript($effect, true, 'Added flag.'); }
/** * @task apply */ private function applyEmailEffect(HeraldEffect $effect) { foreach ($effect->getTarget() as $phid) { $this->emailPHIDs[$phid] = $phid; // If this is a personal rule, we'll force delivery of a real email. This // effect is stronger than notification preferences, so you get an actual // email even if your preferences are set to "Notify" or "Ignore". $rule = $effect->getRule(); if ($rule->isPersonalRule()) { $this->forcedEmailPHIDs[$phid] = $phid; } } return new HeraldApplyTranscript($effect, true, pht('Added mailable to mail targets.')); }
public function applyEffect($object, HeraldEffect $effect) { return $this->applyReviewers($effect->getTarget(), $is_blocking = true); }
public function applyEffect($object, HeraldEffect $effect) { return $this->applySubscribe($effect->getTarget(), $is_add = false); }
public function applyEffect($object, HeraldEffect $effect) { return $this->applyBuilds($effect->getTarget(), $effect->getRule()); }
public function applyEffect($object, HeraldEffect $effect) { return $this->applyRequire($effect->getTarget()); }
public function applyEffect($object, HeraldEffect $effect) { $rule = $effect->getRule(); return $this->applyAuditors($effect->getTarget(), $rule); }
public function applyEffect($object, HeraldEffect $effect) { return $this->applyProjects($effect->getTarget(), $is_add = true); }
public function applyEffect($object, HeraldEffect $effect) { return $this->applyEmail($effect->getTarget(), $force = false); }
public function applyHeraldEffects(array $effects) { $result = array(); if ($this->explicitCCs) { $effect = new HeraldEffect(); $effect->setAction(HeraldActionConfig::ACTION_ADD_CC); $effect->setTarget(array_keys($this->explicitCCs)); $effect->setReason('CCs provided explicitly by revision author or carried over from a ' . 'previous version of the revision.'); $result[] = new HeraldApplyTranscript($effect, true, 'Added addresses to CC list.'); } $forbidden_ccs = array_fill_keys(nonempty($this->forbiddenCCs, array()), true); foreach ($effects as $effect) { $action = $effect->getAction(); switch ($action) { case HeraldActionConfig::ACTION_NOTHING: $result[] = new HeraldApplyTranscript($effect, true, 'OK, did nothing.'); break; case HeraldActionConfig::ACTION_EMAIL: case HeraldActionConfig::ACTION_ADD_CC: $op = $action == HeraldActionConfig::ACTION_EMAIL ? 'email' : 'CC'; $base_target = $effect->getTarget(); $forbidden = array(); foreach ($base_target as $key => $fbid) { if (isset($forbidden_ccs[$fbid])) { $forbidden[] = $fbid; unset($base_target[$key]); } else { if ($action == HeraldActionConfig::ACTION_EMAIL) { $this->emailPHIDs[$fbid] = true; } else { $this->newCCs[$fbid] = true; } } } if ($forbidden) { $failed = clone $effect; $failed->setTarget($forbidden); if ($base_target) { $effect->setTarget($base_target); $result[] = new HeraldApplyTranscript($effect, true, 'Added these addresses to ' . $op . ' list. ' . 'Others could not be added.'); } $result[] = new HeraldApplyTranscript($failed, false, $op . ' forbidden, these addresses have unsubscribed.'); } else { $result[] = new HeraldApplyTranscript($effect, true, 'Added addresses to ' . $op . ' list.'); } break; case HeraldActionConfig::ACTION_REMOVE_CC: foreach ($effect->getTarget() as $fbid) { $this->remCCs[$fbid] = true; } $result[] = new HeraldApplyTranscript($effect, true, 'Removed addresses from CC list.'); break; default: throw new Exception("No rules to handle action '{$action}'."); } } return $result; }