From 655f9ce10e603fc5f137929a227bb80afa8abde5 Mon Sep 17 00:00:00 2001 From: Andrew Engelbrecht Date: Mon, 18 Sep 2017 18:19:40 -0400 Subject: [PATCH] Allow admin to change the names of filtered groups This feature lets one mimic a custom field by allowing admins to change the text that appears next to each group's check box, via drush. The json format is a bit more nested, but indented json can be used. An exmple is included in CRM/Contact/Form/Edit/TagsAndGroups.php. --- CRM/Contact/Form/Edit/TagsAndGroups.php | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/CRM/Contact/Form/Edit/TagsAndGroups.php b/CRM/Contact/Form/Edit/TagsAndGroups.php index 41c2f19f69..470519a7b4 100644 --- a/CRM/Contact/Form/Edit/TagsAndGroups.php +++ b/CRM/Contact/Form/Edit/TagsAndGroups.php @@ -130,21 +130,27 @@ class CRM_Contact_Form_Edit_TagsAndGroups { case 'CRM_Profile_Form_Edit': $page_id = $form->get('gid'); // gid, not id - $filter = $groups_field_filters['profile'][strval($page_id)]; + $filter_config = $groups_field_filters['profile'][strval($page_id)]; break; case 'CRM_Contribute_Form_Contribution_Main': case 'CRM_Contribute_Form_Contribution_Confirm': case 'CRM_Contribute_Form_Contribution_ThankYou': $page_id = $form->get('id'); // id, not gid - $filter = $groups_field_filters['contribution'][strval($page_id)]; + $filter_config = $groups_field_filters['contribution'][strval($page_id)]; break; case 'CRM_Event_Form_Registration_Register': $page_id = $form->get('id'); // id, not gid - $filter = $groups_field_filters['event'][strval($page_id)]; + $filter_config = $groups_field_filters['event'][strval($page_id)]; break; } + + if (isset($filter_config)) { + + $filter_ids = $filter_config['groups']; + $filter_titles = $filter_config['titles']; + } // sudoman hack continues further below $attributes['skiplabel'] = TRUE; @@ -155,10 +161,10 @@ class CRM_Contact_Form_Edit_TagsAndGroups { // sudoman hack continues // filter groups if a filter is set - if (isset($filter) and !in_array($id, $filter)) { + if (isset($filter_ids) and !in_array($id, $filter_ids)) { continue; } - // sudoman hack continues with calls to CRM_Contact_Form_Edit_TagsAndGroups::reInsertFilteredGroupMemberships + // sudoman hack continues further below // make sure that this group has public visibility if ($visibility && @@ -173,6 +179,8 @@ class CRM_Contact_Form_Edit_TagsAndGroups { else { $tagGroup[$fName][$id]['description'] = $group['description']; $elements[] = &$form->addElement('advcheckbox', $id, NULL, $group['text'], $attributes); + + // sudoman hack continues with calls to CRM_Contact_Form_Edit_TagsAndGroups::reInsertFilteredGroupMemberships } } @@ -302,7 +310,7 @@ class CRM_Contact_Form_Edit_TagsAndGroups { $contactID, $ignorePermission, $params) { $groups_field_filters = json_decode(variable_get('groups_field_filters', NULL), $assoc = TRUE); - $filter = $groups_field_filters[$page_type][strval($page_id)]; + $filter_ids = $groups_field_filters[$page_type][strval($page_id)]['groups']; if ($contactID !== NULL) { @@ -313,7 +321,7 @@ class CRM_Contact_Form_Edit_TagsAndGroups { foreach ($contactGroupList as $value) { $groupId = $value['group_id']; - if (!empty($filter) && !in_array($groupId, $filter)) { + if (!empty($filter_ids) && !in_array($groupId, $filter_ids)) { $params['group'][strval($groupId)] = 1; } -- 2.25.1