1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-28 17:52:43 +01:00
phorge-phorge/src/applications/herald/adapter/HeraldObjectAdapter.php

50 lines
1.4 KiB
PHP
Raw Normal View History

2011-03-22 21:22:40 +01:00
<?php
2011-03-24 21:49:21 +01:00
abstract class HeraldObjectAdapter {
2011-03-22 21:22:40 +01:00
2011-03-24 21:49:21 +01:00
abstract public function getPHID();
abstract public function getHeraldName();
abstract public function getHeraldTypeName();
abstract public function getHeraldField($field_name);
abstract public function applyHeraldEffects(array $effects);
2011-03-22 21:22:40 +01:00
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.');
}
2011-03-22 21:22:40 +01:00
}