1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-20 04:20:55 +01:00

Move property transaction construction to Almanac

Summary: Ref T7627. This centralizes this transaction construction code so the unit tests and Instances can both use it.

Test Plan: See D12116.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T7627

Differential Revision: https://secure.phabricator.com/D12118
This commit is contained in:
epriestley 2015-03-23 09:10:42 -07:00
parent 6eadfe6a6f
commit c7178b7e7b

View file

@ -31,6 +31,40 @@ final class AlmanacProperty
return $this; return $this;
} }
public static function buildTransactions(
AlmanacPropertyInterface $object,
array $properties) {
$template = $object->getApplicationTransactionTemplate();
$attached_properties = $object->getAlmanacProperties();
foreach ($properties as $key => $value) {
if (empty($attached_properties[$key])) {
$attached_properties[] = id(new AlmanacProperty())
->setObjectPHID($object->getPHID())
->setFieldName($key);
}
}
$object->attachAlmanacProperties($attached_properties);
$field_list = PhabricatorCustomField::getObjectFields(
$object,
PhabricatorCustomField::ROLE_DEFAULT);
$fields = $field_list->getFields();
$xactions = array();
foreach ($properties as $name => $property) {
$xactions[] = id(clone $template)
->setTransactionType(PhabricatorTransactions::TYPE_CUSTOMFIELD)
->setMetadataValue('customfield:key', $name)
->setOldValue($object->getAlmanacPropertyValue($name))
->setNewValue($property);
}
return $xactions;
}
/* -( PhabricatorPolicyInterface )----------------------------------------- */ /* -( PhabricatorPolicyInterface )----------------------------------------- */