From 12838694bb939afa6a0e02c0f6410f73b87b4092 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Tue, 21 Jun 2022 12:58:07 +1200 Subject: [PATCH] Attempt to make function more readable by extracting in-line function --- CRM/Core/BAO/MessageTemplate.php | 39 +++++++++++++++++++------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/CRM/Core/BAO/MessageTemplate.php b/CRM/Core/BAO/MessageTemplate.php index 08491c2dba..39228848c7 100644 --- a/CRM/Core/BAO/MessageTemplate.php +++ b/CRM/Core/BAO/MessageTemplate.php @@ -330,20 +330,7 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen 'PDFFilename' => NULL, ]; - // Some params have been deprecated/renamed. Synchronize old<=>new params. We periodically resync after exchanging data with other parties. - $sync = function () use (&$params, $modelDefaults, $viewDefaults) { - CRM_Utils_Array::pathSync($params, ['workflow'], ['valueName']); - CRM_Utils_Array::pathSync($params, ['tokenContext', 'contactId'], ['contactId']); - CRM_Utils_Array::pathSync($params, ['tokenContext', 'smarty'], ['disableSmarty'], function ($v, bool $isCanon) { - return !$v; - }); - - // Core#644 - handle Email ID passed as "From". - if (isset($params['from'])) { - $params['from'] = \CRM_Utils_Mail::formatFromAddress($params['from']); - } - }; - $sync(); + self::synchronizeLegacyParameters($params); // Allow WorkflowMessage to run any filters/mappings/cleanups. $model = $params['model'] ?? WorkflowMessage::create($params['workflow'] ?? 'UNKNOWN'); @@ -352,13 +339,13 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen // Subsequent hooks use $params. Retaining the $params['model'] might be nice - but don't do it unless you figure out how to ensure data-consistency (eg $params['tplParams'] <=> $params['model']). // If you want to expose the model via hook, consider interjecting a new Hook::alterWorkflowMessage($model) between `importAll()` and `exportAll()`. - $sync(); + self::synchronizeLegacyParameters($params); $params = array_merge($modelDefaults, $viewDefaults, $envelopeDefaults, $params); CRM_Utils_Hook::alterMailParams($params, 'messageTemplate'); $mailContent = self::loadTemplate((string) $params['valueName'], $params['isTest'], $params['messageTemplateID'] ?? NULL, $params['groupName'] ?? '', $params['messageTemplate'], $params['subject'] ?? NULL); - $sync(); + self::synchronizeLegacyParameters($params); $rendered = CRM_Core_TokenSmarty::render(CRM_Utils_Array::subset($mailContent, ['text', 'html', 'subject']), $params['tokenContext'], $params['tplParams']); if (isset($rendered['subject'])) { $rendered['subject'] = trim(preg_replace('/[\r\n]+/', ' ', $rendered['subject'])); @@ -368,6 +355,26 @@ class CRM_Core_BAO_MessageTemplate extends CRM_Core_DAO_MessageTemplate implemen return [$mailContent, $params]; } + /** + * Some params have been deprecated/renamed. Synchronize old<=>new params. + * + * We periodically resync after exchanging data with other parties. + * + * @param array $params + */ + private static function synchronizeLegacyParameters(&$params) { + CRM_Utils_Array::pathSync($params, ['workflow'], ['valueName']); + CRM_Utils_Array::pathSync($params, ['tokenContext', 'contactId'], ['contactId']); + CRM_Utils_Array::pathSync($params, ['tokenContext', 'smarty'], ['disableSmarty'], function ($v, bool $isCanon) { + return !$v; + }); + + // Core#644 - handle Email ID passed as "From". + if (isset($params['from'])) { + $params['from'] = \CRM_Utils_Mail::formatFromAddress($params['from']); + } + } + /** * Send an email from the specified template based on an array of params. * -- 2.25.1