@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at recaptime-dev/main 75 lines 2.1 kB view raw
1<?php 2 3final class FundInitiativeBackerTransaction 4 extends FundInitiativeTransactionType { 5 6 const TRANSACTIONTYPE = 'fund:backer'; 7 8 public function generateOldValue($object) { 9 return null; 10 } 11 12 public function applyInternalEffects($object, $value) { 13 $amount = $this->getMetadataValue( 14 FundInitiativeTransaction::PROPERTY_AMOUNT); 15 $amount = PhortuneCurrency::newFromString($amount); 16 $total = $object->getTotalAsCurrency()->add($amount); 17 $object->setTotalAsCurrency($total); 18 } 19 20 public function applyExternalEffects($object, $value) { 21 $backer = id(new FundBackerQuery()) 22 ->setViewer($this->getActor()) 23 ->withPHIDs(array($value)) 24 ->executeOne(); 25 if (!$backer) { 26 throw new Exception(pht('Unable to load %s!', 'FundBacker')); 27 } 28 29 $subx = array(); 30 $subx[] = id(new FundBackerTransaction()) 31 ->setTransactionType(FundBackerStatusTransaction::TRANSACTIONTYPE) 32 ->setNewValue(FundBacker::STATUS_PURCHASED); 33 34 $content_source = $this->getEditor()->getContentSource(); 35 36 $editor = id(new FundBackerEditor()) 37 ->setActor($this->getActor()) 38 ->setContentSource($content_source) 39 ->setContinueOnMissingFields(true) 40 ->setContinueOnNoEffect(true); 41 42 $editor->applyTransactions($backer, $subx); 43 } 44 45 public function getTitle() { 46 $amount = $this->getMetadataValue( 47 FundInitiativeTransaction::PROPERTY_AMOUNT); 48 $amount = PhortuneCurrency::newFromString($amount); 49 return pht( 50 '%s backed this initiative with %s.', 51 $this->renderAuthor(), 52 $amount->formatForDisplay()); 53 } 54 55 public function getTitleForFeed() { 56 $amount = $this->getMetadataValue( 57 FundInitiativeTransaction::PROPERTY_AMOUNT); 58 $amount = PhortuneCurrency::newFromString($amount); 59 return pht( 60 '%s backed %s with %s.', 61 $this->renderAuthor(), 62 $this->renderObject(), 63 $amount->formatForDisplay()); 64 } 65 66 public function getIcon() { 67 return 'fa-heart'; 68 } 69 70 public function getColor() { 71 return 'red'; 72 } 73 74 75}