Path: blob/master/src/applications/fund/xaction/FundInitiativeBackerTransaction.php
12256 views
<?php12final class FundInitiativeBackerTransaction3extends FundInitiativeTransactionType {45const TRANSACTIONTYPE = 'fund:backer';67public function generateOldValue($object) {8return null;9}1011public function applyInternalEffects($object, $value) {12$amount = $this->getMetadataValue(13FundInitiativeTransaction::PROPERTY_AMOUNT);14$amount = PhortuneCurrency::newFromString($amount);15$total = $object->getTotalAsCurrency()->add($amount);16$object->setTotalAsCurrency($total);17}1819public function applyExternalEffects($object, $value) {20$backer = id(new FundBackerQuery())21->setViewer($this->getActor())22->withPHIDs(array($value))23->executeOne();24if (!$backer) {25throw new Exception(pht('Unable to load %s!', 'FundBacker'));26}2728$subx = array();29$subx[] = id(new FundBackerTransaction())30->setTransactionType(FundBackerStatusTransaction::TRANSACTIONTYPE)31->setNewValue(FundBacker::STATUS_PURCHASED);3233$content_source = $this->getEditor()->getContentSource();3435$editor = id(new FundBackerEditor())36->setActor($this->getActor())37->setContentSource($content_source)38->setContinueOnMissingFields(true)39->setContinueOnNoEffect(true);4041$editor->applyTransactions($backer, $subx);42}4344public function getTitle() {45$amount = $this->getMetadataValue(46FundInitiativeTransaction::PROPERTY_AMOUNT);47$amount = PhortuneCurrency::newFromString($amount);48return pht(49'%s backed this initiative with %s.',50$this->renderAuthor(),51$amount->formatForDisplay());52}5354public function getTitleForFeed() {55$amount = $this->getMetadataValue(56FundInitiativeTransaction::PROPERTY_AMOUNT);57$amount = PhortuneCurrency::newFromString($amount);58return pht(59'%s backed %s with %s.',60$this->renderAuthor(),61$this->renderObject(),62$amount->formatForDisplay());63}6465public function getIcon() {66return 'fa-heart';67}6869public function getColor() {70return 'red';71}727374}757677