From 4cb27797ea99ca5e8b6318d3a45f56048d0d7bdf Mon Sep 17 00:00:00 2001
From: Coleman Watts
Date: Fri, 11 Sep 2020 13:58:43 -0400
Subject: [PATCH] Update links to APIv4 smart groups to point to the new search
ext
---
CRM/Contact/BAO/SavedSearch.php | 33 +++++++++++++++++--
CRM/Contact/Form/Search.php | 5 ++-
CRM/Group/Form/Edit.php | 9 +----
templates/CRM/Contact/Form/Search/Basic.hlp | 13 --------
templates/CRM/Contact/Form/Search/Intro.tpl | 11 +------
.../CRM/Contact/Form/Search/ResultTasks.tpl | 2 +-
templates/CRM/Group/Form/Edit.tpl | 11 ++-----
7 files changed, 38 insertions(+), 46 deletions(-)
diff --git a/CRM/Contact/BAO/SavedSearch.php b/CRM/Contact/BAO/SavedSearch.php
index c5cd15e6e4..d2ed700e7d 100644
--- a/CRM/Contact/BAO/SavedSearch.php
+++ b/CRM/Contact/BAO/SavedSearch.php
@@ -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]);
+ }
+
}
diff --git a/CRM/Contact/Form/Search.php b/CRM/Contact/Form/Search.php
index af5e9f8213..d41d16bb6c 100644
--- a/CRM/Contact/Form/Search.php
+++ b/CRM/Contact/Form/Search.php
@@ -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'
diff --git a/CRM/Group/Form/Edit.php b/CRM/Group/Form/Edit.php
index e384dc36cc..2fb7d2199d 100644
--- a/CRM/Group/Form/Edit.php
+++ b/CRM/Group/Form/Edit.php
@@ -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');
diff --git a/templates/CRM/Contact/Form/Search/Basic.hlp b/templates/CRM/Contact/Form/Search/Basic.hlp
index 4fceec8fc9..5d84d1f7f7 100644
--- a/templates/CRM/Contact/Form/Search/Basic.hlp
+++ b/templates/CRM/Contact/Form/Search/Basic.hlp
@@ -26,19 +26,6 @@
{ts}Use the 'Group Status...' checkboxes to view contacts with 'Pending' status and/or contacts who have been 'Removed' from this group.{/ts}
- {if $params.permissionedForGroup}
- {capture assign=addMembersURL}{crmURL q="context=amtg&amtgID=`$params.group_id`&reset=1"}{/capture}
- {ts 1=$addMembersURL 2=$params.group_title}Click Add Contacts to %2 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 Edit Smart Group Search Criteria... to change the search query used for this 'smart' group.{/ts}
- {/if}
-
- {/if}
{/htxt}
{htxt id="id-amtg-criteria-title"}
diff --git a/templates/CRM/Contact/Form/Search/Intro.tpl b/templates/CRM/Contact/Form/Search/Intro.tpl
index adc70018d0..8cbfb012cf 100644
--- a/templates/CRM/Contact/Form/Search/Intro.tpl
+++ b/templates/CRM/Contact/Form/Search/Intro.tpl
@@ -11,20 +11,11 @@
{* 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)}
{help id="id-edit-smartGroup"}
- {/if}
{/if}
{if $permissionedForGroup}
diff --git a/templates/CRM/Contact/Form/Search/ResultTasks.tpl b/templates/CRM/Contact/Form/Search/ResultTasks.tpl
index 1e3e0df3cc..28ca892fa1 100644
--- a/templates/CRM/Contact/Form/Search/ResultTasks.tpl
+++ b/templates/CRM/Contact/Form/Search/ResultTasks.tpl
@@ -23,7 +23,7 @@
{ts}Search Builder{/ts}
{/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}
diff --git a/templates/CRM/Group/Form/Edit.tpl b/templates/CRM/Group/Form/Edit.tpl
index 42b82ac93e..fb46c69e9b 100644
--- a/templates/CRM/Group/Form/Edit.tpl
+++ b/templates/CRM/Group/Form/Edit.tpl
@@ -83,16 +83,9 @@
{if $action neq 1}
{ts}Contacts in this Group{/ts}
- {if $group.saved_search_id}
+ {if $editSmartGroupURL}
- {if $group.mapping_id}
-
- {elseif $group.search_custom_id}
-
- {else}
-
- {/if}
-
+
{/if}
{/if}
--
2.25.1