Ensure getDuplicateContacts always returns an array
authorEileen McNaughton <emcnaughton@wikimedia.org>
Fri, 7 Jan 2022 00:08:26 +0000 (13:08 +1300)
committerEileen McNaughton <emcnaughton@wikimedia.org>
Fri, 7 Jan 2022 00:08:26 +0000 (13:08 +1300)
Calling code already handles an empty array as that is what it would receive - unless the hook set it to NULL

CRM/Contact/BAO/Contact.php

index 916a21f7c892055a33b4b2dc61ca212cd074e9a6..9cbbb6567ba0725bbef0bf87e214c8971a718324 100644 (file)
@@ -3572,8 +3572,9 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id )
    *   The context if relevant, eg. ['event_id' => X]
    *
    * @return array
+   * @throws \CRM_Core_Exception
    */
-  public static function getDuplicateContacts($input, $contactType, $rule = 'Unsupervised', $excludedContactIDs = [], $checkPermissions = TRUE, $ruleGroupID = NULL, $contextParams = []) {
+  public static function getDuplicateContacts(array $input, string $contactType, string $rule = 'Unsupervised', $excludedContactIDs = [], $checkPermissions = TRUE, $ruleGroupID = NULL, $contextParams = []): array {
     $dedupeParams = CRM_Dedupe_Finder::formatParams($input, $contactType);
     $dedupeParams['check_permission'] = $checkPermissions;
     $dedupeParams['contact_type'] = $contactType;
@@ -3586,7 +3587,7 @@ LEFT JOIN civicrm_address ON ( civicrm_address.contact_id = civicrm_contact.id )
     if (!$dedupeResults['handled']) {
       $dedupeResults['ids'] = CRM_Dedupe_Finder::dupesByParams($dedupeParams, $contactType, $rule, $excludedContactIDs, $ruleGroupID);
     }
-    return $dedupeResults['ids'];
+    return $dedupeResults['ids'] ?? [];
   }
 
   /**