}
}
- if ($value instanceof Money && $filter === NULL) {
- $filter = ['crmMoney'];
+ if ($value instanceof Money) {
+ switch ($filter[0] ?? NULL) {
+ case NULL:
+ case 'crmMoney':
+ return \Civi::format()->money($value->getAmount(), $value->getCurrency());
+
+ case 'raw':
+ return $value->getAmount();
+
+ default:
+ throw new \CRM_Core_Exception("Invalid token filter: $filter");
+ }
}
switch ($filter[0] ?? NULL) {
case 'lower':
return mb_strtolower($value);
- case 'crmMoney':
- if ($value instanceof Money) {
- return \Civi::format()->money($value->getAmount(), $value->getCurrency());
- }
-
case 'crmDate':
if ($value instanceof \DateTime) {
// @todo cludgey.
$this->assertEquals($this->getExpectedContributionRecurTokenOutPut(), $tokenProcessor->getRow(0)->render('html'));
}
+ /**
+ * Test that contribution recur tokens are consistently rendered.
+ */
+ public function testContributionRecurTokenRaw(): void {
+ $tokenProcessor = new TokenProcessor(\Civi::dispatcher(), [
+ 'controller' => __CLASS__,
+ 'smarty' => FALSE,
+ 'schema' => ['contribution_recurId'],
+ ]);
+ $tokenProcessor->addMessage('not_specified', '{contribution_recur.amount}', 'text/plain');
+ $tokenProcessor->addMessage('money', '{contribution_recur.amount|crmMoney}', 'text/plain');
+ $tokenProcessor->addMessage('raw', '{contribution_recur.amount|raw}', 'text/plain');
+ $tokenProcessor->addMessage('moneyNumber', '{contribution_recur.amount|crmMoneyNumber}', 'text/plain');
+ $tokenProcessor->addRow(['contribution_recurId' => $this->getContributionRecurID()]);
+ $tokenProcessor->evaluate();
+ $this->assertEquals('€5,990.99', $tokenProcessor->getRow(0)->render('not_specified'));
+ $this->assertEquals('€5,990.99', $tokenProcessor->getRow(0)->render('money'));
+ $this->assertEquals('5990.99', $tokenProcessor->getRow(0)->render('raw'));
+ }
+
/**
* Test money format tokens can respect passed in locale.
*/