core#644 - extract function to return correct mailbox header
authorJon Goldberg <jon@megaphonetech.com>
Sat, 5 Jan 2019 20:46:25 +0000 (15:46 -0500)
committerJon Goldberg <jon@megaphonetech.com>
Sat, 5 Jan 2019 20:46:25 +0000 (15:46 -0500)
CRM/Contact/Form/Task/EmailCommon.php
CRM/Member/Form/MembershipRenewal.php
CRM/Utils/Mail.php

index 1b0e7f4b472c04c8e3c35c0bbba818ba65705773..1dd47fcc5c520c19a9aff85a5ee6c788422f8599 100644 (file)
@@ -400,13 +400,7 @@ class CRM_Contact_Form_Task_EmailCommon {
     // dev/core#357 User Emails are keyed by their id so that the Signature is able to be added
     // If we have had a contact email used here the value returned from the line above will be the
     // numerical key where as $from for use in the sendEmail in Activity needs to be of format of "To Name" <toemailaddress>
-    if (is_numeric($from)) {
-      $result = civicrm_api3('Email', 'get', [
-        'id' => $from,
-        'return' => ['contact_id.display_name', 'email'],
-      ]);
-      $from = '"' . $result['values'][$from]['contact_id.display_name'] . '" <' . $result['values'][$from]['email'] . '>';
-    }
+    $from = CRM_Utils_Mail::mailboxHeader($from);
     $subject = $formValues['subject'];
 
     // CRM-13378: Append CC and BCC information at the end of Activity Details and format cc and bcc fields
index 138576eb2f9ca9a299e627e84a7c4d5cb62181d7..5ea6a46e9d7d99366a06aec3778eac0d3bf8bd2d 100644 (file)
@@ -661,7 +661,7 @@ class CRM_Member_Form_MembershipRenewal extends CRM_Member_Form {
 
     if (!empty($this->_params['send_receipt'])) {
 
-      $receiptFrom = $this->_params['from_email_address'];
+      $receiptFrom = CRM_Utils_Mail::mailboxHeader($this->_params['from_email_address']);
 
       if (!empty($this->_params['payment_instrument_id'])) {
         $paymentInstrument = CRM_Contribute_PseudoConstant::paymentInstrument();
index eebb06319e3fbf32ccc3833b35d281f1b48a6b95..f3c018988014a3430dd4ebd2825e48243df25784 100644 (file)
@@ -577,4 +577,25 @@ class CRM_Utils_Mail {
     return $formattedEmail;
   }
 
+  /**
+   * When passed a value, returns the value if it's non-numeric.
+   * If it's numeric, look up the display name and email of the corresponding
+   * contact ID in RFC822 format.
+   *
+   * @param string $header
+   * @return string
+   *   The RFC822-formatted email header (display name + address)
+   */
+  public static function mailboxHeader($header) {
+    if (is_numeric($header)) {
+      $result = civicrm_api3('Email', 'get', [
+        'id' => $header,
+        'return' => ['contact_id.display_name', 'email'],
+        'sequential' => 1,
+      ])['values'][0];
+      $header = '"' . $result['contact_id.display_name'] . '" <' . $result['email'] . '>';
+    }
+    return $header;
+  }
+
 }