getFieldValue($row, 'membership_type_id')); $row->tokens($entity, $field, \CRM_Utils_Money::formatLocaleNumericRoundedForDefaultCurrency($membershipType['minimum_fee'])); } else { parent::evaluateToken($row, $entity, $field, $prefetch); } } /** * Get any overrides for token metadata. * * This is most obviously used for setting the audience, which * will affect widget-presence. * * Changing the audience is done in order to simplify the * UI for more general users. * * @return \string[][] */ protected function getTokenMetadataOverrides(): array { return [ 'owner_membership_id' => ['audience' => 'sysadmin'], 'max_related' => ['audience' => 'sysadmin'], 'contribution_recur_id' => ['audience' => 'sysadmin'], 'is_override' => ['audience' => 'sysadmin'], 'is_test' => ['audience' => 'sysadmin'], // Pay later is considered to be unreliable in the schema // and will eventually be removed. 'is_pay_later' => ['audience' => 'deprecated'], ]; } /** * Get fields which need to be returned to render another token. * * @return array */ public function getDependencies(): array { return ['fee' => 'membership_type_id']; } /** * Get any tokens with custom calculation. * * In this case 'fee' should be converted to{membership.membership_type_id.fee} * but we don't have the formatting support to do that with no * custom intervention yet. */ protected function getBespokeTokens(): array { return [ 'fee' => [ 'title' => ts('Membership Fee'), 'name' => 'fee', 'type' => 'calculated', 'options' => NULL, 'data_type' => 'integer', 'audience' => 'user', ], ]; } }