DedupeRules - Translate contact type labels, respect enabled contact types
authorColeman Watts <coleman@civicrm.org>
Wed, 5 Jan 2022 16:47:21 +0000 (11:47 -0500)
committerColeman Watts <coleman@civicrm.org>
Wed, 5 Jan 2022 16:47:21 +0000 (11:47 -0500)
CRM/Contact/Page/DedupeRules.php
templates/CRM/Contact/Page/DedupeRules.tpl

index 8d52be5d259502918f61f5edbbe8e9ba327e91de..84461909a3c25bcd82b6b1159140a52a16bf54de 100644 (file)
@@ -113,13 +113,16 @@ class CRM_Contact_Page_DedupeRules extends CRM_Core_Page_Basic {
    * Browse all rule groups.
    */
   public function browse() {
-    // get all rule groups
-    $ruleGroups = [];
+    $contactTypes = array_column(CRM_Contact_BAO_ContactType::basicTypeInfo(), 'label', 'name');
+    $dedupeRuleTypes = CRM_Core_SelectValues::getDedupeRuleTypes();
+    $ruleGroups = array_fill_keys(array_keys($contactTypes), []);
+
+    // Get rule groups for enabled contact types
     $dao = new CRM_Dedupe_DAO_DedupeRuleGroup();
-    $dao->orderBy('contact_type ASC, used ASC, title ASC');
+    $dao->orderBy('used ASC, title ASC');
+    $dao->whereAdd('contact_type IN ("' . implode('","', array_keys($contactTypes)) . '")');
     $dao->find();
 
-    $dedupeRuleTypes = CRM_Core_SelectValues::getDedupeRuleTypes();
     while ($dao->fetch()) {
       $ruleGroups[$dao->contact_type][$dao->id] = [];
       CRM_Core_DAO::storeValues($dao, $ruleGroups[$dao->contact_type][$dao->id]);
@@ -127,10 +130,6 @@ class CRM_Contact_Page_DedupeRules extends CRM_Core_Page_Basic {
       // form all action links
       $action = array_sum(array_keys($this->links()));
       $links = self::links();
-      /* if ($dao->is_default) {
-      unset($links[CRM_Core_Action::MAP]);
-      unset($links[CRM_Core_Action::DELETE]);
-      }*/
 
       if ($dao->is_reserved) {
         unset($links[CRM_Core_Action::DELETE]);
@@ -150,6 +149,7 @@ class CRM_Contact_Page_DedupeRules extends CRM_Core_Page_Basic {
       $ruleGroups[$dao->contact_type][$dao->id]['used_display'] = $dedupeRuleTypes[$ruleGroups[$dao->contact_type][$dao->id]['used']];
     }
     $this->assign('brows', $ruleGroups);
+    $this->assign('contactTypes', $contactTypes);
   }
 
   /**
index db817af12649b39702ffa6fe10e832d92ce5db21..60c8cc87a44c3207614a633c68965216ffcd026f 100644 (file)
     {if $brows}
     {include file="CRM/common/jsortable.tpl"}
     {foreach from=$brows key=contactType item=rows}
-      <div id="browseValues_{$contactType}">
+      <div id="browseValues_{$contactType}" class="crm-clearfix">
         <div>
         {strip}
           <table id="options_{$contactType}" class="display mergecontact">
             <thead>
             <tr>
-              <th>{ts 1=$contactType}%1 Rules{/ts}</th>
+              <th>{ts 1=$contactTypes.$contactType}%1 Rules{/ts}</th>
               <th>{ts}Usage{/ts}</th>
               <th></th>
             </tr>
@@ -45,7 +45,7 @@
         {/strip}
        </div>
        <div style="float:right">
-            {crmButton q="action=add&contact_type=$contactType&reset=1" icon="plus-circle"}{ts 1=$contactType}Add Rule for %1s{/ts}{/crmButton}
+            {crmButton q="action=add&contact_type=$contactType&reset=1" icon="plus-circle"}{ts 1=$contactTypes.$contactType}Add %1 Rule{/ts}{/crmButton}
         </div>
       </div>
     {/foreach}