From a6ac412b264eee962786e0fcc658a78584e98a44 Mon Sep 17 00:00:00 2001 From: larssandergreen Date: Wed, 5 Oct 2022 22:03:23 -0600 Subject: [PATCH] Force smart group refresh on mailing schedule --- CRM/Mailing/BAO/Mailing.php | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/CRM/Mailing/BAO/Mailing.php b/CRM/Mailing/BAO/Mailing.php index 3d064f7e46..b2efb11dae 100644 --- a/CRM/Mailing/BAO/Mailing.php +++ b/CRM/Mailing/BAO/Mailing.php @@ -459,6 +459,25 @@ class CRM_Mailing_BAO_Mailing extends CRM_Mailing_DAO_Mailing { // Create parent job if not yet created. // Condition on the existence of a scheduled date. if (!empty($params['scheduled_date']) && $params['scheduled_date'] != 'null' && empty($params['_skip_evil_bao_auto_schedule_'])) { + + if (!isset($params['is_completed']) || $params['is_completed'] !== 1) { + $mailingGroups = \Civi\Api4\MailingGroup::get() + ->addSelect('group.id') + ->addJoin('Group AS group', 'LEFT', ['entity_id', '=', 'group.id']) + ->addWhere('mailing_id', '=', $mailing->id) + ->addWhere('entity_table', '=', 'civicrm_group') + ->addWhere('group_type', 'IN', ['Include', 'Exclude']) + ->addClause('OR', ['group.saved_search_id', 'IS NOT NULL'], ['group.children', 'IS NOT NULL']) + ->execute(); + foreach ($mailingGroups as $mailingGroup) { + CRM_Contact_BAO_GroupContactCache::invalidateGroupContactCache($mailingGroup['group.id']); + $group = new CRM_Contact_DAO_Group(); + $group->find(TRUE); + $group->id = $mailingGroup['group.id']; + CRM_Contact_BAO_GroupContactCache::load($group); + } + } + $job = new CRM_Mailing_BAO_MailingJob(); $job->mailing_id = $mailing->id; // If we are creating a new Completed mailing (e.g. import from another system) set the job to completed. -- 2.25.1