Update links to APIv4 smart groups to point to the new search ext
authorColeman Watts <coleman@civicrm.org>
Fri, 11 Sep 2020 17:58:43 +0000 (13:58 -0400)
committerColeman Watts <coleman@civicrm.org>
Mon, 14 Sep 2020 19:08:36 +0000 (15:08 -0400)
CRM/Contact/BAO/SavedSearch.php
CRM/Contact/Form/Search.php
CRM/Group/Form/Edit.php
templates/CRM/Contact/Form/Search/Basic.hlp
templates/CRM/Contact/Form/Search/Intro.tpl
templates/CRM/Contact/Form/Search/ResultTasks.tpl
templates/CRM/Group/Form/Edit.tpl

index c5cd15e6e4df8ad4519324e6bdd94138464caae1..d2ed700e7dcd4b6aaf05b72ac1108469622f17cd 100644 (file)
@@ -54,9 +54,9 @@ class CRM_Contact_BAO_SavedSearch extends CRM_Contact_DAO_SavedSearch {
    * @param array $defaults
    *   (reference ) an assoc array to hold the flattened values.
    *
-   * @return CRM_Contact_BAO_SavedSearch
+   * @return CRM_Contact_DAO_SavedSearch
    */
-  public static function retrieve(&$params, &$defaults) {
+  public static function retrieve($params, &$defaults = []) {
     $savedSearch = new CRM_Contact_DAO_SavedSearch();
     $savedSearch->copyValues($params);
     if ($savedSearch->find(TRUE)) {
@@ -422,4 +422,33 @@ LEFT JOIN civicrm_email ON (contact_a.id = civicrm_email.contact_id AND civicrm_
     }
   }
 
+  /**
+   * Generate a url to the appropriate search form for a given savedSearch
+   *
+   * @param int $id
+   *   Saved search id
+   * @return string
+   */
+  public static function getEditSearchUrl($id) {
+    $savedSearch = self::retrieve(['id' => $id]);
+    // APIv4 search
+    if (!empty($savedSearch->api_entity)) {
+      $groupName = self::getName($id);
+      return CRM_Utils_System::url('civicrm/search', NULL, FALSE, "/load/Group/$groupName");
+    }
+    // Classic search builder
+    if (!empty($savedSearch->mapping_id)) {
+      $path = 'civicrm/contact/search/builder';
+    }
+    // Classic custom search
+    elseif (!empty($savedSearch->search_custom_id)) {
+      $path = 'civicrm/contact/search/custom';
+    }
+    // Classic advanced search
+    else {
+      $path = 'civicrm/contact/search/advanced';
+    }
+    return CRM_Utils_System::url($path, ['reset' => 1, 'ssID' => $id]);
+  }
+
 }
index af5e9f8213108387eaf0a4e58bc3e3ce3e09e2b9..d41d16bb6cd8d47357c7d7fd338dab96058b8b51 100644 (file)
@@ -429,11 +429,10 @@ class CRM_Contact_Form_Search extends CRM_Core_Form_Search {
         $ssID = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_Group', $this->_groupID, 'saved_search_id');
         $this->assign('ssID', $ssID);
 
-        //get the saved search mapping id
+        //get the saved search edit link
         if ($ssID) {
           $this->_ssID = $ssID;
-          $ssMappingId = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_SavedSearch', $ssID, 'mapping_id');
-          $this->assign('ssMappingID', $ssMappingId);
+          $this->assign('editSmartGroupURL', CRM_Contact_BAO_SavedSearch::getEditSearchUrl($ssID));
         }
 
         // Set dynamic page title for 'Show Members of Group'
index e384dc36cc7fe3dd3313e43f3d4e6f426845c5ff..2fb7d2199d88eb6c672f455aa4cb49336b6b946d 100644 (file)
@@ -137,14 +137,7 @@ class CRM_Group_Form_Edit extends CRM_Core_Form {
           'saved_search_id' => $this->_groupValues['saved_search_id'] ?? '',
         );
         if (isset($this->_groupValues['saved_search_id'])) {
-          $groupValues['mapping_id'] = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_SavedSearch',
-            $this->_groupValues['saved_search_id'],
-            'mapping_id'
-          );
-          $groupValues['search_custom_id'] = CRM_Core_DAO::getFieldValue('CRM_Contact_DAO_SavedSearch',
-            $this->_groupValues['saved_search_id'],
-            'search_custom_id'
-          );
+          $this->assign('editSmartGroupURL', CRM_Contact_BAO_SavedSearch::getEditSearchUrl($this->_groupValues['saved_search_id']));
         }
         if (!empty($this->_groupValues['created_id'])) {
           $groupValues['created_by'] = CRM_Core_DAO::getFieldValue("CRM_Contact_DAO_Contact", $this->_groupValues['created_id'], 'sort_name', 'id');
index 4fceec8fc9c933a229a7c49f123a5c89c1fd3c68..5d84d1f7f71721da5d1964c4c514cb622b94116d 100644 (file)
         <li>{ts}Use the 'Group Status...' checkboxes to view contacts with 'Pending' status and/or contacts who have been 'Removed' from this group.{/ts}</li>
       </ul>
     </p>
-    {if $params.permissionedForGroup}
-        {capture assign=addMembersURL}{crmURL q="context=amtg&amtgID=`$params.group_id`&reset=1"}{/capture}
-        <p>{ts 1=$addMembersURL 2=$params.group_title}Click <a href='%1'>Add Contacts to %2</a> if you want to add contacts to this group.{/ts}
-        {if !empty($params.ssID)}
-            {if $params.ssMappingID}
-                {capture assign=editSmartGroupURL}{crmURL p="civicrm/contact/search/builder" q="reset=1&force=1&ssID=`$params.ssID`"}{/capture}
-            {else}
-                {capture assign=editSmartGroupURL}{crmURL p="civicrm/contact/search/advanced" q="reset=1&force=1&ssID=`$params.ssID`"}{/capture}
-            {/if} 
-            {ts 1=$editSmartGroupURL}Click <a href='%1'>Edit Smart Group Search Criteria...</a> to change the search query used for this 'smart' group.{/ts}
-        {/if}
-        </p>
-    {/if}
 {/htxt}
 
 {htxt id="id-amtg-criteria-title"}
index adc70018d03a78153a74ec7d66eb4b4cc943de96..8cbfb012cf7bd1ea50faa94f766c3ab34a3467a2 100644 (file)
 {* smog = 'show members of group'; amtg = 'add members to group' *}
 {if $context EQ 'smog'}
   {* Provide link to modify smart group search criteria if we are viewing a smart group (ssID = saved search ID) *}
-  {if $permissionEditSmartGroup}
-    {if !empty($ssID)}
-      {if $ssMappingID}
-        {capture assign=editSmartGroupURL}{crmURL p="civicrm/contact/search/builder" q="reset=1&ssID=`$ssID`"}{/capture}
-      {elseif $savedSearch.search_custom_id}
-        {capture assign=editSmartGroupURL}{crmURL p="civicrm/contact/search/custom" q="reset=1&ssID=`$ssID`"}{/capture}
-      {else}
-        {capture assign=editSmartGroupURL}{crmURL p="civicrm/contact/search/advanced" q="reset=1&ssID=`$ssID`"}{/capture}
-      {/if}
+  {if $permissionEditSmartGroup && !empty($editSmartGroupURL)}
       <div class="crm-submit-buttons">
         <a href="{$editSmartGroupURL}" class="button no-popup"><span><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts 1=$group.title}Edit Smart Group Search Criteria for %1{/ts}</span></a>
         {help id="id-edit-smartGroup"}
       </div>
-    {/if}
   {/if}
 
   {if $permissionedForGroup}
index 1e3e0df3cca72525ceb79e5b5cadf04d1fe95c93..28ca892fa15ef6e9a53ce428d62e008b9e6e2e14 100644 (file)
@@ -23,7 +23,7 @@
             <a href="{$searchBuilderURL}"><i class="crm-i fa-chevron-right" aria-hidden="true"></i> {ts}Search Builder{/ts}</a><br />
         {/if}
         {if $context eq 'smog'}
-            {help id="id-smog-criteria" group_id=$group.id group_title=$group.title ssID=$ssID ssMappingID=$ssMappingID permissionedForGroup=$permissionedForGroup}
+            {help id="id-smog-criteria" group_title=$group.title}
         {elseif $context eq 'amtg'}
             {help id="id-amtg-criteria" group_title=$group.title}
         {else}
index 42b82ac93e797d17e181af92cd5b82aee271d61f..fb46c69e9bc98c08822158b71047fae71d1a86e8 100644 (file)
   {if $action neq 1}
     <div class="action-link">
       <a {$crmURL}><i class="crm-i fa-users" aria-hidden="true"></i> {ts}Contacts in this Group{/ts}</a>
-      {if $group.saved_search_id}
+      {if $editSmartGroupURL}
         <br />
-        {if $group.mapping_id}
-          <a class="no-popup" href="{crmURL p="civicrm/contact/search/builder" q="reset=1&ssID=`$group.saved_search_id`"}"><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Edit Smart Group Criteria{/ts}</a>
-        {elseif $group.search_custom_id}
-          <a class="no-popup" href="{crmURL p="civicrm/contact/search/custom" q="reset=1&ssID=`$group.saved_search_id`"}"><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Edit Smart Group Criteria{/ts}</a>
-        {else}
-          <a class="no-popup" href="{crmURL p="civicrm/contact/search/advanced" q="reset=1&ssID=`$group.saved_search_id`"}"><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Edit Smart Group Criteria{/ts}</a>
-        {/if}
-
+        <a class="no-popup" href="{$editSmartGroupURL}"><i class="crm-i fa-pencil" aria-hidden="true"></i> {ts}Edit Smart Group Criteria{/ts}</a>
       {/if}
     </div>
   {/if}