Skip to content

Commit

Permalink
Revert "revert PR 13958"
Browse files Browse the repository at this point in the history
This reverts commit ba2ad46.
  • Loading branch information
monishdeb committed Jul 27, 2020
1 parent 0ea6dee commit 78d0090
Show file tree
Hide file tree
Showing 9 changed files with 36 additions and 27 deletions.
2 changes: 1 addition & 1 deletion CRM/Contact/BAO/Contact.php
Original file line number Diff line number Diff line change
Expand Up @@ -304,7 +304,7 @@ public static function &create(&$params, $fixAddress = TRUE, $invokeHooks = TRUE
}
}

if (array_key_exists('group', $params)) {
if (!empty($params['group'])) {
$contactIds = [$params['contact_id']];
foreach ($params['group'] as $groupId => $flag) {
if ($flag == 1) {
Expand Down
11 changes: 6 additions & 5 deletions CRM/Contact/BAO/Group.php
Original file line number Diff line number Diff line change
Expand Up @@ -1055,7 +1055,7 @@ public static function getGroupsHierarchy(
$groups = [];
$args = [1 => [$groupIdString, 'String']];
$query = "
SELECT id, title, description, visibility, parents
SELECT id, title, description, visibility, parents, saved_search_id
FROM civicrm_group
WHERE id IN $groupIdString
";
Expand All @@ -1081,15 +1081,15 @@ public static function getGroupsHierarchy(
$parent = self::filterActiveGroups($parentArray);
$tree[$parent][] = [
'id' => $dao->id,
'title' => $dao->title,
'title' => empty($dao->saved_search_id) ? $dao->title : '* ' . $dao->title,
'visibility' => $dao->visibility,
'description' => $dao->description,
];
}
else {
$roots[] = [
'id' => $dao->id,
'title' => $dao->title,
'title' => empty($dao->saved_search_id) ? $dao->title : '* ' . $dao->title,
'visibility' => $dao->visibility,
'description' => $dao->description,
];
Expand Down Expand Up @@ -1123,8 +1123,9 @@ private static function buildGroupHierarchy(&$hierarchy, $group, $tree, $titleOn
$hierarchy[$group['id']] = $spaces . $group['title'];
}
else {
$hierarchy[$group['id']] = [
'title' => $spaces . $group['title'],
$hierarchy[] = [
'id' => $group['id'],
'text' => $spaces . $group['title'],
'description' => $group['description'],
'visibility' => $group['visibility'],
];
Expand Down
6 changes: 4 additions & 2 deletions CRM/Contact/Form/Contact.php
Original file line number Diff line number Diff line change
Expand Up @@ -870,8 +870,10 @@ public function postProcess() {
}

$group = $params['group'] ?? NULL;
if (!empty($group) && is_array($group)) {
unset($params['group']);
$params['group'] = ($params['group'] == '') ? [] : $params['group'];
if (!empty($group)) {
$group = is_array($group) ? $group : explode(',', $group);
$params['group'] = [];
foreach ($group as $key => $value) {
$params['group'][$value] = 1;
}
Expand Down
18 changes: 9 additions & 9 deletions CRM/Contact/Form/Edit/TagsAndGroups.php
Original file line number Diff line number Diff line change
Expand Up @@ -102,17 +102,17 @@ public static function buildQuickForm(
}

if ($groupElementType == 'select') {
$groupsOptions[$id] = $group['title'];
$groupsOptions[$id] = $group;
}
else {
$form->_tagGroup[$fName][$id]['description'] = $group['description'];
$elements[] = &$form->addElement('advcheckbox', $id, NULL, $group['title'], $attributes);
$elements[] = &$form->addElement('advcheckbox', $id, NULL, $group['text'], $attributes);
}
}

if ($groupElementType == 'select' && !empty($groupsOptions)) {
$form->add('select', $fName, $groupName, $groupsOptions, FALSE,
['id' => $fName, 'multiple' => 'multiple', 'class' => 'crm-select2 twenty']
$form->add('select2', $fName, $groupName, $groupsOptions, FALSE,
['placeholder' => '- select -', 'multiple' => TRUE, 'class' => 'twenty']
);
$form->assign('groupCount', count($groupsOptions));
}
Expand Down Expand Up @@ -166,11 +166,11 @@ public static function setDefaults($id, &$defaults, $type = self::ALL, $fieldNam

$contactGroup = CRM_Contact_BAO_GroupContact::getContactGroup($id, 'Added', NULL, FALSE, TRUE);
if ($contactGroup) {
foreach ($contactGroup as $group) {
if ($groupElementType == 'select') {
$defaults[$fName][] = $group['group_id'];
}
else {
if ($groupElementType == 'select') {
$defaults[$fName] = implode(',', CRM_Utils_Array::collect('group_id', $contactGroup));
}
else {
foreach ($contactGroup as $group) {
$defaults[$fName . '[' . $group['group_id'] . ']'] = 1;
}
}
Expand Down
2 changes: 1 addition & 1 deletion CRM/Contact/Form/GroupContact.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ public function buildQuickForm() {
if ($onlyPublicGroups && $group['visibility'] == 'User and User Admin Only') {
continue;
}
$allGroups[$id] = $group;
$allGroups[$group['id']] = $group;
}
}
else {
Expand Down
3 changes: 2 additions & 1 deletion CRM/Contact/Form/Search/Basic.php
Original file line number Diff line number Diff line change
Expand Up @@ -49,13 +49,14 @@ public function buildQuickForm() {

// add select for groups
// Get hierarchical listing of groups, respecting ACLs for CRM-16836.
$groupHierarchy = CRM_Contact_BAO_Group::getGroupsHierarchy($this->_group, NULL, '  ', TRUE);
$groupHierarchy = CRM_Contact_BAO_Group::getGroupsHierarchy($this->_group, NULL, '  ');
if (!empty($searchOptions['groups'])) {
$this->addField('group', [
'entity' => 'group_contact',
'label' => ts('in'),
'placeholder' => ts('- any group -'),
'options' => $groupHierarchy,
'type' => 'Select2',
]);
}

Expand Down
2 changes: 1 addition & 1 deletion CRM/Contact/Form/Search/Criteria.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ public static function basic(&$form) {
$groupHierarchy = CRM_Contact_BAO_Group::getGroupsHierarchy($form->_group, NULL, '  ', TRUE);

$form->add('select', 'group', ts('Groups'), $groupHierarchy, FALSE,
['id' => 'group', 'multiple' => 'multiple', 'class' => 'crm-select2']
['id' => 'group', 'multiple' => 'multiple', 'class' => 'crm-select2']
);
$groupOptions = CRM_Core_BAO_OptionValue::getOptionValuesAssocArrayFromName('group_type');
$form->add('select', 'group_type', ts('Group Types'), $groupOptions, FALSE,
Expand Down
13 changes: 9 additions & 4 deletions ang/crmMailing/Recipients.js
Original file line number Diff line number Diff line change
Expand Up @@ -95,11 +95,12 @@
}
var option = convertValueToObj(item.id);
var icon = (option.entity_type === 'civicrm_mailing') ? 'fa-envelope' : 'fa-users';
var smartGroupMarker = item.is_smart ? '* ' : '';
var spanClass = (option.mode == 'exclude') ? 'crmMailing-exclude' : 'crmMailing-include';
if (option.entity_type != 'civicrm_mailing' && isMandatory(option.entity_id)) {
spanClass = 'crmMailing-mandatory';
}
return '<i class="crm-i '+icon+'" aria-hidden="true"></i> <span class="' + spanClass + '">' + item.text + '</span>';
return '<i class="crm-i '+icon+'"></i> <span class="' + spanClass + '">' + smartGroupMarker + item.text + '</span>';
}

function validate() {
Expand Down Expand Up @@ -154,7 +155,7 @@
mids.push(0);
}

CRM.api3('Group', 'getlist', { params: { id: { IN: gids }, options: { limit: 0 } }, extra: ["is_hidden"] } ).then(
CRM.api3('Group', 'getlist', { params: { id: { IN: gids }, options: { limit: 0 } }, extra: ["is_hidden"] }).then(
function(glist) {
CRM.api3('Mailing', 'getlist', { params: { id: { IN: mids }, options: { limit: 0 } } }).then(
function(mlist) {
Expand All @@ -165,6 +166,7 @@

$(glist.values).each(function (idx, group) {
var key = group.id + ' civicrm_group include';

groupNames.push({id: parseInt(group.id), title: group.label, is_hidden: group.extra.is_hidden});
if (values.indexOf(key) >= 0) {
datamap.push({id: key, text: group.label});
Expand Down Expand Up @@ -232,6 +234,9 @@
if('civicrm_mailing' === rcpAjaxState.entity) {
params["api.MailingRecipients.getcount"] = {};
}
else if ('civicrm_group' === rcpAjaxState.entity) {
params.extra = ["saved_search_id"];
}

return params;
},
Expand All @@ -255,8 +260,8 @@
text: obj.label } : '';
}
else {
return { id: obj.id + ' ' + rcpAjaxState.entity + ' ' + rcpAjaxState.type,
text: obj.label };
return { id: obj.id + ' ' + rcpAjaxState.entity + ' ' + rcpAjaxState.type, text: obj.label,
is_smart: (!_.isEmpty(obj.extra.saved_search_id)) };
}
})
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -177,7 +177,7 @@ public function testBrowseDisplaysCorrectListOfAVailableGroups() {
$group_id_field_html = $form['group_id']['html'];
$this->assertContains($publicSmartGroupTitle, $group_id_field_html, "Group '$publicSmartGroupTitle' should be in listed available groups, but is not.");
$this->assertContains($publicStdGroupTitle, $group_id_field_html, "Group '$publicStdGroupTitle' should be in listed available groups, but is not.");
$this->assertNotContains($adminSmartGroupTitle, $group_id_field_html, "Group '$adminSmartGroupTitle' should not be in listed available groups, but is.");
$this->assertNotContains('* ' . $adminSmartGroupTitle, $group_id_field_html, "Group '$adminSmartGroupTitle' should not be in listed available groups, but is.");
$this->assertNotContains($adminStdGroupTitle, $group_id_field_html, "Group '$adminStdGroupTitle' should not be in listed available groups, but is.");

// Add current user to the test groups.
Expand All @@ -199,9 +199,9 @@ public function testBrowseDisplaysCorrectListOfAVailableGroups() {

$form = CRM_Core_Smarty::singleton()->get_template_vars('form');
$group_id_field_html = $form['group_id']['html'];
$this->assertNotContains($publicSmartGroupTitle, $group_id_field_html, "Group '$publicSmartGroupTitle' should not be in listed available groups, but is.");
$this->assertNotContains('* ' . $publicSmartGroupTitle, $group_id_field_html, "Group '$publicSmartGroupTitle' should not be in listed available groups, but is.");
$this->assertNotContains($publicStdGroupTitle, $group_id_field_html, "Group '$publicStdGroupTitle' should not be in listed available groups, but is.");
$this->assertNotContains($adminSmartGroupTitle, $group_id_field_html, "Group '$adminSmartGroupTitle' should not be in listed available groups, but is.");
$this->assertNotContains('* ' . $adminSmartGroupTitle, $group_id_field_html, "Group '$adminSmartGroupTitle' should not be in listed available groups, but is.");
$this->assertNotContains($adminStdGroupTitle, $group_id_field_html, "Group '$adminStdGroupTitle' should not be in listed available groups, but is.");
}

Expand Down

0 comments on commit 78d0090

Please sign in to comment.