* @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)) {
}
}
+ /**
+ * 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]);
+ }
+
}
$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'
'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');
<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"}
{* 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}
<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}
{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}