dev/core#2817 Remove last core calls to
authorEileen McNaughton <emcnaughton@wikimedia.org>
Sun, 12 Sep 2021 23:38:57 +0000 (11:38 +1200)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Sun, 12 Sep 2021 23:38:57 +0000 (11:38 +1200)
CRM/Activity/BAO/Activity.php
CRM/Utils/Token.php
tests/phpunit/CRM/Activity/BAO/ActivityTest.php
tests/phpunit/CRM/Contact/Form/Task/EmailCommonTest.php

index 4c25df0bedeaf1cd5cfef0278cc8862e048c3359..6215dbcc2a95631fee700eb93d08057d667f2887 100644 (file)
@@ -1131,18 +1131,13 @@ class CRM_Activity_BAO_Activity extends CRM_Activity_DAO_Activity {
       $tokenText = in_array($values['preferred_mail_format'], ['Both', 'Text'], TRUE) ? $text : '';
       $tokenHtml = in_array($values['preferred_mail_format'], ['Both', 'HTML'], TRUE) ? $html : '';
 
-      if ($caseId) {
-        $tokenSubject = CRM_Utils_Token::replaceCaseTokens($caseId, $tokenSubject, $subjectToken, $escapeSmarty);
-        $tokenText = CRM_Utils_Token::replaceCaseTokens($caseId, $tokenText, $messageToken, $escapeSmarty);
-        $tokenHtml = CRM_Utils_Token::replaceCaseTokens($caseId, $tokenHtml, $messageToken, $escapeSmarty);
-      }
-
       $renderedTemplate = CRM_Core_BAO_MessageTemplate::renderTemplate([
         'messageTemplate' => [
           'msg_text' => $tokenText,
           'msg_html' => $tokenHtml,
           'msg_subject' => $tokenSubject,
         ],
+        'tokenContext' => $caseId ? ['caseId' => $caseId] : [],
         'contactId' => $contactId,
         'disableSmarty' => !CRM_Utils_Constant::value('CIVICRM_MAIL_SMARTY'),
         'tplParams' => ['contact' => $values],
index 46990bed095f7fdeb8f1c2517d915b13e05d22ff..05fffe01fefb0f8f0fb4f63338434af02f0f0141 100644 (file)
@@ -1586,6 +1586,8 @@ class CRM_Utils_Token {
   }
 
   /**
+   * @deprecated
+   *
    * @param int $caseId
    * @param string $str
    * @param array $knownTokens
index a7c9750100420a01a5eb65f944687f167dc000cb..f615e8d892edacffb0ee1c3fb58c8035a7155f85 100644 (file)
@@ -1223,7 +1223,7 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase {
    * @throws \CiviCRM_API3_Exception
    */
   public function testSendEmailBasic(): void {
-    $contactId = $this->individualCreate();
+    $contactId = $this->getContactID();
 
     // create a logged in USER since the code references it for sendEmail user.
     $loggedInUser = $this->createLoggedInUser();
@@ -1255,8 +1255,8 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase {
     ];
 
     $subject = __FUNCTION__ . ' subject';
-    $html = __FUNCTION__ . ' html {contact.display_name}';
-    $text = __FUNCTION__ . ' text {contact.display_name}';
+    $html = __FUNCTION__ . ' html {contact.display_name} {case.case_type_id:label}';
+    $text = __FUNCTION__ . ' text {contact.display_name} {case.case_type_id:label}';
     $userID = $loggedInUser;
 
     $mut = new CiviMailUtils($this, TRUE);
@@ -1271,24 +1271,66 @@ class CRM_Activity_BAO_ActivityTest extends CiviUnitTestCase {
       NULL,
       NULL,
       NULL,
-      [$contactId]
+      [$contactId],
+      NULL,
+      NULL,
+      NULL,
+      $this->getCaseID()
     );
 
     $activity = $this->callAPISuccessGetSingle('Activity', ['id' => $activity_ids[0], 'return' => ['details', 'subject']]);
     $details = '-ALTERNATIVE ITEM 0-
-' . __FUNCTION__ . ' html ' . $contact['display_name'] . '
+' . __FUNCTION__ . ' html ' . $contact['display_name'] . ' Housing Support
 -ALTERNATIVE ITEM 1-
-' . __FUNCTION__ . ' text ' . $contact['display_name'] . '
+' . __FUNCTION__ . ' text ' . $contact['display_name'] . ' Housing Support
 -ALTERNATIVE END-
 ';
-    $this->assertEquals($details, $activity['details'], 'Activity details does not match.');
-    $this->assertEquals($subject, $activity['subject'], 'Activity subject does not match.');
+    $this->assertEquals($details, $activity['details'], 'Activity details do not match.');
+    $this->assertEquals($subject, $activity['subject'], 'Activity subject do not match.');
     $mut->checkMailLog([
-      'Mr. Anthony Anderson',
+      'Mr. Anthony Anderson II Housing Support',
     ]);
     $mut->stop();
   }
 
+  /**
+   * Get case ID.
+   *
+   * @return int
+   */
+  protected function getCaseID(): int {
+    if (!isset($this->ids['Case'][0])) {
+      CRM_Core_BAO_ConfigSetting::enableComponent('CiviCase');
+      $this->ids['Case'][0] = $this->callAPISuccess('Case', 'create', [
+        'case_type_id' => 'housing_support',
+        'activity_subject' => 'Case Subject',
+        'client_id' => $this->getContactID(),
+        'status_id' => 1,
+        'subject' => 'Case Subject',
+        'start_date' => '2021-07-23 15:39:20',
+        // Note end_date is inconsistent with status Ongoing but for the
+        // purposes of testing tokens is ok. Creating it with status Resolved
+        // then ignores our known fixed end date.
+        'end_date' => '2021-07-26 18:07:20',
+        'medium_id' => 2,
+        'details' => 'case details',
+        'activity_details' => 'blah blah',
+        'sequential' => 1,
+      ])['id'];
+    }
+    return $this->ids['Case'][0];
+  }
+
+  /**
+   * @return int
+   */
+  protected function getContactID(): int {
+    if (!isset($this->ids['Contact'][0])) {
+      $this->ids['Contact'][0] = $this->individualCreate();
+    }
+    return $this->ids['Contact'][0];
+  }
+
   /**
    * This is different from SentEmailBasic to try to help prevent code that
    * assumes an email always has tokens in it.
index a6bd772ab4222e704239c7be59512620d65598dd..589bcdf2e7e3d94e7616f5523c885af45796df50 100644 (file)
@@ -67,7 +67,7 @@ class CRM_Contact_Form_Task_EmailCommonTest extends CiviUnitTestCase {
    * @throws \CiviCRM_API3_Exception
    * @throws \Civi\API\Exception\UnauthorizedException
    */
-  public function testPostProcessWithSignature() {
+  public function testPostProcessWithSignature(): void {
     $mut = new CiviMailUtils($this, TRUE);
     $bcc1 = $this->individualCreate(['email' => 'bcc1@example.com']);
     $bcc2 = $this->individualCreate(['email' => 'bcc2@example.com']);