From 601c941f2f33273aaa6ff1f38ef10df281fef816 Mon Sep 17 00:00:00 2001 From: Eileen McNaughton Date: Sat, 2 Oct 2021 12:05:37 +1300 Subject: [PATCH] Standardise listTokens in email & pdf This simplifies the code to 'listtokens' across most of the pdf & email classes. The case tokens are a bit of a hold out as ideally we would have one function on CRM_Case_Form_Task which email & pdf would use but we are still getting to that point - see https://github.com/civicrm/civicrm-core/pull/21688 --- CRM/Activity/Form/Task.php | 9 +++++++++ CRM/Activity/Form/Task/PDF.php | 9 --------- CRM/Contribute/Form/Task.php | 9 +++++++++ CRM/Contribute/Form/Task/Email.php | 11 ----------- CRM/Contribute/Form/Task/PDFLetter.php | 9 +++------ CRM/Core/Form/Task.php | 21 +++++++++++++++++++++ CRM/Member/Form/Task.php | 9 +++++++++ CRM/Member/Form/Task/PDFLetter.php | 11 ----------- 8 files changed, 51 insertions(+), 37 deletions(-) diff --git a/CRM/Activity/Form/Task.php b/CRM/Activity/Form/Task.php index 23afcfab94..ee6e1ebd2b 100644 --- a/CRM/Activity/Form/Task.php +++ b/CRM/Activity/Form/Task.php @@ -127,4 +127,13 @@ WHERE activity_id IN ( $IDs ) AND ]); } + /** + * Get the token processor schema required to list any tokens for this task. + * + * @return array + */ + public function getTokenSchema(): array { + return ['activityId']; + } + } diff --git a/CRM/Activity/Form/Task/PDF.php b/CRM/Activity/Form/Task/PDF.php index 760bde39ea..8a7cd7abb0 100644 --- a/CRM/Activity/Form/Task/PDF.php +++ b/CRM/Activity/Form/Task/PDF.php @@ -56,15 +56,6 @@ class CRM_Activity_Form_Task_PDF extends CRM_Activity_Form_Task { CRM_Utils_System::civiExit(0); } - /** - * List available tokens for this form. - * - * @return array - */ - public function listTokens() { - return $this->createTokenProcessor()->listTokens(); - } - /** * Create a token processor * diff --git a/CRM/Contribute/Form/Task.php b/CRM/Contribute/Form/Task.php index b15aa0e238..9a3b30871f 100644 --- a/CRM/Contribute/Form/Task.php +++ b/CRM/Contribute/Form/Task.php @@ -104,4 +104,13 @@ class CRM_Contribute_Form_Task extends CRM_Core_Form_Task { ]); } + /** + * Get the token processor schema required to list any tokens for this task. + * + * @return array + */ + public function getTokenSchema(): array { + return ['contributionId', 'contactId']; + } + } diff --git a/CRM/Contribute/Form/Task/Email.php b/CRM/Contribute/Form/Task/Email.php index db83653ea5..7fb87e4c97 100644 --- a/CRM/Contribute/Form/Task/Email.php +++ b/CRM/Contribute/Form/Task/Email.php @@ -32,15 +32,4 @@ class CRM_Contribute_Form_Task_Email extends CRM_Contribute_Form_Task { return $this->getIDs(); } - /** - * List available tokens for this form. - * - * @return array - */ - public function listTokens() { - $tokens = CRM_Core_SelectValues::contactTokens(); - $tokens = array_merge(CRM_Core_SelectValues::contributionTokens(), $tokens); - return $tokens; - } - } diff --git a/CRM/Contribute/Form/Task/PDFLetter.php b/CRM/Contribute/Form/Task/PDFLetter.php index ce5839b712..e6b639f09e 100644 --- a/CRM/Contribute/Form/Task/PDFLetter.php +++ b/CRM/Contribute/Form/Task/PDFLetter.php @@ -293,15 +293,12 @@ class CRM_Contribute_Form_Task_PDFLetter extends CRM_Contribute_Form_Task { } /** - * List available tokens for this form. + * Get the token processor schema required to list any tokens for this task. * * @return array */ - public function listTokens() { - $tokens = CRM_Core_SelectValues::contactTokens(); - $tokens = array_merge(CRM_Core_SelectValues::contributionTokens(), $tokens); - $tokens = array_merge(CRM_Core_SelectValues::domainTokens(), $tokens); - return $tokens; + public function getTokenSchema(): array { + return ['contributionId', 'contactId']; } /** diff --git a/CRM/Core/Form/Task.php b/CRM/Core/Form/Task.php index cb4c7349c9..93051b63d6 100644 --- a/CRM/Core/Form/Task.php +++ b/CRM/Core/Form/Task.php @@ -9,6 +9,8 @@ +--------------------------------------------------------------------+ */ +use Civi\Token\TokenProcessor; + /** * @package CRM * @copyright CiviCRM LLC https://civicrm.org/licensing @@ -338,4 +340,23 @@ SELECT contact_id return $this::$entityShortname . '_id'; } + /** + * List available tokens for this form. + * + * @return array + */ + public function listTokens() { + $tokenProcessor = new TokenProcessor(Civi::dispatcher(), ['schema' => $this->getTokenSchema()]); + return $tokenProcessor->listTokens(); + } + + /** + * Get the token processor schema required to list any tokens for this task. + * + * @return array + */ + protected function getTokenSchema(): array { + return ['contactId']; + } + } diff --git a/CRM/Member/Form/Task.php b/CRM/Member/Form/Task.php index 8d5d042ab8..9dd37aa1b9 100644 --- a/CRM/Member/Form/Task.php +++ b/CRM/Member/Form/Task.php @@ -95,4 +95,13 @@ class CRM_Member_Form_Task extends CRM_Core_Form_Task { ); } + /** + * Get the token processor schema required to list any tokens for this task. + * + * @return array + */ + public function getTokenSchema(): array { + return ['membershipId', 'contactId']; + } + } diff --git a/CRM/Member/Form/Task/PDFLetter.php b/CRM/Member/Form/Task/PDFLetter.php index 1d2354e3b4..d50dcffddb 100644 --- a/CRM/Member/Form/Task/PDFLetter.php +++ b/CRM/Member/Form/Task/PDFLetter.php @@ -137,15 +137,4 @@ class CRM_Member_Form_Task_PDFLetter extends CRM_Member_Form_Task { return $html; } - /** - * List available tokens for this form. - * - * @return array - */ - public function listTokens() { - $tokens = CRM_Core_SelectValues::contactTokens(); - $tokens = array_merge(CRM_Core_SelectValues::membershipTokens(), $tokens); - return $tokens; - } - } -- 2.25.1