[Ref] extract function to getEmailDefaults
authorEileen McNaughton <emcnaughton@wikimedia.org>
Sun, 8 Aug 2021 23:43:04 +0000 (11:43 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Tue, 10 Aug 2021 01:27:31 +0000 (13:27 +1200)
Part of terminally deprecating the EmailCommon class

CRM/Contact/Form/Task/EmailCommon.php
CRM/Contact/Form/Task/EmailTrait.php
CRM/Core/BAO/Email.php

index 8244a9440b1b22bac7591b1cc8e43bc055a3001b..07b0e8247de2d3cb1b469073eb255298a9f80f7d 100644 (file)
@@ -28,7 +28,7 @@ class CRM_Contact_Form_Task_EmailCommon {
    * @param CRM_Core_Form $form
    * @param bool $bounce determine if we want to throw a status bounce.
    *
-   * @throws \CiviCRM_API3_Exception
+   * @throws \API_Exception
    */
   public static function preProcessFromAddress(&$form, $bounce = TRUE) {
     $form->_emails = [];
@@ -49,20 +49,13 @@ class CRM_Contact_Form_Task_EmailCommon {
     $form->_emails = $fromEmailValues;
     $defaults = [];
     $form->_fromEmails = $fromEmailValues;
+    if (is_numeric(key($form->_fromEmails))) {
+      $emailID = (int) key($form->_fromEmails);
+      $defaults = CRM_Core_BAO_Email::getEmailSignatureDefaults($emailID);
+    }
     if (!Civi::settings()->get('allow_mail_from_logged_in_contact')) {
       $defaults['from_email_address'] = current(CRM_Core_BAO_Domain::getNameAndEmail(FALSE, TRUE));
     }
-    if (is_numeric(key($form->_fromEmails))) {
-      // Add signature
-      $defaultEmail = civicrm_api3('email', 'getsingle', ['id' => key($form->_fromEmails)]);
-      $defaults = [];
-      if (!empty($defaultEmail['signature_html'])) {
-        $defaults['html_message'] = '<br/><br/>--' . $defaultEmail['signature_html'];
-      }
-      if (!empty($defaultEmail['signature_text'])) {
-        $defaults['text_message'] = "\n\n--\n" . $defaultEmail['signature_text'];
-      }
-    }
     $form->setDefaults($defaults);
   }
 
index 31ec4f80315c3631239ef494b4a54c3a061881cb..d87cea587ceaab3ed2ae62ae5d35dd794ac46499 100644 (file)
@@ -118,10 +118,11 @@ trait CRM_Contact_Form_Task_EmailTrait {
    * Call trait preProcess function.
    *
    * This function exists as a transitional arrangement so classes overriding
-   * preProcess can still call it. Ideally it will be melded into preProcess later.
+   * preProcess can still call it. Ideally it will be melded into preProcess
+   * later.
    *
-   * @throws \CiviCRM_API3_Exception
    * @throws \CRM_Core_Exception
+   * @throws \API_Exception
    */
   protected function traitPreProcess() {
     CRM_Contact_Form_Task_EmailCommon::preProcessFromAddress($this);
index 1e947294a574da55bb1c5ccde522d23e6bdfb643..5341997ecb8d50fe7d37d80e30090029e0540adc 100644 (file)
@@ -15,6 +15,8 @@
  * @copyright CiviCRM LLC https://civicrm.org/licensing
  */
 
+use Civi\Api4\Email;
+
 /**
  * This class contains functions for email handling.
  */
@@ -383,4 +385,25 @@ AND    reset_date IS NULL
     }
   }
 
+  /**
+   * Get default text for a message with the signature from the email sender populated.
+   *
+   * @param int $emailID
+   *
+   * @return array
+   *
+   * @throws \API_Exception
+   * @throws \Civi\API\Exception\UnauthorizedException
+   */
+  public static function getEmailSignatureDefaults(int $emailID): array {
+    // Add signature
+    $defaultEmail = Email::get(FALSE)
+      ->addSelect('signature_html', 'signature_text')
+      ->addWhere('id', '=', $emailID)->execute()->first();
+    return [
+      'html_message' => empty($defaultEmail['signature_html']) ? '' : '<br/><br/>--' . $defaultEmail['signature_html'],
+      'text_message' => empty($defaultEmail['signature_text']) ? '' : "\n\n--\n" . $defaultEmail['signature_text'],
+    ];
+  }
+
 }