* @return null|string
*/
public static function getDomainTokenReplacement($token, $domain, $html = FALSE, $escapeSmarty = FALSE): ?string {
- $tokens = self::getDomainTokens($domain->id, $html);
+ $tokens = CRM_Core_DomainTokens::getDomainTokenValues($domain->id, $html);
$value = $tokens[$token] ?? "{domain.$token}";
if ($escapeSmarty) {
$value = self::tokenEscapeSmarty($value);
* The processed string
*/
public static function replaceOrgTokens($str, &$org, $html = FALSE, $escapeSmarty = FALSE) {
+ CRM_Core_Error::deprecatedFunctionWarning('token processor');
self::$_tokens['org']
= array_merge(
array_keys(CRM_Contact_BAO_Contact::importableFields('Organization')),
* @param string $entityType
* @return string
* html parsed through smarty
+ * @deprecated
*/
public static function parseThroughSmarty($tokenHtml, $entity, $entityType = 'contact') {
if (defined('CIVICRM_MAIL_SMARTY') && CIVICRM_MAIL_SMARTY) {
*
* this routine will remove the extra backslashes and braces
*
+ * @deprecated
+ *
* @param $str ref to the string that will be scanned and modified
*/
public static function unescapeTokens(&$str) {
*
* @return string
* The processed string
+ *
+ * @deprecated
*/
- public static function &replaceComponentTokens(&$str, $contact, $components, $escapeSmarty = FALSE, $returnEmptyToken = TRUE) {
+ public static function replaceComponentTokens(&$str, $contact, $components, $escapeSmarty = FALSE, $returnEmptyToken = TRUE) {
+ CRM_Core_Error::deprecatedFunctionWarning('use the token processor');
if (!is_array($components) || empty($contact)) {
return $str;
}
* Get Membership Token Details.
* @param array $membershipIDs
* Array of membership IDS.
+ *
+ * @deprecated
*/
public static function getMembershipTokenDetails($membershipIDs) {
$memberships = civicrm_api3('membership', 'get', [
return $value;
}
+ /**
+ * @deprecated
+ *
+ * Do not use this function - it still needs full removal from active code
+ * in CRM_Contribute_Form_Task_PDFLetter.
+ */
protected static function _buildContributionTokens() {
$key = 'contribution';
if (!isset(Civi::$statics[__CLASS__][__FUNCTION__][$key])) {
- $processor = new CRM_Contribute_Tokens();
$tokens = array_merge(CRM_Contribute_BAO_Contribution::exportableFields('All'),
['campaign' => [], 'financial_type' => [], 'payment_instrument' => []],
self::getCustomFieldTokens('Contribution'),
- $processor->getPseudoTokens()
+ [
+ 'financial_type_id:label',
+ 'financial_type_id:name',
+ 'contribution_page_id:label',
+ 'contribution_page_id:name',
+ 'payment_instrument_id:label',
+ 'payment_instrument_id:name',
+ 'is_test:label',
+ 'is_pay_later:label',
+ 'contribution_status_id:label',
+ 'contribution_status_id:name',
+ 'is_template:label',
+ ]
);
foreach ($tokens as $token) {
if (!empty($token['name'])) {
self::$_tokens[$key] = Civi::$statics[__CLASS__][__FUNCTION__][$key];
}
- /**
- * Store membership tokens on the static _tokens array.
- */
- protected static function _buildMembershipTokens() {
- $key = 'membership';
- if (!isset(self::$_tokens[$key]) || self::$_tokens[$key] == NULL) {
- $membershipTokens = [];
- $tokens = CRM_Core_SelectValues::membershipTokens();
- foreach ($tokens as $token => $dontCare) {
- $membershipTokens[] = substr($token, (strpos($token, '.') + 1), -1);
- }
- self::$_tokens[$key] = $membershipTokens;
- }
- }
-
/**
* Replace tokens for an entity.
* @param string $entity
}
/**
+ * @deprecated
+ *
* @param int $caseId
* @param string $str
* @param array $knownTokens
/**
* Generic function for formatting token replacement for an api field
*
+ * @deprecated
+ *
* @param string $entity
* @param string $token
* @param array $entityArray
return implode(', ', $ret);
}
// Format date fields
- elseif ($entityArray[$token] && $fieldType == CRM_Utils_Type::T_DATE) {
+ elseif ($entityArray[$token] && in_array($fieldType, [CRM_Utils_Type::T_DATE, CRM_Utils_Type::T_TIMESTAMP, (CRM_Utils_Type::T_DATE + CRM_Utils_Type::T_TIME)])) {
return CRM_Utils_Date::customFormat($entityArray[$token]);
}
return implode(', ', (array) $entityArray[$token]);
}
/**
+ * Do not use - unused in core.
+ *
* Replace Contribution tokens in html.
*
* @param string $str
* @param string $knownTokens
* @param bool|string $escapeSmarty
*
+ * @deprecated
+ *
* @return mixed
*/
public static function replaceContributionTokens($str, &$contribution, $html = FALSE, $knownTokens = NULL, $escapeSmarty = FALSE) {
* @param array $contributions
* @param array $knownTokens
*
+ * @deprecated
+ *
* @return string
*/
public static function replaceMultipleContributionTokens(string $separator, string $str, array $contributions, array $knownTokens): string {
+ CRM_Core_Error::deprecatedFunctionWarning('no alternative');
foreach ($knownTokens['contribution'] ?? [] as $token) {
$resolvedTokens = [];
foreach ($contributions as $contribution) {
/**
* Get replacement strings for any membership tokens (only a small number of tokens are implemnted in the first instance
* - this is used by the pdfLetter task from membership search
+ *
+ * This is called via replaceEntityTokens.
+ *
+ * In the near term it will not be called at all from core as
+ * the pdf letter task is updated to use the processor.
+ *
+ * @deprecated
+ *
* @param string $entity
* should always be "membership"
* @param string $token
* @return string token replacement
*/
public static function getMembershipTokenReplacement($entity, $token, $membership) {
- self::_buildMembershipTokens();
+ $supportedTokens = [
+ 'id',
+ 'status',
+ 'status_id',
+ 'type',
+ 'membership_type_id',
+ 'start_date',
+ 'join_date',
+ 'end_date',
+ 'fee',
+ ];
switch ($token) {
case 'type':
+ // membership_type_id would only be requested if the calling
+ // class is mapping it to '{membership:membership_type_id:label'}
+ case 'membership_type_id':
$value = $membership['membership_name'];
break;
case 'status':
+ // status_id would only be requested if the calling
+ // class is mapping it to '{membership:status_id:label'}
+ case 'status_id':
$statuses = CRM_Member_BAO_Membership::buildOptions('status_id');
$value = $statuses[$membership['status_id']];
break;
break;
default:
- if (in_array($token, self::$_tokens[$entity])) {
+ if (in_array($token, $supportedTokens)) {
$value = $membership[$token];
if (CRM_Utils_String::endsWith($token, '_date')) {
$value = CRM_Utils_Date::customFormat($value);
}
/**
+ * Do not use - unused in core.
+ *
* @param $token
* @param $contribution
* @param bool $html
* @param bool $escapeSmarty
*
+ * @deprecated
+ *
* @return mixed|string
* @throws \CRM_Core_Exception
*/
- public static function getContributionTokenReplacement($token, &$contribution, $html = FALSE, $escapeSmarty = FALSE) {
+ public static function getContributionTokenReplacement($token, $contribution, $html = FALSE, $escapeSmarty = FALSE) {
self::_buildContributionTokens();
switch ($token) {
$value = CRM_Utils_Date::customFormat($value, $config->dateformatDatetime);
break;
+ case 'source':
+ $value = CRM_Utils_Array::retrieveValueRecursive($contribution, 'contribution_source');
+ break;
+
default:
if (!in_array($token, self::$_tokens['contribution'])) {
$value = "{contribution.$token}";
* Get all custom field tokens of $entity
*
* @param string $entity
- * @param bool $usedForTokenWidget
- *
* @return array
* return custom field tokens in array('custom_N' => 'label') format
*/
- public static function getCustomFieldTokens($entity, $usedForTokenWidget = FALSE) {
+ public static function getCustomFieldTokens($entity) {
$customTokens = [];
- $tokenName = $usedForTokenWidget ? "{contribution.custom_%d}" : "custom_%d";
foreach (CRM_Core_BAO_CustomField::getFields($entity) as $id => $info) {
- $customTokens[sprintf($tokenName, $id)] = $info['label'];
+ $customTokens['custom_' . $id] = $info['label'] . ' :: ' . $info['groupTitle'];
}
-
return $customTokens;
}
];
}
- /**
- * Get the tokens available for the domain.
- *
- * @param int $domainID
- * @param bool $html
- *
- * @return array
- * @throws \CRM_Core_Exception
- */
- protected static function getDomainTokens(int $domainID, bool $html): array {
- $cacheKey = __CLASS__ . 'domain_tokens' . $html . '_' . $domainID . '_' . CRM_Core_I18n::getLocale();
- if (!Civi::cache('metadata')->has($cacheKey)) {
- if (CRM_Core_Config::domainID() === $domainID) {
- $domain = CRM_Core_BAO_Domain::getDomain();
- }
- else {
- $domain = new CRM_Core_BAO_Domain();
- $domain->find(TRUE);
- }
- $tokens = [
- 'name' => $domain->name,
- 'id' => $domain->id,
- 'description' => $domain->description,
- ];
- $loc = $domain->getLocationValues();
- if ($html) {
- $tokens['address'] = str_replace("\n", '<br />', ($loc['address'][1]['display'] ?? ''));
- }
- else {
- $tokens['address'] = $loc['address'][1]['display_text'] ?? '';
- }
- $phone = reset($loc['phone']);
- $email = reset($loc['email']);
- $tokens['phone'] = $phone['phone'] ?? '';
- $tokens['email'] = $email['email'] ?? '';
- Civi::cache('metadata')->set($cacheKey, $tokens);
- }
- return Civi::cache('metadata')->get($cacheKey);
- }
-
}