Merge pull request #23454 from colemanw/searchKitGrandTotals
[civicrm-core.git] / CRM / Dedupe / Finder.php
index 52f6dc4a8172457ede58793f3f10417f4b935882..e4ee36ff30f6552ba18e7ecbd490b2ba008022ff 100644 (file)
@@ -39,7 +39,7 @@ class CRM_Dedupe_Finder {
    * @throws \CRM_Core_Exception
    */
   public static function dupes($rgid, $cids = [], $checkPermissions = TRUE) {
-    $rgBao = new CRM_Dedupe_BAO_RuleGroup();
+    $rgBao = new CRM_Dedupe_BAO_DedupeRuleGroup();
     $rgBao->id = $rgid;
     $rgBao->contactIds = $cids;
     if (!$rgBao->find(TRUE)) {
@@ -47,13 +47,12 @@ class CRM_Dedupe_Finder {
     }
 
     $rgBao->fillTable();
-    $dao = new CRM_Core_DAO();
-    $dao->query($rgBao->thresholdQuery($checkPermissions));
+    $dao = CRM_Core_DAO::executeQuery($rgBao->thresholdQuery($checkPermissions));
     $dupes = [];
     while ($dao->fetch()) {
       $dupes[] = [$dao->id1, $dao->id2, $dao->weight];
     }
-    $dao->query($rgBao->tableDropQuery());
+    CRM_Core_DAO::executeQuery(($rgBao->tableDropQuery()));
 
     return $dupes;
   }
@@ -100,7 +99,7 @@ class CRM_Dedupe_Finder {
 
     $foundByID = FALSE;
     if ($ruleGroupID) {
-      $rgBao = new CRM_Dedupe_BAO_RuleGroup();
+      $rgBao = new CRM_Dedupe_BAO_DedupeRuleGroup();
       $rgBao->id = $ruleGroupID;
       $rgBao->contact_type = $ctype;
       if ($rgBao->find(TRUE)) {
@@ -109,7 +108,7 @@ class CRM_Dedupe_Finder {
     }
 
     if (!$foundByID) {
-      $rgBao = new CRM_Dedupe_BAO_RuleGroup();
+      $rgBao = new CRM_Dedupe_BAO_DedupeRuleGroup();
       $rgBao->contact_type = $ctype;
       $rgBao->used = $used;
       if (!$rgBao->find(TRUE)) {
@@ -221,7 +220,11 @@ class CRM_Dedupe_Finder {
     }
 
     // handle custom data
-    $tree = CRM_Core_BAO_CustomGroup::getTree($ctype, NULL, NULL, -1);
+
+    $subTypes = $fields['contact_sub_type'] ?? [];
+    // Only return custom for subType + unrestricted or return all custom
+    // fields.
+    $tree = CRM_Core_BAO_CustomGroup::getTree($ctype, NULL, NULL, -1, $subTypes, NULL, TRUE, NULL, TRUE);
     CRM_Core_BAO_CustomGroup::postProcess($tree, $fields, TRUE);
     foreach ($tree as $key => $cg) {
       if (!is_int($key)) {
@@ -259,7 +262,7 @@ class CRM_Dedupe_Finder {
     }
 
     $params = [];
-    $supportedFields = CRM_Dedupe_BAO_RuleGroup::supportedFields($ctype);
+    $supportedFields = CRM_Dedupe_BAO_DedupeRuleGroup::supportedFields($ctype);
     if (is_array($supportedFields)) {
       foreach ($supportedFields as $table => $fields) {
         if ($table === 'civicrm_address') {