dev/core#3463 - CiviMail - prefer frontend_title from group for mailing.group token
authorufundo <ufundo@gmail.com>
Tue, 24 May 2022 19:20:37 +0000 (19:20 +0000)
committerufundo <ufundo@gmail.com>
Wed, 25 May 2022 21:58:07 +0000 (21:58 +0000)
CRM/Mailing/BAO/Mailing.php

index 83ddc6dad59b48c9958eecef7970609df8416c4e..7dde359c360c187ba1391345a3faf134f6dab61a 100644 (file)
@@ -1419,22 +1419,25 @@ ORDER BY   civicrm_email.is_bulkmail DESC
     if (!isset($this->id)) {
       return [];
     }
-    $mg = new CRM_Mailing_DAO_MailingGroup();
-    $mgtable = CRM_Mailing_DAO_MailingGroup::getTableName();
-    $group = CRM_Contact_BAO_Group::getTableName();
 
-    $mg->query("SELECT      $group.title as name FROM $mgtable
-                    INNER JOIN  $group ON $mgtable.entity_id = $group.id
-                    WHERE       $mgtable.mailing_id = {$this->id}
-                        AND     $mgtable.entity_table = '$group'
-                        AND     $mgtable.group_type = 'Include'
-                    ORDER BY    $group.name");
+    $mailingGroups = \Civi\Api4\MailingGroup::get()
+      ->addSelect('group.title', 'group.frontend_title')
+      ->addJoin('Group AS group', 'LEFT', ['entity_id', '=', 'group.id'])
+      ->addWhere('mailing_id', '=', $this->id)
+      ->addWhere('entity_table', '=', 'civicrm_group')
+      ->addWhere('group_type', '=', 'Include')
+      ->execute();
+
+    $groupNames = [];
 
-    $groups = [];
-    while ($mg->fetch()) {
-      $groups[] = $mg->name;
+    foreach ($mailingGroups as $mg) {
+      $name = $mg['group.frontend_title'] ?? $mg['group.title'];
+      if ($name) {
+        $groupNames[] = $name;
+      }
     }
-    return $groups;
+
+    return $groupNames;
   }
 
   /**