public static function newPropertyRemoveTransactions(AlmanacPropertyInterface $object, array $properties) { $template = $object->getApplicationTransactionTemplate(); $xactions = array(); foreach ($properties as $property) { $xactions[] = id(clone $template)->setTransactionType(AlmanacTransaction::TYPE_PROPERTY_REMOVE)->setMetadataValue('almanac.property', $property)->setNewValue(null); } return $xactions; }
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; }