CRM-17606 - Limit case token list to only relevant custom fields
authorColeman Watts <coleman@civicrm.org>
Wed, 25 Nov 2015 23:52:03 +0000 (18:52 -0500)
committerColeman Watts <coleman@civicrm.org>
Wed, 25 Nov 2015 23:52:03 +0000 (18:52 -0500)
CRM/Contact/Form/Task/PDF.php
CRM/Core/SelectValues.php

index 0b9eb91afab3d38e07196288c14ca8cc120bbc9f..67a74760862b4e107ee282c674ee82d6e04b6667 100644 (file)
@@ -119,7 +119,8 @@ class CRM_Contact_Form_Task_PDF extends CRM_Contact_Form_Task {
   public function listTokens() {
     $tokens = CRM_Core_SelectValues::contactTokens();
     if (isset($this->_caseId)) {
-      $tokens += CRM_Core_SelectValues::caseTokens();
+      $caseTypeId = CRM_Core_DAO::getFieldValue('CRM_Case_DAO_Case', $this->_caseId, 'case_type_id');
+      $tokens += CRM_Core_SelectValues::caseTokens($caseTypeId);
     }
     return $tokens;
   }
index b494d563f7ef8041402f6e515bbe645c1d9cd7c5..0b07c65bc1ac7fdcaeb11c5f1d96b08783e56ff3 100644 (file)
@@ -693,16 +693,17 @@ class CRM_Core_SelectValues {
   }
 
   /**
+   * @param int $caseTypeId
    * @return array
    */
-  public static function caseTokens() {
+  public static function caseTokens($caseTypeId = NULL) {
     static $tokens = NULL;
     if (!$tokens) {
       foreach (CRM_Case_BAO_Case::fields() as $field) {
         $tokens["{case.{$field['name']}}"] = $field['title'];
       }
 
-      $customFields = CRM_Core_BAO_CustomField::getFields('Case');
+      $customFields = CRM_Core_BAO_CustomField::getFields('Case', FALSE, FALSE, $caseTypeId);
       foreach ($customFields as $id => $field) {
         $tokens["{case.custom_$id}"] = "{$field['label']} :: {$field['groupTitle']}";
       }