diff --git a/contactcats.php b/contactcats.php index 18ad3a2..980c01a 100644 --- a/contactcats.php +++ b/contactcats.php @@ -55,3 +55,18 @@ function contactcats_civicrm_navigationMenu(&$menu) { ]); _contactcats_civix_navigationMenu($menu); } + +/** + * Implements hook_civicrm_merge() + * + * @link https://docs.civicrm.org/dev/en/latest/hooks/hook_civicrm_merge/ + */ +function contactcats_civicrm_merge($type, &$data, $mainId = NULL, $otherId = NULL, $tables = NULL) { + if ($type === 'sqls' && $otherId) { + // delete the 'other' contact's category; we cannot have two per contacts. + \Civi\Api4\ContactCategory::delete(FALSE) + ->addWhere('id', '=', $otherId) + ->execute(); + Civi::log()->debug("ContactCategory: deleted category for $otherId before merge into $mainId"); + } +}