/** * called when action is browse. * */ public function browse() { $in = CRM_Contact_BAO_GroupContact::getContactGroup($this->_contactId, 'Added'); // keep track of all 'added' contact groups so we can remove them from the smart group // section $staticGroups = array(); if (!empty($in)) { foreach ($in as $group) { $staticGroups[$group['group_id']] = 1; } } $allGroup = CRM_Contact_BAO_GroupContactCache::contactGroup($this->_contactId); $this->assign('groupSmart', NULL); $this->assign('groupParent', NULL); if (!empty($allGroup)) { $smart = $parent = array(); foreach ($allGroup['group'] as $group) { // delete all smart groups which are also in static groups if (isset($staticGroups[$group['id']])) { continue; } if (empty($group['children'])) { $smart[] = $group; } else { $parent[] = $group; } } if (!empty($smart)) { $this->assign_by_ref('groupSmart', $smart); } if (!empty($parent)) { $this->assign_by_ref('groupParent', $parent); } } }