private function setTransactionOldValue(PhabricatorProject $project, PhabricatorProjectTransaction $xaction) { $type = $xaction->getTransactionType(); switch ($type) { case PhabricatorProjectTransactionType::TYPE_NAME: $xaction->setOldValue($project->getName()); break; case PhabricatorProjectTransactionType::TYPE_STATUS: $xaction->setOldValue($project->getStatus()); break; case PhabricatorProjectTransactionType::TYPE_MEMBERS: $member_phids = $project->loadMemberPHIDs(); $project->attachMemberPHIDs($member_phids); $old_value = array_values($member_phids); $xaction->setOldValue($old_value); $new_value = $xaction->getNewValue(); $new_value = array_filter($new_value); $new_value = array_unique($new_value); $new_value = array_values($new_value); $xaction->setNewValue($new_value); break; case PhabricatorProjectTransactionType::TYPE_CAN_VIEW: $xaction->setOldValue($project->getViewPolicy()); break; case PhabricatorProjectTransactionType::TYPE_CAN_EDIT: $xaction->setOldValue($project->getEditPolicy()); break; case PhabricatorProjectTransactionType::TYPE_CAN_JOIN: $xaction->setOldValue($project->getJoinPolicy()); break; default: throw new Exception("Unknown transaction type '{$type}'!"); } return $this; }