From 9c9c61af89e4902212d44c77e274561b094f71c8 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Sat, 7 Aug 2021 04:17:43 +1200 Subject: [PATCH] [Ref] Extract getFieldValue, make function generic --- CRM/Contribute/Tokens.php | 10 ++++------ CRM/Core/EntityTokens.php | 11 +++++++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/CRM/Contribute/Tokens.php b/CRM/Contribute/Tokens.php index 4f56ab6343..c2372a8edd 100644 --- a/CRM/Contribute/Tokens.php +++ b/CRM/Contribute/Tokens.php @@ -147,23 +147,21 @@ class CRM_Contribute_Tokens extends CRM_Core_EntityTokens { * @throws \CRM_Core_Exception */ public function evaluateToken(TokenRow $row, $entity, $field, $prefetch = NULL) { - $actionSearchResult = $row->context['actionSearchResult']; - $aliasedField = $this->getEntityAlias() . $field; - $fieldValue = $actionSearchResult->{$aliasedField} ?? NULL; + $fieldValue = $this->getFieldValue($row, $field); if ($this->isPseudoField($field)) { $split = explode(':', $field); - return $row->tokens($entity, $field, $this->getPseudoValue($split[0], $split[1], $actionSearchResult->{"contrib_$split[0]"} ?? NULL)); + return $row->tokens($entity, $field, $this->getPseudoValue($split[0], $split[1], $this->getFieldValue($row, $split[0]))); } if ($this->isMoneyField($field)) { return $row->format('text/plain')->tokens($entity, $field, - \CRM_Utils_Money::format($fieldValue, $actionSearchResult->contrib_currency)); + \CRM_Utils_Money::format($fieldValue, $this->getFieldValue($row, 'currency'))); } if ($this->isDateField($field)) { return $row->format('text/plain')->tokens($entity, $field, \CRM_Utils_Date::customFormat($fieldValue)); } if ($this->isCustomField($field)) { - $row->customToken($entity, \CRM_Core_BAO_CustomField::getKeyID($field), $actionSearchResult->entity_id); + $row->customToken($entity, \CRM_Core_BAO_CustomField::getKeyID($field), $this->getFieldValue($row, 'id')); } else { $row->format('text/plain')->tokens($entity, $field, (string) $fieldValue); diff --git a/CRM/Core/EntityTokens.php b/CRM/Core/EntityTokens.php index 5ee445f236..206b196ff8 100644 --- a/CRM/Core/EntityTokens.php +++ b/CRM/Core/EntityTokens.php @@ -212,4 +212,15 @@ class CRM_Core_EntityTokens extends AbstractTokenSubscriber { return (string) $fieldValue; } + /** + * @param \Civi\Token\TokenRow $row + * @param string $field + * @return string|int + */ + protected function getFieldValue(TokenRow $row, string $field) { + $actionSearchResult = $row->context['actionSearchResult']; + $aliasedField = $this->getEntityAlias() . $field; + return $actionSearchResult->{$aliasedField} ?? NULL; + } + } -- 2.25.1