CRM-12990 Hook substitution not made on mailing label where there are no other tokens
authoreileen <eileen@fuzion.co.nz>
Mon, 1 Jul 2013 05:55:25 +0000 (17:55 +1200)
committereileen <eileen@fuzion.co.nz>
Mon, 1 Jul 2013 05:55:53 +0000 (17:55 +1200)
CRM/Contact/Form/Task/Label.php

index ed4a8d0bc6ab39db183227bdeaf10a5b406327e7..1264044e4aed975a57dd14ff110c9c347c3f5e08 100644 (file)
@@ -241,16 +241,7 @@ class CRM_Contact_Form_Task_Label extends CRM_Contact_Form_Task {
         // If location type is not primary, $contact contains
         // one more array as "$contact[$locName] = array( values... )"
 
-        $found = FALSE;
-        // we should replace all the tokens that are set in mailing label format
-        foreach ($mailingFormatProperties as $key => $dontCare) {
-          if (CRM_Utils_Array::value($key, $contact)) {
-            $found = TRUE;
-            break;
-          }
-        }
-
-        if (!$found) {
+        if(!$this->tokenIsFound($contact, $mailingFormatProperties, $tokenFields)) {
           continue;
         }
 
@@ -288,16 +279,7 @@ class CRM_Contact_Form_Task_Label extends CRM_Contact_Form_Task {
         }
       }
       else {
-        $found = FALSE;
-        // we should replace all the tokens that are set in mailing label format
-        foreach ($mailingFormatProperties as $key => $dontCare) {
-          if (CRM_Utils_Array::value($key, $contact)) {
-            $found = TRUE;
-            break;
-          }
-        }
-
-        if (!$found) {
+        if(!$this->tokenIsFound($contact, $mailingFormatProperties, $tokenFields)) {
           continue;
         }
 
@@ -358,6 +340,20 @@ class CRM_Contact_Form_Task_Label extends CRM_Contact_Form_Task {
     CRM_Utils_System::civiExit(1);
   }
 
+  /**
+   * Check for presence of tokens to be swapped out
+   * @param array $contact
+   * @param array $mailingFormatProperties
+   * @param array $tokenFields
+   */
+  function tokenIsFound($contact, $mailingFormatProperties, $tokenFields) {
+    foreach (array_merge($mailingFormatProperties, array_fill_keys($tokenFields, 1)) as $key => $dontCare) {
+      if (CRM_Utils_Array::value($key, $contact)) {
+        return TRUE;
+      }
+    }
+    return FALSE;
+  }
   /**
    * function to create labels (pdf)
    *